この記事は、Visual Studio を使用して SQL 共通言語ランタイム (CLR) オブジェクトを配置するときに発生するタイムアウトの問題を解決するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 2011805
現象
Visual Studio から SQL Server に SQL CLR オブジェクトをデプロイすると、次のようなさまざまなエラーが発生する可能性があります。
エラー メッセージ 1:
エラー: データベース アップロード トランザクションの開始に失敗しました。
エラー: 操作を完了できませんでしたエラー メッセージ 2:
ファイルの配置: TEstAssembly.dll、パス: E:\cases\CL MY\TEstAssembly\TEstAssembly\obj\Debug\TEstAssembly.dll ...エラー: タイムアウトの有効期限が切れています。 処理が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。
ただし、SQL Server Management Studio で CREATE ASSEMBLY コマンドを使用して同じ CLR オブジェクトをデプロイしても、問題は発生しません。
原因
この問題は、SQL CLR オブジェクトが非常に大きいため、SQL Server へのデプロイに時間がかかる場合に発生します。 接続の既定のタイムアウト値は 15 秒で、クエリの場合はそれぞれ 30 秒です。 大規模なアセンブリを展開する場合、SQL Server バックエンドで実行される CREATE ASSEMBLY ステートメントが返されるまでに 30 秒以上かかる場合があり、「 Symptoms 」セクションで説明されているエラーが発生します。
解決方法
次の手順を使用して、Visual Studio のクエリ タイムアウトと接続タイムアウトの値を増やします。
クエリ タイムアウトの変更
Visual Studio IDE で、 Tools ->Options ->Database Tools ->Query およびビュー デザイナーに移動します。
実行時間の長いクエリのオプションをオフにするかCancel after オプション **** の値を大きい値に変更できます。
接続タイムアウトの変更
Visual Studio IDE で、 View ->Server Explorer に移動して、サーバー エクスプローラーを有効にします。
サーバー エクスプローラーで、CLR オブジェクトが配置されている SQL Server への接続を右クリックし、 Modify Connection を選択します。
Modify Connection ウィンドウで Advanced ボタンを選択します。
Advanced プロパティ ウィンドウで、Initialization セクションの Connect Timeout の値を大きい値に変更します。