回答:
コマンドプロンプトから起動しsqlcmd
ます。
sqlcmd -S <server> -i C:\<your file here>.sql
<server>
SQLボックスの場所と<your file here>
スクリプトの名前に置き換えてください。SQLインスタンスを使用している場合、構文は次のとおりです。
sqlcmd -S <server>\instance.
sqlcmdに渡すことができるすべての引数のリストを次に示します。
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]
私はまったく同じ問題を抱えており、しばらくの間苦労していたのですが、最終的にデフォルトのパケットサイズを変更するために-a
パラメーターをに設定するという解決策を見つけましたsqlcmd
:
sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
sqlcmd -S <Servername> -U <Username> -P <password> -d <Databasename> -i <filename>
このツールも使用できます。本当に便利です。
MSSQL Express 2014を使用していますが、どのソリューションもうまくいきませんでした。それらはすべてSQLをクラッシュさせました。多くの単純な挿入ステートメントを含む1回限りのスクリプトを実行する必要があるだけなので、最後の手段として小さなコンソールアプリを作成することで回避しました。
class Program
{
static void Main(string[] args)
{
RunScript();
}
private static void RunScript()
{
My_DataEntities db = new My_DataEntities();
string line;
System.IO.StreamReader file =
new System.IO.StreamReader("c:\\ukpostcodesmssql.sql");
while ((line = file.ReadLine()) != null)
{
db.Database.ExecuteSqlCommand(line);
}
file.Close();
}
}
コマンドラインでosqlを使用して実行します。ここを参照してください:
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL
sqlcmd
が置き換えられosql
ます。
同様の問題がありました。SQLスクリプトを含む私のファイルのサイズは150MBを超えていました(約900kの非常に単純なINSERTで)。(この質問の答えとして)Takuroがアドバイスした解決策を使用しましたが、メモリが不足しているというメッセージでエラーが発生しました(「このクエリを実行するには、リソースプール '内部'にシステムメモリが不足しています」)。
私を助けたのは、5万回のINSERTごとにGOコマンドを配置したことです。
(それは質問(ファイルサイズ)に直接対処しているわけではありませんが、大きなサイズのSQLスクリプト自体に間接的に関連している問題を解決すると思います。私の場合、多くの挿入コマンド)
ファイル/スクリプトを.txtまたは.sqlとして保存し、それをSql Server Management Studioから実行できます(メニューは[開く/クエリ]で、SSMSインターフェイスでクエリを実行すると思います)。ローカルマシンで作成または選択するデータベースを示す最初の行を更新する必要があります。
このデータ転送を頻繁に行う必要がある場合は、レプリケーションを行うことができます。必要に応じて、スナップショットレプリケーションは問題ありません。2つのサーバー間でデータを同期する必要がある場合は、マージレプリケーションなどのより複雑なモデルを使用できます。
編集:私はあなたがファイルサイズにリンクされたSSMSに問題があることに気づきませんでした。次に、他の人が提案したコマンドライン、スナップショットレプリケーション(メインサーバーでパブリッシュ、ローカルサーバーでサブスクライブ、レプリケートしてからサブスクライブ解除)、またはバックアップ/復元を実行できます。
ファイルには、基本的に2つの新しいテーブルのデータが含まれています。
次に、2つのサーバーが同じネットワーク上にある場合は、データをDTS(またはこれがSQL Server 2005+の場合はSSIS)だけにするほうが簡単な場合があります。
2つのサーバーが同じネットワーク上にない場合は、ソースデータベースをバックアップし、それを宛先サーバーの新しいデータベースに復元できます。次に、DTS / SSISまたは単純なINSERT INTO SELECT
を使用して、2つのテーブルを宛先データベースに転送できます。
これがお役に立てば幸いです!
sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
私は同じ問題に遭遇し、方法を見つけるために丸一日を費やしましたが、これは.sqlファイルのコピーを作成し、拡張子を.txtファイルに変更して.txtファイルをchromeブラウザーで開くことによって解決されます。私は魔法を見て、ファイルがブラウザで開かれました。
よろしくお願いします、
INSERT INTO table_name (text) VALUES ('some text bla bla 'bla' text')
。引用符に誤りがあります。SOこのエラーを処理するために何を使用する必要がありますか(どのパラメーター)?ありがとう