最大180 Mbのsqlファイルがあります。 Microsoft SQL Server Managment Studio 2012でそれを開いて実行しようとすると、このエラーが発生します。 。何をしますか? Googleで調査しました。そして、いくつかの答えがありました。彼らが言う1つの解決策は、C#スクリプトを実行することでした。 こちらです 。しかし、実行方法がわかりません。とにかく、そのスクリプトが機能するかどうかはわかりません。手伝ってくれてありがとう。
Management Studioは、そのようなファイルを開くために180 MB以上のメモリを必要とします。これは、ファイルのテキスト全体をメモリに保存するだけでなく、IntelliSenseに必要なオブジェクトをロードし、あらゆる種類の解析と検証などを実行するだけです。 IntelliSenseをオフにすると幸運ですが、これらのアクティビティの一部は引き続き発生します。特にそれがすべて1つのバッチである場合。
C#のアプローチはこのファイルでは問題なく機能する可能性がありますが、存在する可能性のあるすべてのファイルを解析する方法が常にわかるような方法で記述されていないのではないかと思います。変数を宣言する場合を考え、#tempテーブルを使用します。など。あなたはおそらくはるかに良くなるでしょう:
GO
バッチセパレーターを散布して、Management Studioがスクリプトを1つの巨大なバッチとして処理しないようにします。BULK INSERT
、bcp、SSIS、またはインポート/エクスポートを使用できるようにファイルを作成します。または、個々のステートメントを異なる方法で構成する。例-次のような個別の挿入行を含む大きなインポートファイルがたくさんあります。
INSERT INTO dbo.tablename(col,col,col) VALUES(value,value,value);
INSERT INTO dbo.tablename(col,col,col) VALUES(value,value,value);
INSERT INTO dbo.tablename(col,col,col) VALUES(value,value,value);
INSERT INTO dbo.tablename(col,col,col) VALUES(value,value,value);
代わりにこれを実行することで、ファイルの完全なサイズで巨大な量のスペースを節約できます。
INSERT INTO dbo.tablename(col,col,col) VALUES(value,value,value),
(value,value,value),(value,value,value),(value,value,value);
現在のファイルがすべて挿入ステートメントである場合、これは大きなへこみになる可能性があります。ただし、 約1,000を超えるセットをグループ化しないでください であることに注意する必要があります。
それだけでは問題を解決するにはおそらく不十分ですが、それでも一般的なIMHOの方が優れた戦略です。
また、最新バージョンを入手することをお勧めします(Expressを使用している場合は、 ここから入手 )。
SQLファイルを実行する必要がある場合は、 MSDNに記載されているsqlcmd
を使用します。sqlcmd を使用してTransact-SQLスクリプトファイルを実行します。
これは私のためのトリックをしました:
sqlcmd -S serverName\instanceName -i script.sql -o output.txt
そのC#スクリプトはファイルを読み取り、そこから各行を実行します。ファイルには1行のステートメントしか含まれていないため、これは問題なく機能します。ファイルのT-SQL構造が同じであれば、そのC#コードが機能します。 Notepadd ++でファイルを開くことで確認できます。
乾杯、