我正在使用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
错误是:
Msg 102,Level 15,State 1,Line 208附近的语法不正确 '增加的'。消息319,级别15,状态1,行211语法不正确 靠近关键字'with'。如果此语句是公用表 表达式,xmlnamespaces子句或更改跟踪上下文 子句,前一个语句必须以分号结束。 消息102,级别15,状态1,行211语法不正确 '立刻'。
据我所知,SQL Server 2012 CTP1中不推荐使用生成的语法。
我正在使用Visual Studio版本14.0.25431.01 Update 3和SSDT版本14.0.609.18。我正在针对SQL Server 11.0.6020执行此脚本。
请注意,我能够从Visual Studio,Visual Studio中的Schema Compare发布,通过SSMS或VS中的DACPAC升级应用此模式,并且我还能够通过DacFx应用构建的DACPAC而不会出错。我只在执行原始脚本时遇到此错误。
如果我删除有问题的代码,它会按预期工作。我需要来获取一个特定案例的脚本。我只想弄清楚为什么SSDT会创建错误的语法。我希望在部署之前不需要对生成的脚本进行手动编辑的清单。
有没有人有任何想法?谢谢!