2016-12-24 10 views
0

ローカルSQL Serverから200メガデータスクリプトを生成しました。これは、タスク - > SQLでスクリプトを生成サーバー管理スタジオ。SQL Server Management Studioからの実行に失敗したときに、ローカルSQL Server生成スクリプトからAzure WebアプリケーションSQL Serverにデータを移行する

SQL Server Management Studioから実行しようとすると、私はそれを実行するのに十分なメモリがないというマッサージを受けます。私のPCには16ギガバイトのRAMがあります。

私の質問は単純です:私はどのようにリモートSQL Serverをデータスクリプトで更新できますか?

大きなメモリを使用するようにSQL Server Management Studioを構成したり、大きなスクリプトを実行する方法はありますか?

答えて

1

使用SQLCMD

おかげ..

sqlcmd -S myServer\instanceName -i C:\myScript.sqlsqlcmd -S myServer\instanceName -i C:\myScript.sql -o C:\EmpAdds.txt 

このlink provides details on why you are seeing the issue ..

SSMSを開いたり、実行できるファイルのサイズにはハードコードされた制限はそれほどありませんが、ファイルSSMSがどれくらい開くことができるかという問題は具体的には答えにくいです。 しかし、SSMSは32ビットアプリケーションであるため、最大アドレス空間は2 GBです。 SSMSはガベージコレクションされた多くのマネージコードコンポーネントを使用します。そのため、Object Explorerから起動されたUIを使用している場合は、ファイルをロードせずにその作業セットが1 GBを超えることがあります。 SSMSがしばらく実行されていた場合、プロセスの空きメモリが断片化する傾向があります。そのため、連続した最大の空きアドレス範囲は100 MB未満になる可能性があります。テキストエディタでは、UNICODE(UTF-16)を内部表現として使用しているため、50 MBのASCIIテキストファイルでは、保存に100 MBのメモリが必要です。テキストエディタは、ドキュメントのテキストを格納するために単一のメモリブロックを割り当てます。したがって、Windowsがエディタに必要な大きさのブロックを割り当てることができない場合、テキストエディタはドキュメントを読み込むことさえできません。

スクリプトを実行しようとすると、SSMSはドキュメントをSQLバッチ(テキストの1つのコピー)に分割し、実行するサーバーにバッチを送信します(2番目のコピーです)。バッチは文書よりもはるかに小さいので、空きアドレスブロックのサイズは問題ではありませんが、スクリプトが十分に大きければ、メモリ内に文書テキストを3つコピーすることはできません。その結果、再起動後、SSMSは通常、実行可能なものよりも大きいドキュメントをロードして編集することができます。

intellisenseをオフにした後、私はSSMSを起動した直後にテストマシンに200 MBの大きなドキュメントをロードできましたが、実行できませんでした。これは、おそらくラボ環境で可能な限界に近いでしょう。現実の世界では、痩せたマシンで実際にSSMSを使って仕事をやりますが、実用的な限界は、おそらく40 MBのスクリプトの読み込みと実行に似ています。

関連する問題