如何针对 localdb 对使用 sql 服务器企业功能的 SSDT 项目进行单元测试?
How do I unit test a SSDT project which uses sql server enterprise features against localdb?
我在 VS 中设置了一个 SSDT 项目,它使用 SQL Server Enterprise Edition
功能(例如数据压缩)。
我希望能够将此项目部署到 localdb
,以便能够在部署到 CI 数据库之前对本地数据库进行 运行 单元测试。但是,localdb
是 SQL Server Express Edition
的一个实例,不支持数据压缩。
我尝试部署时遇到的错误是:
SQL72014 .Net SqlClient Data Provider: Cannot enable compression for
object 'FooTable'. Only SQL Server Enterprise Edition supports
compression.
可能的解决方案 #1:将所有数据压缩 SQL 转移到 Post Deploy Script
,部署到 localdb
时不是 运行。这并不理想,因为该选项将隐藏在源代码管理中,并且不会显示在模式比较等中。
可能的解决方案 #2:将问题 SQL 替换为 SQLCMD Variable
例如$(WithPageCompression)
部署到 localdb
时为空值,部署到真实数据库时为 WITH (DATA_COMPRESSION = PAGE)
。这是对上述内容的改进,但随着在 WITH
.
中设置更多选项,它将变得越来越笨拙
可能的解决方案 #3:在每台开发人员机器上安装 SQL 服务器的本地实例。看起来 Developer Edition 可以完成这项工作(现在是免费的)。看起来这可能是最好的解决方案并且会带来其他好处,但是在组织的基础设施上安装、配置和维护它的开销让它变得很痛苦。
我还有哪些其他选择?
谢谢
您不想针对 SQL Server Express 测试任何 'serious'。我没有时间搞事情 war 但 Express 是免费的(请参阅;一分钱一分货......')您想以某种方式测试 SQL 与您的生产版本完全匹配的服务器,否则您将花费大量时间来发现和修复不兼容性。 hardware 不一定必须匹配,但您应该尽可能在测试和生产之间匹配 software。
为什么安装了Express的开发版不能安装?
随着 release of SQL Server 2016 SP1,大多数功能现在在所有版本中都可用。由于其设计,LocalDB 存在一些限制(它比普通的 Express 版本更轻巧,因此不支持 FileGroups / FileStream),但值得一试。
您可以下载 Express 或 LocalDB from here. LocalDB is also available in the SSDT 17.0 RC release。目前处于发布候选模式,因此我们不建议将其用于生产场景。
我在 VS 中设置了一个 SSDT 项目,它使用 SQL Server Enterprise Edition
功能(例如数据压缩)。
我希望能够将此项目部署到 localdb
,以便能够在部署到 CI 数据库之前对本地数据库进行 运行 单元测试。但是,localdb
是 SQL Server Express Edition
的一个实例,不支持数据压缩。
我尝试部署时遇到的错误是:
SQL72014 .Net SqlClient Data Provider: Cannot enable compression for object 'FooTable'. Only SQL Server Enterprise Edition supports compression.
可能的解决方案 #1:将所有数据压缩 SQL 转移到 Post Deploy Script
,部署到 localdb
时不是 运行。这并不理想,因为该选项将隐藏在源代码管理中,并且不会显示在模式比较等中。
可能的解决方案 #2:将问题 SQL 替换为 SQLCMD Variable
例如$(WithPageCompression)
部署到 localdb
时为空值,部署到真实数据库时为 WITH (DATA_COMPRESSION = PAGE)
。这是对上述内容的改进,但随着在 WITH
.
可能的解决方案 #3:在每台开发人员机器上安装 SQL 服务器的本地实例。看起来 Developer Edition 可以完成这项工作(现在是免费的)。看起来这可能是最好的解决方案并且会带来其他好处,但是在组织的基础设施上安装、配置和维护它的开销让它变得很痛苦。
我还有哪些其他选择?
谢谢
您不想针对 SQL Server Express 测试任何 'serious'。我没有时间搞事情 war 但 Express 是免费的(请参阅;一分钱一分货......')您想以某种方式测试 SQL 与您的生产版本完全匹配的服务器,否则您将花费大量时间来发现和修复不兼容性。 hardware 不一定必须匹配,但您应该尽可能在测试和生产之间匹配 software。
为什么安装了Express的开发版不能安装?
随着 release of SQL Server 2016 SP1,大多数功能现在在所有版本中都可用。由于其设计,LocalDB 存在一些限制(它比普通的 Express 版本更轻巧,因此不支持 FileGroups / FileStream),但值得一试。
您可以下载 Express 或 LocalDB from here. LocalDB is also available in the SSDT 17.0 RC release。目前处于发布候选模式,因此我们不建议将其用于生产场景。