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

Kei*_*ton 11 sql-server publish database-project sql-server-2012 sql-server-data-tools

免责声明:在SO上有一个类似的问题似乎是指旧版本的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';
Run Code Online (Sandbox Code Playgroud)

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

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

高级发布设置截图

在项目设置下| 数据库设置我使一切都与我的数据库匹配

数据库设置截图 Management Studio中的数据库设置

我怎么能阻止这个?

Emi*_*lip 14

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

点击此处查看截图

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

点击此处查看截图

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

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


Kei*_*ton 4

我的解决方案是仔细验证所有设置是否完美匹配。我曾假设,由于我已将某些设置设置为相同,因此这些设置将不再位于生成的更改脚本中。然而,情况并非如此。如果存在任何数据库设置差异,则似乎包括其他相同但值错误的数据库设置。

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

操作设置 杂项设置