免责声明:SO上有类似的question,似乎指的是旧版本的SSDT。所选答案引用了不在我的项目中的设置文件。我相信我在正确设置的新项目格式中有相同的设置。
我是SSDT的新手,我不相信它不会以非预期的方式更改我的数据库。按照我想要的方式获取设置后,我尝试了一个发布,看看它会尝试对我的数据库做什么。我将这些语句添加到发布脚本中:
ALTER DATABASE [$(DatabaseName)]
SET ANSI_NULLS ON,
ANSI_PADDING ON,
ANSI_WARNINGS ON,
ARITHABORT ON,
CONCAT_NULL_YIELDS_NULL ON,
CURSOR_DEFAULT LOCAL,
RECOVERY FULL,
AUTO_UPDATE_STATISTICS ON
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [$(DatabaseName)]
SET PAGE_VERIFY NONE
WITH ROLLBACK IMMEDIATE;
EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)]
SET TRUSTWORTHY OFF
WITH ROLLBACK IMMEDIATE';
我不希望数据库项目永远修改我的数据库设置,因此我在调试设置下取消选中此项:
此外,在高级发布设置下:
在项目设置下|数据库设置我使所有内容与我的数据库匹配:
我该如何防止这种情况?
答案 0 :(得分:13)
在保存发布配置文件之前,必须取消选中两个复选框。确保你去项目属性 - >调试并取消选中“部署数据库属性”
然后右键单击您的数据库项目 - >发布然后单击“高级”以取消选中“部署数据库属性”
单击“确定”,单击“将配置文件另存为”,从现在开始,每次使用刚刚创建的发布配置文件部署生成的脚本时,只会包含所需的修改。
截至2016年4月20日,我正在使用VS 2013和最新的SSDT。
答案 1 :(得分:4)
我的解决方案是仔细验证所有设置都是完美匹配。我假设因为我将一些设置设置为相同,所以这些设置将不再出现在生成的更改脚本中。然而,事实并非如此。如果存在任何数据库设置差异,则它似乎包含与错误值相同的其他设置。
我错过的设置位于“数据库设置”对话框的第2和第3个选项卡上(“操作”和“其他”)。
答案 2 :(得分:-4)
我没有使用过SSDT。但是,当我使用SSMS生成脚本时,我通常只删除我不想执行的代码。当我对DB模式进行更改时,我希望它在脚本和源代码控制中编写。这样我的安装/迁移是可重复和可测试的。不确定这是否打算如何使用SSDT,但这是值得深思的