SSMS en mode SQLCMD - Syntaxe incorrecte
-
20-09-2019 - |
Question
Il est mon jour pour des erreurs étranges.
J'utilise un projet de base de données et comme une partie de post-déploiement, nous utilisons des scripts SQL pour remplir les données dans nos tableaux.
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
chacun de ces scripts est très similaire à celui ci-dessous
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
Quand je reçois ma sortie arrière, je reçois l'erreur suivante:
(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'.
Je l'ai cherché tout mon répertoire SQL, et il n'y a pas de mot appelé OFFSET dans un fichier SQL ou dans une commande que je lance. Mais pourtant je reçois cette erreur ..
Msg 102, niveau 15, état 1, ligne 234
syntaxe incorrecte près de 'OFFSET'.
Qu'est-ce qui se passe ici?
La solution
est baadddddddd
Il concaténer les commandes ainsi que d'un fichier à
Un fichier a terminé cette façon
SET IDENTITY_INSERT TABLEONE OFF
fichier suivant a commencé cette façon
SET IDENTITY_INSERT TABLETWO ON
Mais le premier fichier n'a pas une ligne vide après le SET IDENTITYINSERT OFF.
SSMS mettais les deux fichiers ensemble et de les exécuter, de sorte que la sortie est devenu
SET IDENTITY_INSERT TABLEONE OFFSET IDENTITY_INSERT TABLETWO ON
et voilà comment cette erreur est venu
Msg 102, Level 15, State 1, Line 234
Incorrect syntax near 'OFFSET'.
Affreux.
Autres conseils
Avez-vous vérifié si un déclencheur est mise à feu dans Script.EnableTriggers.sql? Si vous ne connaissez pas votre code de déclenchement, essayez ceci:
select * from sys.sql_modules where definition like '%OFFSET%'
Faites-moi savoir si vous trouvez quoi que ce soit.
Merci, Eric