10

実行しようとしている大きなスクリプト ファイル (ほぼ 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: エラー: スクリプト エラーです。

4

3 に答える 3

7

あなたの解決策 - 100 行または 150 行ごとに GO を追加する

http://www.red-gate.com/MessageBoard/viewtopic.php?t=8109

于 2009-03-20T16:16:21.783 に答える
5
sqlcmd -t {n}

{n} は 0 から 65535 までの数値でなければなりません。

サーバーにはタイムアウトの概念がないため、スクリプト内でタイムアウトを設定できないため 、質問は少し誤解を招くことに注意してください。

あなたのコンテキストでは、タイムアウトはsqlcmdによって強制されます

于 2008-10-22T09:06:46.173 に答える
4

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 であることを望みません。それは世界記録だろう。;-)

于 2008-10-22T09:06:35.630 に答える