2010-11-21 11 views
14

Ich habe seit ein paar Stunden nach einer "endgültigen" Lösung gesucht und kann nicht genau herausfinden, was das Problem ist, also hoffe ich, dass jemand mich in die richtige Richtung weisen kann.Wie behebe ich "falsche Syntax nahe GO" -Fehler in Skripten, die mit dem Microsoft Datenbank-Publishing-Assistenten erstellt wurden?

Ich versuche, ein Skript für eine Datenbank (eine MDF-Datei DB) auf einem Remotecomputer erstellen und verwenden Sie es, um die gleiche Datenbank lokal zu erstellen. Ich habe Visual Studio 2010 auf beiden Computern, also den Datenbankveröffentlichungs-Assistenten verwendet, um das Skript zu generieren.

Als nächstes erstellte ich eine leere DB in Visual Studio lokal (eine andere MDF-Datei DB) und ausgewählt, um eine neue Abfrage zu erstellen. Ich habe das kopierte Skript eingefügt, aber wenn ich es ausprobiere, bekomme ich Dutzende von "falschen Syntax nahe GO" -Fehlern. Ich bin mir nicht sicher, wie viele insgesamt das Warnhinweisfenster unten auf meinem Bildschirm erscheinen. Es scheint jedoch eine Menge zu sein.

Ich habe alle bis auf die Spitze des Skripts abgeschnitten und ich bekomme immer noch die gleichen Fehler damit. Es sieht jetzt so aus:

SET ANSI_NULLS ON 

GO 

Ich bekomme immer noch den Fehler "falsche Syntax in der Nähe von GO" mit diesem.

Gibt es etwas inhärent falsch mit den Skripten, die dieses Tool erzeugt, oder mache ich etwas falsch damit?

Die Remote-DB ist 2008 R2 und meine lokale ist einfach nur 2008, weshalb ich nicht nur die MDF-Datei kopieren.

Wenn jemand irgendwelche Vorschläge hat, wären sie herzlich willkommen.

Antwort

19

Aus der Dokumentation:

GO ist keine Transact-SQL-Anweisung; it ist ein Befehl, der von den Dienstprogrammen sqlcmd und osql und SQL Server Management Studio-Code-Editor erkannt wird.

Verwenden Sie ein solches Werkzeug, um das Skript auszuführen oder die GO-Befehle wegzulassen.

+4

Danke für die Info. Ich hätte wahrscheinlich gedacht, dass es so etwas sein würde, aber ich denke, ich war in der Denkweise fest, dass Microsoft kein Tool erstellen würde, das einfache Textskripte generiert, die dann nicht als SQL-Skripte ausgeführt werden können. Ah, Microsoft ... –

+0

Die echte Ironie ist, dass VS2010-Datenbank-Projekte * "GO" als Batch-Trennzeichen unterstützen - es ist sogar im Dialogfeld Optionen. Ziemlich schlampig von ihnen, wenn Sie mich fragen. – McGuireV10

+0

Hier habe ich einen netten Ansatz gefunden, um die verschiedenen Nutzungen des GO-Schlüsselworts besser zu verstehen. Ich denke, es lohnt sich, einen Blick darauf zu werfen: [Fun with GO] (http://beyondrelational.com/modules/2/blogs/ 70/Beiträge/10842/Spaß-mit-go.aspx). –

8

Ich stieß vor kurzem auf das gleiche Problem und fand die richtige Antwort (denke ich).

Wenn Sie eine Abfrage in einem zufälligen Editor anders als SQL Server Management Studio-Code-Editor am Ende einer Zeile erstellen können Sie erhalten eine CARRIAGE RETURN (\ r) Charakter anstelle eines CARRIAGE RETURN + LINE FEED (\ r \ n). Und selbst wenn Sie die ENTF-Taste am Ende der Zeile drücken, ändert sich die Eingabe nicht.

Benutzen Sie Notepad ++, um CR (\ r) für CRLF zu ersetzen (\ r \ n) - behalten Sie die Reihenfolge bei, es ist wichtig!

+0

+1. Beeindruckend. Ich verbrachte 30 Minuten damit, mich mit den Fragen zu beschäftigen.Danke für die Information! – gh9

Verwandte Themen