スクリプトを実行できません:プログラムの実行を続行するにはメモリが不足しています


88

ローカルPCで実行する必要のある123MBのSQLファイルがあります。しかし、私は得ています

Cannot execute script: Insufficient memory to continue the execution of the program

ここに画像の説明を入力してください

この問題を解決するにはどうすればよいですか?


@marc_s Ctlr + Eをクリックすると、すぐにこのエラーが表示されます
user960567 2013

回答:


126

メモリにはるかに依存するコマンドラインツールSQLCMDを使用します。それは次のように簡単です:

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

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

ここから撮影。


26
完全な資格情報を使用して、dbとサーバーを指定します。sqlcmd-S<YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike 2016年

1
この問題が発生します:「INSERTステートメントの行値式の数が、最大許容数である1000行値を超えています。」
クリスチャンフレド2017

3
-e信頼できる接続を追加
smurtagh 2018

33

それはあなたを助けるかもしれません!以下の手順をご覧ください。

sqlcmd -S server-name -d database-name -i script.sql

  • 管理者としてcmd.exeを開きます。
  • ドキュメントディレクトリを作成します。
  • SQLスクリプトファイル(script.sql)をdocumentsフォルダーに置きます。
  • 上記の強調表示されたクエリまたはコマンドライン画面の下のように、sqlcmd、server-name、database-name、script-file-nameを使用してqueryと入力します。

ここに画像の説明を入力してください


あなたは、sqlcmdの-S viaserver -U saの-P 123 -d TelstraDeployed -i SQLQuery1.sqlユーザ名とパスワード-sa -123をAADすることができます
アニル・シン

エラーが発生しますSqlcmd:エラー:Mircorsoft SQL Server Native Client 10.0:プレログインの失敗により、クライアントが接続を確立できません。
gbbosmiya

11

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

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

(これは私がここで提供したのと同じ答えです


10

Windows認証の場合は、このsqlcmdを使用します

SQLCMD -S TestSQLServer\SQLEXPRESS  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

注: SQLファイルのパスにスペースがある場合は、「(引用符)」を使用してください。

SQL Server認証の場合、このsqlcmdを使用します

SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

-S TestSQLServer \ SQLEXPRESS:ここでSQLServer名を指定します

-U sa:ユーザー名(SQL Server認証の場合)

-P sasa:パスワード(SQL Server認証の場合)

-d AdventureWorks2018:データベース名はここにあります

-i "d:\ document \ sql document \ script.sql": SQLFileのファイルパス


5

私があなたの問題を正しく理解しているなら、あなたはxyz.sql-データベース+スキーマを復元しようとしています(トランザクションSQL)。あなたは私のために働いたこのコマンドを試すことができます:

SQLCMD -U sa -i xyz.sql

4

私のデータベースは500MBを超えていたので、次のものを使用しました

C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql

SPを含むすべてをロードしました

*注意:管理者としてcmdを実行します


2

スクリプトとデータのサイズが大きいために、このタイプのエラーが発生することがあります。サーバーは、実行して結果を出すのに十分なメモリを必要とします。クエリごとに、メモリサイズを単純に増やすことができます。

SQLサーバーのプロパティ> [メモリ]タブ(左側)に移動する必要があります>次に、追加する最大メモリ制限を設定します。

また、上部に「結果からテキスト」というオプションがあり、オプション「結果からグリッド」に比べてメモリの消費量が少なくなります。また、結果からテキストに移動してメモリの実行を減らすこともできます。


2

このステップを試してください、

1)PowerShellを開く

2)次のコマンドを記述します。

sqlcmd -S PCNAME\SQLEXPRESS -U user -P password -d databanse_name -i C:\script.sql

3)Returnキーを押します

:-)

ここに画像の説明を入力してください


2

以下のスクリプトは完全に機能します。

sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x

症状:

sqlcmdユーティリティを使用してリカバリスクリプトを実行すると、「Sqlcmd:Error:Syntax error at line XYZ near command'X 'in file'file_name.sql'。」エラーが発生しました。

原因:

これはsqlcmdユーティリティの制限です。SQLスクリプトにドル記号($)が何らかの形式で含まれている場合、ユーティリティはデフォルトですべての変数を自動的に置き換えるため、スクリプトを適切に実行できません。

解決:

任意の形式でドル($)記号が付いているスクリプトを実行するには、コマンドラインに「-x」パラメーターを追加する必要があります。

例えば

オリジナル: sqlcmd -s Server_name -d Database_name -E -ic:\ Temp \ Recovery_script.sql

修正済み: sqlcmd -s Server_name -d Database_name -E -ic:\ Temp \ Recovery_script.sql -x


$コメントはとても役に立ちました。ありがとう
ペールエール

1

sqlcmd -S mamxxxxxmu \ sqlserverr -U sa -P x1123 -d QLDB -i D:\ qldbscript.sql

  • 管理者として実行時にコマンドプロンプトを開く

  • 上記のコマンドを入力してください

「mamxxxxxmu」はコンピュータ名「sqlserverr」はサーバー名「sa」はサーバーのユーザー名「x1123」はサーバーのパスワード「QLDB」はデータベース名「D:\ qldbscript.sql」はデータベースで実行するSQLスクリプトファイル


1

開発中にLocalDBに接続する必要がある場合は、次を使用できます。

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.