Sql server Visual Studio 2008数据库项目在架构比较期间生成ALTER数据库

Sql server Visual Studio 2008数据库项目在架构比较期间生成ALTER数据库,sql-server,visual-studio-2008,visual-studio-2008-db,Sql Server,Visual Studio 2008,Visual Studio 2008 Db,我有一个新的VisualStudio2008数据库项目(Data Dude)。它是通过指向我们现有的数据库生成的。现在我已经做了一些更改(新的列、表、索引等),我正在尝试为部署生成部署(diff)脚本。我有一个模式比较设置来进行比较并生成diff脚本文件。我想我已经调整了大多数比较设置和对象忽略以满足我的需要,但是,在顶部我得到了一些我不希望生成的ALTER DATABASE命令。它们看起来像这样: IF EXISTS (SELECT 1 FROM [master].[

我有一个新的VisualStudio2008数据库项目(Data Dude)。它是通过指向我们现有的数据库生成的。现在我已经做了一些更改(新的列、表、索引等),我正在尝试为部署生成部署(diff)脚本。我有一个模式比较设置来进行比较并生成diff脚本文件。我想我已经调整了大多数比较设置和对象忽略以满足我的需要,但是,在顶部我得到了一些我不希望生成的ALTER DATABASE命令。它们看起来像这样:

IF EXISTS (SELECT 1
           FROM   [master].[dbo].[sysdatabases]
           WHERE  [name] = N'$(DatabaseName)')
    BEGIN
        ALTER DATABASE [$(DatabaseName)]
            SET ANSI_NULLS ON,
                ANSI_PADDING ON,
                ANSI_WARNINGS ON,
                ARITHABORT ON,
                CONCAT_NULL_YIELDS_NULL ON,
                QUOTED_IDENTIFIER ON,
                ANSI_NULL_DEFAULT ON,
                CURSOR_DEFAULT LOCAL 
            WITH ROLLBACK IMMEDIATE;
    END


GO
IF EXISTS (SELECT 1
           FROM   [master].[dbo].[sysdatabases]
           WHERE  [name] = N'$(DatabaseName)')
    BEGIN
        ALTER DATABASE [$(DatabaseName)]
            SET PAGE_VERIFY NONE 
            WITH ROLLBACK IMMEDIATE;
    END


GO
我更愿意调整设置,这样我就不必与我的15多名成员的团队沟通,他们需要在每次想要下拉并将最新版本部署到其环境时从差异文件中删除这些行


哪些设置控制此操作?

在项目的.sqldeployment和.sqlsettings文件中(在解决方案资源管理器中项目的“属性”文件夹中提供)有用于控制此操作的设置。可以在.sqlsettings文件[]中调整设置本身,在查看.sqldeployment设置时,可以在第一个复选框中找到禁用整个数据库属性脚本生成的功能。[]

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

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

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


我将VS 2013与2016年4月20日的最新SSDT一起使用。

只是为答案添加了更多细节。当我们从现有数据库生成SQL项目时,我们一定错过了从数据库生成SQLSettings的选项,而是选择了使用db(data dude)项目的“默认”设置。因此,我的当前数据库没有设置这些选项,所以它希望在我的“差异脚本”生成中设置这些选项,因为它们是在“默认”sqlsettings文件中指定的,但实际上不是在我的数据库中指定的。我仍然希望在生成时禁用它们,但要确保在第一个tim中干净地生成db项目,这更需要考虑