这是我发生奇怪错误的日子。
我使用数据库项目,作为Post Deployment的一部分,我们使用SQL Scripts填充表中的数据。
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,Level 15,State 1,Line 234
“OFFSET”附近的语法不正确。
这里发生了什么?
答案 0 :(得分:3)
这是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'.
可怕。
答案 1 :(得分:1)
您是否在Script.EnableTriggers.sql中检查是否触发了触发器?如果您不知道触发器代码,请尝试以下操作:
select * from sys.sql_modules where definition like '%OFFSET%'
如果您发现任何问题,请告诉我。
谢谢, 埃里克