0

我正在使用 SSDT 中的“生成脚本”功能来创建数据库脚本。但是,根据 SSMS,当我执行脚本时,生成的脚本有语法错误。有错误的代码是:

IF EXISTS (SELECT 1
       FROM   [master].[dbo].[sysdatabases]
       WHERE  [name] = N'$(DatabaseName)')
BEGIN
    ALTER DATABASE [$(DatabaseName)]
        SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF),
            MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = OFF,
            DELAYED_DURABILITY = DISABLED 
        WITH ROLLBACK IMMEDIATE;
END

错误是:

消息 102,级别 15,状态 1,第 208 行“增量”附近的语法不正确。消息 319,级别 15,状态 1,第 211 行关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。消息 102,级别 15,状态 1,第 211 行“立即”附近的语法不正确。

据我所知,生成的语法在 SQL Server 2012 CTP1 中已弃用。

我正在使用带有 SSDT 版本 14.0.609.18 的 Visual Studio 版本 14.0.25431.01 Update 3。我正在针对 SQL Server 11.0.6020 执行此脚本。

请注意,我能够从 Visual Studio 发布,从 Visual Studio 进行架构比较,通过 SSMS 或 VS 中的 DACPAC 升级应用此架构,并且我还能够通过 DacFx 应用构建的 DACPAC 而不会出错。我只在执行原始脚本时收到此错误。

如果我删除有问题的代码,它会按预期工作。我确实需要有一个特定案例的脚本。我只是想弄清楚为什么 SSDT 会创建错误的语法。我宁愿不必在部署之前对生成的脚本进行手动编辑的清单。

有没有人有任何想法?谢谢!

4

0 回答 0