14

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

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

部署数据库属性复选框

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

高级发布设置屏幕截图

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

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

我怎样才能防止这种情况?

4

4 回答 4

16

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

高级发布设置屏幕截图

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

发布数据库截图

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

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

于 2016-04-20T08:23:24.883 回答
4

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

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

操作设置 其他设置

于 2013-07-15T23:22:43.897 回答
0

实际上,如果您使用 sqlpackage.exe 生成生成脚本,则可以将参数“ScriptDatabaseOptions”设置为 false。

于 2021-08-28T18:07:28.627 回答
-4

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

于 2013-07-12T17:51:10.223 回答