web-dev-qa-db-ja.com

SQL Server 2008 R2で50 MBスクリプトを実行中にエラーが発生する

SQL Server 2008 R2を使用しています。DBを更新するスクリプトがあります。そのスクリプトのサイズは約50 MBで、約800,000行あります。

エラー:

TITLE:Microsoft SQL Server Management Studio

スクリプトを実行できません。

追加情報:

プログラムの実行を続行するにはメモリが不足しています。 (mscorlib)

誰かがこのエラーを取得せずにこのスクリプトを実行するのを手伝ってもらえますか?

56
Vikrant More

メモリを大幅に節約したコマンドラインツールSQLCMDを使用します。次のように簡単です:

SQLCMD -d <database-name> -i filename.sql

SQL Serverインスタンスにアクセスするため、またはデータベースにアクセスするためにも、有効な資格情報が必要です

88
user1293068

@ user1293068の答えに加えて、インスタンス名を指定する必要がありました。完全な構文は次のとおりです。

sqlcmd -S <ComputerName>\<InstanceName> -d <DatabaseName> -i <MyScript.sql>

これはTechnetの sqlcmdユーティリティを使用 の記事に記載されています。

(「-s」ではなく「-S」のスイッチ値を入力する必要があることに注意してください。スイッチでは大文字と小文字が区別されます。)

56

サーバーのプロパティで[サーバーメモリの最大値]の値を増やすこともできます。
この設定を編集するには、サーバー名を右クリックして、[プロパティ]> [メモリ]タブを選択します。

SSMS 2012で30MB SQLスクリプトを実行しようとすると、このエラーが発生しました。
値を1024MBから2048MBに増やした後、スクリプトを実行できました。

12
dstetsenko

資格情報が必要な場合

sqlcmd -S <ComputerName>\<InstanceName> -U <username> -P <password> -d <DatabaseName> -i <MyScript.sql>
12
Jude

OK、スクリプトを正常に復元するのに十分な答えはありませんでした。

そう:

  1. ネットワークアカウントに、SQL Serverインスタンスと復元する特定のデータベースの両方にアクセスするための十分な権限があることを確認してください。

  2. 生成スクリプトから生成されただけの場合(スキーマとデータの両方を含めるように変更を加えた場合)、復元するデータベースが実際に存在することが最善です。

  3. 管理者モードでコマンドラインツールを実行します(必要な場合)。たとえば、[スタート]メニューの[実行]からCMDと入力します。

  4. コマンドラインツールで、"SQLCMD -d CMS -i C:\Carnotaurus\Data\script.sql"。ここで、CMSは復元するデータベースの名前であり、"C:\Carnotaurus\Data\script.sql"は、SMSSのスクリプトの生成によって生成された復元スクリプトの完全なファイルパスです。

これにより、不足しているいくつかのステップが解消されることを願っています。

6
CarneyCode