スクリプト内からSQL Serverスクリプトのタイムアウトを設定するにはどうすればよいですか?
-
03-07-2019 - |
質問
実行しようとしている大きなスクリプトファイル(約300 MB、将来的にはより大きくなる可能性があります)があります。私の質問に対するGulzarの答えのコメントで提案されていますスクリプトのタイムアウトを0(タイムアウトなし)に変更する必要があります。
スクリプト内からこのタイムアウトを設定する最良の方法は何ですか?現時点では、これらのいずれかがスクリプトファイルの先頭にあり、そのうちの1つが何かを行うことを期待しています。
sp_configure 'remote login timeout', 600
go
sp_configure 'remote query timeout', 0
go
sp_configure 'query wait', 0
go
reconfigure with override
go
ただし、sqlcmd.exeからの応答は世界で最も有用でないエラーメッセージであるため、同じ結果が得られ、タイムアウトの設定に成功したかどうかわかりません。
Sqlcmd:エラー:スクリプトエラー。
ありがとう。
解決
sqlcmd -t {n}
{n}は0〜65535の数字でなければなりません。
サーバーにはタイムアウトの概念はありません。したがって、スクリプト内でタイムアウトを設定することはできません。
コンテキストでは、 sqlcmd によってタイムアウトが実施されます。
他のヒント
あなたのソリューション-100行または150行ごとにGOを追加
http://www.red-gate.com/MessageBoard/ viewtopic.php?t = 8109
SQL Serverには、 SQLスクリプト内にタイムアウトの概念がないと思います。呼び出し層/クライアントでタイムアウトを設定する必要があります。
このMSDNの記事によるとこのようにタイムアウトを増加させることができます:
exec sp_configure 'remote query timeout', 0
go
reconfigure with override
go
"リモートクエリタイムアウトオプションを使用して、Microsoft SQL Serverがタイムアウトするまでにリモート操作にかかる時間を秒単位で指定します。デフォルトは600で、10分間待機できます。この値は、データベースエンジンによってリモートクエリとして開始された発信接続に適用されます。この値は、データベースエンジンが受信するクエリには影響しません。"
PS:300 MBの場合、結果のファイルは300 MBですか?スクリプトファイル自体が300 MBであることは望みません。それは世界記録になるでしょう。 ;-)