如何从我的SSDT发布脚本中删除ALTER DATABASE语句?

时间:2013-07-12 16:59:00

标签: sql-server sql-server-2012 publish database-project sql-server-data-tools

免责声明: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';

我不希望数据库项目永远修改我的数据库设置,因此我在调试设置下取消选中此项:

Deploy database properties check box

此外,在高级发布设置下:

Advanced publish settings screenshot

在项目设置下|数据库设置我使所有内容与我的数据库匹配:

Database settings screenshot Database settings from Management Studio

我该如何防止这种情况?

3 个答案:

答案 0 :(得分:13)

在保存发布配置文件之前,必须取消选中两个复选框。确保你去项目属性 - >调试并取消选中“部署数据库属性”

Click here to view screenshot

然后右键单击您的数据库项目 - >发布然后单击“高级”以取消选中“部署数据库属性”

Click here to view screenshot

单击“确定”,单击“将配置文件另存为”,从现在开始,每次使用刚刚创建的发布配置文件部署生成的脚本时,只会包含所需的修改。

截至2016年4月20日,我正在使用VS 2013和最新的SSDT。

答案 1 :(得分:4)

我的解决方案是仔细验证所有设置都是完美匹配。我假设因为我将一些设置设置为相同,所以这些设置将不再出现在生成的更改脚本中。然而,事实并非如此。如果存在任何数据库设置差异,则它似乎包含与错误值相同的其他设置。

我错过的设置位于“数据库设置”对话框的第2和第3个选项卡上(“操作”和“其他”)。

Operational settings Miscellaneous settings

答案 2 :(得分:-4)

我没有使用过SSDT。但是,当我使用SSMS生成脚本时,我通常只删除我不想执行的代码。当我对DB模式进行更改时,我希望它在脚本和源代码控制中编写。这样我的安装/迁移是可重复和可测试的。不确定这是否打算如何使用SSDT,但这是值得深思的