繁体   English   中英

SQLCMD模式下的SSMS-语法错误

[英]SSMS in SQLCMD mode - Incorrect Syntax

今天是我发生怪异错误的日子。

我使用数据库项目,并且作为后期部署的一部分,我们使用SQL脚本在表中填充数据。

alter authorization on database::atlas to sa;
go
ALTER DATABASE ATLAS SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO

:r C:\Scripts\Script.DisableTriggers.sql
:r C:\Scripts\dbo\Script.dbo.PaymentMethod.sql
:r C:\Scripts\dbo\Script.dbo.TransactionEntryMethod.sql
:r C:\Scripts\dbo\Script.dbo.TransactionTypeGroup.sql
:r C:\Scripts\dbo\Script.dbo.TransactionType.sql
:r C:\Scripts\Script.EnableTriggers.sql

每个脚本与下面的脚本非常相似

SET IDENTITY_INSERT [dbo].[TransactionTypeGroup] ON
INSERT INTO [dbo].[TransactionTypeGroup] (TransactionTypeGroupID,TransactionTypeGroupName) VALUES 
(1,'Inquiry')
, (2,'Points')
, (3,'Board')
, (4,'Guest Meals')
, (5,'Cash Equivalency')
, (6,'Deposits')
, (7,'Void/Void Tender')
, (8,'Refund')
SET IDENTITY_INSERT [dbo].[TransactionTypeGroup] OFF
GO

返回输出时,出现以下错误:

(1 row(s) affected)

(1 row(s) affected)

(25 row(s) affected)

(11 row(s) affected)

(2 row(s) affected)

(598 row(s) affected)

(3 row(s) affected)
Msg 102, Level 15, State 1, Line 234
Incorrect syntax near 'OFFSET'.

我已经搜索了整个SQL目录,并且在我发出的任何SQL文件或任何命令中都没有一个叫做OFFSET的词。 但是我得到那个错误..

Msg 102,第15级,状态1,第234行
“ OFFSET”附近的语法不正确。

这里发生了什么?

这是baadddddddd

它将文件之间的命令连接在一起

一个文件以这种方式结束

SET IDENTITY_INSERT TABLEONE OFF

下一个文件以这种方式启动

SET IDENTITY_INSERT TABLETWO ON

但是第一个文件在SET IDENTITYINSERT OFF之后没有空行。

SSMS将两个文件放在一起并执行它们,因此输出变为

SET IDENTITY_INSERT TABLEONE OFFSET IDENTITY_INSERT TABLETWO ON

这就是出现此错误的方式

Msg 102, Level 15, State 1, Line 234
Incorrect syntax near 'OFFSET'.

可怕的。

我刚刚向Microsoft Connect提交了一个错误。

您是否检查了Script.EnableTriggers.sql中是否触发了触发器? 如果您不知道触发代码,请尝试以下操作:

select * from sys.sql_modules where definition like '%OFFSET%'

让我知道您是否找到任何东西。

谢谢,埃里克

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM