Sql server 如何针对localdb对使用SQLServer企业特性的SSDT项目进行单元测试?

Sql server 如何针对localdb对使用SQLServer企业特性的SSDT项目进行单元测试?,sql-server,sql-server-data-tools,localdb,Sql Server,Sql Server Data Tools,Localdb,我在VS中设置了一个SSDT项目,该项目使用SQL Server企业版功能,例如数据压缩 在部署到CI数据库之前,我希望能够将此项目部署到localdb,能够在本地对数据库运行单元测试。但是,localdb是SQL Server Express Edition的一个实例,它不支持数据压缩 尝试部署时出现的错误是: SQL72014.Net SqlClient数据提供程序:无法为启用压缩 对象“FooTable”。只有SQL Server企业版支持 压缩 潜在的解决方案1:将所有数据压缩SQL转换

我在VS中设置了一个SSDT项目,该项目使用SQL Server企业版功能,例如数据压缩

在部署到CI数据库之前,我希望能够将此项目部署到localdb,能够在本地对数据库运行单元测试。但是,localdb是SQL Server Express Edition的一个实例,它不支持数据压缩

尝试部署时出现的错误是:

SQL72014.Net SqlClient数据提供程序:无法为启用压缩 对象“FooTable”。只有SQL Server企业版支持 压缩

潜在的解决方案1:将所有数据压缩SQL转换为部署后脚本,部署到localdb时不会运行该脚本。这并不理想,因为该选项将隐藏在源代码管理中,并且不会显示在模式比较等中

潜在的解决方案2:将问题SQL替换为SQLCMD变量,例如$WithPageCompression,该变量在部署到localdb时具有空值,在部署到实际数据库时具有DATA_COMPRESSION=PAGE的值。这是对上述内容的改进,但随着WITH中设置了更多选项,将变得越来越笨拙

可能的解决方案3:在每台开发人员计算机上安装SQL Server的本地实例。它看起来可以胜任这项工作,现在是免费的。看起来,这可能是最好的解决方案,并会带来其他好处,但在组织的基础设施上安装、配置和维护这一解决方案的开销让这成为一个难题

我还有其他选择吗


谢谢

您不想对SQL Server Express进行任何“严重”的测试。我没有时间参加一场火焰战,但Express是免费的,因为我知道;您得到了您所付出的代价……“您希望以某种方式针对与您的生产版本完全匹配的SQL Server版本进行测试,否则您将花费大量时间发现和修复不兼容。硬件不一定要匹配,但您应该尽可能在测试和生产之间匹配软件

为什么不能在安装了Express的地方安装developer edition

使用,大多数功能现在在所有版本中都可用。由于LocalDB的设计,它甚至比普通的expressedition更轻量级,因此不支持FileGroups/FileStream,但值得一试


您可以下载Express或LocalDB。LocalDB在中也可用。这目前处于发行候选模式,因此我们不建议将其用于生产场景。

Aha。这是否意味着如果我在Visual studio中升级我的SSDT版本,它将从2014年升级捆绑的localdb到2016年?或者我必须等待Visual Studio 2017?我不知道这就是为什么我没有提交答案的原因。我不确定您是否需要等待下一版本的SSDT而不是visual studio,或者只需安装SQL Server 2016 SP1 localdb standalone并使其正常工作。我所指的express实例实际上是在每台开发人员计算机上与visual studio捆绑在一起的“localdb”实例。我正在考虑在每台用户机器上安装Developer Edition,但我所在的组织有一个严格的软件批准流程,这可能是一个难题。同时,这也为新开发人员增加了障碍,这并不理想。但您是对的,理想情况下,所有测试(即使是本地测试)都应该针对类似于生产的环境运行。