Ich habe 4 SQL-Skripte, die ich in einem DACPAC in PostDeployment ausführen möchte, aber wenn ich versuche, das VS-Projekt für 3 davon zu erstellen, wird folgende Fehlermeldung angezeigt:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Die Skripte enthalten nur INSERT
Anweisungen in verschiedenen Tabellen in der Datenbank. Und alle sind so aufgebaut
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
nur auf verschiedenen Tabellen und mit verschiedenen Daten.
Meine Frage ist, warum sich VS über drei von ihnen beschwert, wenn alle Skripte in Bezug auf Syntax und Operationen gleich sind.
PS: Das Hinzufügen von 'GO' zwischen Anweisungen, wie der Fehler andeutet, führt zu nichts.
quelle
Unabhängig davon, dass dies ziemlich alt zu sein scheint, habe ich mich auch einige Stunden damit beschäftigt und ich denke, dass dieser Weg für viele hilfreich sein könnte.
In
Database project
werden Dateien,Build
die als festgelegt wurden, als Datenbankstruktur betrachtet, sodass nur eine Anweisung in einer solchen Datei zulässig ist.Go
Kein anderer Batch-Terminator wird dieses Verhalten ändern. Diese Nachricht ist nur ein Fehler. Mehr Infos hier.Es gibt viele andere Erstellungsoptionen für Dateien in einem solchen Projekt. Für Ihren Fall scheint es so
PostDeploy
. In einer solchen Datei könnten Sie verschiedene Befehle wieinserts
etc. haben.Anschließend können Sie die Ausgabe des Datenbankprojekts als Dacpac-Datei für Data-Tier-DB-Anwendungen verwenden (andernfalls ist sie nicht enthalten).
quelle
Entfernen Sie das; (Semikolon) aus dem letzten jeder Anweisung, und ich bin nicht sicher, aber zwischen den obigen Einfügeanweisungen ist kein GO erforderlich.
quelle