C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: SQL Server


(過去ログ 51 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■27754 / inTopicNo.1)  SQL Server
  
□投稿者/ じゅで (99回)-(2008/11/13(Thu) 20:01:22)

分類:[ASP.NET (C#)] 

じゅでです。

いつもお世話になっております。

今回の質問は、以下のようなものとなります。
ご回答よろしくお願い致します。

現在以下のような、SQL文をSqlCommandを使用して発行しています。

INSERT INTO Table1(ColumnName)
SELECT ColumnName FROM リンクサーバのView

ここで、疑問があります。

SqlCommandを使用した場合、SqlCommand.CommandTimeoutのプロパティの値のみに
影響され、サーバのクエリタイムアウト設定、リンクサーバのクエリタイムアウト設定などが、
反映されません。

私の環境がおかしいのでしょうか?
それとも、SqlCommandを使用した場合は、CommandTimeoutの値にのみ影響されるのでしょうか?

SQL Serverの値に影響される場合は、どのような設定が必要となるのでしょうか?

ご回答よろしくお願い致します。

環境
.NET Framework 2.0
SQL Server 2005

以上





引用返信 編集キー/
■27795 / inTopicNo.2)  Re[1]: SQL Server
□投稿者/ オショウ (57回)-(2008/11/14(Fri) 17:57:24)
> SqlCommandを使用した場合、SqlCommand.CommandTimeoutのプロパティの値のみに
> 影響され、サーバのクエリタイムアウト設定、リンクサーバのクエリタイムアウト設定などが、
> 反映されません。
>
> 私の環境がおかしいのでしょうか?
> それとも、SqlCommandを使用した場合は、CommandTimeoutの値にのみ影響されるのでしょうか?

  各々の設定が明記されていませんが、リンクサーバー側を無制限?にしても
  ローカル側にタイムアウト値が設定されているSqlCommandを実行すれば、先
  にローカル側があきらめるので、正しいかと。

  私もリンクサーバー経由でのSQL操作をバシバシやっていますが、長時間
  ロックしてしまうような場合を避けたいので、極力タイムアウト時間は短め
  に設定して操作しています。

以上。
引用返信 編集キー/
■27869 / inTopicNo.3)  Re[2]: SQL Server
□投稿者/ じゅで (100回)-(2008/11/17(Mon) 09:05:35)
ご返信ありがとうございます。
返事が遅くなりまして、申し訳ございません。

No27795 (オショウ さん) に返信
>   各々の設定が明記されていませんが、リンクサーバー側を無制限?にしても
>   ローカル側にタイムアウト値が設定されているSqlCommandを実行すれば、先
>   にローカル側があきらめるので、正しいかと。
>
>   私もリンクサーバー経由でのSQL操作をバシバシやっていますが、長時間
>   ロックしてしまうような場合を避けたいので、極力タイムアウト時間は短め
>   に設定して操作しています。

現在の状態は、
サーバ1
 クエリタイムアウト 30秒

サーバ2(サーバ1から設定されているサーバ)
 クエリタイムアウト 30秒

SqlCommandのタイムアウト
 無制限(0) // もちろん本番では、長めに時間をとるだけで、実際は、無制限にはしませんが、動作確認のため、現在無制限に。

上記の設定でも、サーバ側の設定値が反映されていなければ、
おかしいと言う事でしょうか?

現在、サーバ側の設定が無視されており、プロファイラで実行開始時間と実行終了時間で、
記載されたとおりの時間で、処理が確認され、プログラムの応答が戻ってきて、
処理が正常終了しているのですが、この状態がすでにおかしいという事でしょうか?

以上

引用返信 編集キー/
■27871 / inTopicNo.4)  Re[3]: SQL Server
□投稿者/ .SHO (48回)-(2008/11/17(Mon) 09:36:40)
No27869 (じゅで さん) に返信

> サーバ1
>  クエリタイムアウト 30秒
>
> サーバ2(サーバ1から設定されているサーバ)
>  クエリタイムアウト 30秒
>
> SqlCommandのタイムアウト
>  無制限(0)
>
> 現在、サーバ側の設定が無視されており、プロファイラで実行開始時間と実行終了時間で、
> 記載されたとおりの時間で、処理が確認され、プログラムの応答が戻ってきて、
> 処理が正常終了しているのですが、この状態がすでにおかしいという事でしょうか?

プロファイラの実行開始時間と実行終了時間というのはよくわからないのですが
SqlCommandを無制限にしても、処理が戻るのならサーバの設定が効いてるのでは
ないでしょうか?
引用返信 編集キー/
■27891 / inTopicNo.5)  Re[3]: SQL Server
□投稿者/ はつね (875回)-(2008/11/17(Mon) 12:23:23)
はつね さんの Web サイト
No27869 (じゅで さん) に返信
> 現在の状態は、
> サーバ1
>  クエリタイムアウト 30秒
>
> サーバ2(サーバ1から設定されているサーバ)
>  クエリタイムアウト 30秒
>
> SqlCommandのタイムアウト
>  無制限(0) // もちろん本番では、長めに時間をとるだけで、実際は、無制限にはしませんが、動作確認のため、現在無制限に。

この状態でどのような動きになるのでしょうか。最初の質問の内容からすると
|サーバのクエリタイムアウト設定、リンクサーバのクエリタイムアウト設定などが、
|反映されません。
という事なので、30秒たっても応答がなく、例えば1分後にSQLの実行が終わるまで待
たされるという現象なのでしょうか。
それは、サーバ側のタイムアウトはデフォルトタイムアウトであり、それに対して、
このクエリだけは特別にタイムアウトしないのを明示して実行していることだからじゃ
ないのでしょうか(未確認ですが)。

引用返信 編集キー/
■28355 / inTopicNo.6)  Re[4]: SQL Server
□投稿者/ じゅで (101回)-(2008/11/25(Tue) 10:21:25)
回答が遅れて申し訳ございません。

まずは、結果からお伝えいたします。

SqlServerへのSQL文発行時に使用する、タイムアウトは、SqlCommandのCommandTimeoutを使用します。
リンクサーバを使用して、問い合わせのサーバからリンクサーバを見るようなSQL文を記載していたとしても、
SqlCommandのCommandTimeoutが優先されます。

環境は、SQL Server 2005/.NET Framework 2.0です。

想像していた動きとしては、リンクサーバ側へのタイムアウトは、サーバ設定値となるのかなぁ〜と考えていたのですが、
そんな事は、ないそうです。

というのが、MSからの回答でした。
いんしでんときっちゃいましたorz

なので、SQL Serverでの設定は、不要との事でした。

なので、はつねさん

> それは、サーバ側のタイムアウトはデフォルトタイムアウトであり、それに対して、
> このクエリだけは特別にタイムアウトしないのを明示して実行していることだからじゃ
> ないのでしょうか(未確認ですが)。

この回答がどんぴしゃです。

ありがとうございました。
引用返信 編集キー/
■28356 / inTopicNo.7)  Re[5]: SQL Server
□投稿者/ じゅで (102回)-(2008/11/25(Tue) 10:21:53)
解決済みチェック忘れました。orz
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -