Starten Sie an der Eingabeaufforderung sqlcmd
:
sqlcmd -S <server> -i C:\<your file here>.sql
Ersetzen Sie einfach durch <server>
den Speicherort Ihrer SQL-Box und <your file here>
durch den Namen Ihres Skripts. Vergessen Sie nicht, wenn Sie eine SQL-Instanz verwenden, lautet die Syntax wie folgt:
sqlcmd -S <server>\instance.
Hier ist die Liste aller Argumente, die Sie an sqlcmd übergeben können:
Sqlcmd [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]
[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile] [-z new password]
[-f | i:[,o:]] [-Z new password and exit]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-b On error batch abort]
[-v var = "value"...] [-A dedicated admin connection]
[-X[1] disable commands, startup script, environment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]
INSERT INTO table_name (text) VALUES ('some text bla bla 'bla' text')
. Ich habe Fehler mit Anführungszeichen. SO Was muss ich verwenden (welcher Parameter), um diesen Fehler zu behandeln? Vielen DankIch hatte genau das gleiche Problem und hatte eine Weile Probleme, dann fand ich endlich die Lösung, die darin besteht, den
-a
Parameter aufsqlcmd
zu setzen, um seine Standardpaketgröße zu ändern:quelle
sqlcmd -S <Servername> -U <Username> -P <password> -d <Databasename> -i <filename>
Sie können dieses Tool auch verwenden. Es ist wirklich nützlich.
BigSqlRunner
quelle
Nehmen Sie die Eingabeaufforderung mit Administratorrechten
Wechseln Sie in das Verzeichnis, in dem die SQL-Datei gespeichert ist
Führen Sie den folgenden Befehl aus
sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql
quelle
Ich verwende MSSQL Express 2014 und keine der Lösungen hat für mich funktioniert. Sie alle haben gerade SQL zum Absturz gebracht. Da ich nur ein einmaliges Skript mit vielen einfachen Einfügeanweisungen ausführen musste, habe ich es umgangen, indem ich als letztes Mittel eine kleine Konsolen-App geschrieben habe:
quelle
Führen Sie es in der Befehlszeile mit osql aus, siehe hier:
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL
quelle
sqlcmd
ersetztosql
.Ich hatte ein ähnliches Problem. Meine Datei mit SQL-Skript war über 150 MB groß (mit fast 900 KB sehr einfachem INSERT ). Ich habe die von Takuro empfohlene Lösung verwendet (als Antwort auf diese Frage), aber es wurde immer noch eine Fehlermeldung mit der Meldung angezeigt, dass nicht genügend Speicher vorhanden ist ("Es ist nicht genügend Systemspeicher im Ressourcenpool 'intern' vorhanden, um diese Abfrage auszuführen").
Was mir geholfen hat war, dass ich nach jedem 50k INSERT den GO- Befehl setze s den .
(Es geht nicht direkt um die Frage (Dateigröße), aber ich glaube, es löst das Problem, das indirekt mit der Größe des SQL-Skripts selbst verbunden ist. In meinem Fall viele Einfügebefehle)
quelle
Ihre Frage ist ganz ähnlich wie diese
Sie können Ihre Datei / Ihr Skript als .txt oder .sql speichern und in SQL Server Management Studio ausführen (ich denke, das Menü ist Öffnen / Abfragen, dann führen Sie die Abfrage einfach in der SSMS-Oberfläche aus). Möglicherweise müssen Sie die erste Zeile aktualisieren und angeben, welche Datenbank auf Ihrem lokalen Computer erstellt oder ausgewählt werden soll.
Wenn Sie diese Datenübertragung sehr oft durchführen müssen, können Sie eine Replikation durchführen. Abhängig von Ihren Anforderungen kann die Snapshot-Replikation in Ordnung sein. Wenn Sie die Daten zwischen Ihren beiden Servern synchronisieren müssen, können Sie sich für ein komplexeres Modell wie die Zusammenführungsreplikation entscheiden.
EDIT: Ich habe nicht bemerkt, dass Sie Probleme mit SSMS im Zusammenhang mit der Dateigröße hatten. Anschließend können Sie, wie von anderen vorgeschlagen, über die Befehlszeile eine Snapshot-Replikation durchführen (auf Ihrem Hauptserver veröffentlichen, auf Ihrem lokalen Server abonnieren, replizieren und dann abbestellen) oder sogar sichern / wiederherstellen
quelle
Dann ist es möglicherweise einfacher, die Daten nur über DTS (oder SSIS, wenn dies SQL Server 2005+ ist) zu übertragen, wenn sich die beiden Server im selben Netzwerk befinden.
Wenn sich die beiden Server nicht im selben Netzwerk befinden, können Sie die Quellendatenbank sichern und in einer neuen Datenbank auf dem Zielserver wiederherstellen. Anschließend können Sie
INSERT INTO SELECT
die beiden Tabellen mit DTS / SSIS oder sogar einfach in die Zieldatenbank übertragen.quelle
Hoffe das hilft dir!
quelle
Ich bin auf dasselbe Problem gestoßen und habe einen ganzen Tag investiert, um den Ausweg zu finden. Dies wird jedoch behoben, indem die Kopie der SQL-Datei erstellt und die Erweiterung in die TXT-Datei geändert und die TXT-Datei im Chrome-Browser geöffnet wird. Ich habe die Magie gesehen und die Datei wird in einem Browser geöffnet.
Danke und viele Grüße,
quelle