266

RedGate SQL データ比較を使用して .sql ファイルを生成したので、ローカル マシンで実行できました。しかし問題は、ファイルが 300 MB を超えていることです。つまり、クリップボードが処理できないため、コピー アンド ペーストを行うことができず、SQL Server Management Studio でファイルを開こうとするとエラーが発生します。ファイルが大きすぎることについて。

大きな .sql ファイルを実行する方法はありますか? このファイルには、基本的に 2 つの新しいテーブルのデータが含まれています。

4

13 に答える 13

491

コマンド プロンプトから、次のように起動します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] 
于 2009-01-10T22:56:07.610 に答える
75

私はまったく同じ問題を抱えていて、しばらく苦労していましたが、最終的にデフォルトのパケットサイズを変更するために-aパラメータをに設定する解決策を見つけました:sqlcmd

sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
于 2013-03-14T08:40:22.797 に答える
20

このツールも使用できます。本当に便利です。

BigSqlRunner

注: リンク切れのため、更新しました。

于 2015-08-25T09:25:31.927 に答える
17
  1. 管理者権限でコマンドプロンプトを取得する

  2. ディレクトリを .sql ファイルが保存されている場所に変更します

  3. 次のコマンドを実行します

    sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql

于 2016-06-03T09:43:14.397 に答える
4

コマンド ラインで osql を使用して実行します。こちらを参照してください。

http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL

于 2009-01-10T22:55:55.410 に答える
1

あなたの質問はこれとよく似ています

ファイル/スクリプトを .txt または .sql として保存し、Sql Server Management Studio から実行できます (メニューは [開く/クエリ] で、SSMS インターフェイスでクエリを実行するだけだと思います)。ローカル マシンで作成または選択するデータベースを示す最初の行を更新する必要がある場合があります。

このデータ転送を頻繁に行う必要がある場合は、レプリケーションを行うことができます。必要に応じて、スナップショット レプリケーションで問題ない場合があります。2 つのサーバー間でデータを同期する必要がある場合は、マージ レプリケーションなどのより複雑なモデルを使用できます。

編集:ファイルサイズにリンクされたSSMSに問題があることに気づきませんでした。次に、他の人が提案したように、コマンドライン、スナップショット レプリケーション (メイン サーバーで公開し、ローカル サーバーでサブスクライブし、レプリケートしてからサブスクライブ解除する)、またはバックアップ/復元を行うことができます。

于 2009-01-10T23:19:39.077 に答える
1

このファイルには、基本的に 2 つの新しいテーブルのデータが含まれています。

次に、2 つのサーバーが同じネットワーク上にある場合は、データを DTS (SQL Server 2005 以降の場合は SSIS) で転送する方が簡単です。

2 つのサーバーが同じネットワーク上にない場合は、ソース データベースをバックアップし、それを宛先サーバーの新しいデータベースに復元できます。次に、DTS/SSIS または単純な を使用INSERT INTO SELECTして、2 つのテーブルを宛先データベースに転送できます。

于 2009-01-11T00:18:49.783 に答える
0

非常に大きな SQL ダンプをインポートする際にまだ問題に遭遇しているすべてのフェローには、おそらく別の方法があります。

可能な場合の考慮事項: サーバーにアクセスできる場合は、データベースを複数の部分に分けてエクスポートできます。たとえば、最初に構造、次にテーブル (または関連オブジェクト) ごとに、1 つの大きなファイルではなく、小さな断片でデータをエクスポートします。 .

サーバーにアクセスできない場合、および/または既存の大きなファイルを使用する必要がある場合は、SQLDumpSplitter: https://philiplb.de/sqldumpsplitter3/を使用してファイルを分割してみてください。

次に、断片をインポートして、データベースの完全なコピーを取得します。

がんばれ。

于 2022-02-28T14:05:18.420 に答える