FC2ブログ
SQL2005 のストアドの応答が遅い件
未だに理解不能。とりあえず解決したのでいいとしよう。

解決方法
応答速度が遅いストアドを実行する前に、SET ARITHABORT ON クエリを発行する。
このクエリは、実行中にオーバーフローまたは0除算のエラーが発生した場合にクエリを終了する命令。
詳細はここを参照
http://msdn.microsoft.com/ja-jp/library/ms190306.aspx

ADOを使ってDBとセッションが確立すると下記のコマンドが実行される。

-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language 日本語
set dateformat ymd
set datefirst 7
set transaction isolation level read committed

んで、これに SET ARITHABORT ON を加えることになる。
この状態でストアドを実行すると、遅かったストアドが早くなった。
訳分からん('A`)

因みにSQL Management Studio から接続するとこんな感じ。LPCはローカルプロシージャコールかな?
-- network protocol: LPC
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language 日本語
set dateformat ymd
set datefirst 7
set transaction isolation level read committed

パラメータに違いはないあるとしたら、TCPかLPCの違いくらい。
これが原因かなのか…


*********************************************************************************
実験結果

実行:VBScript+ADO
結果:遅い
補足:スクリプトを実行したPCは、DBとは違うサーバー。TCP経由でのアクセス

事項:ADO.NET
結果:遅い
補足:プログラムを実行したPCは、DBとは違うサーバー。TCP経由でのアクセス

実行:SQL Management Studio
結果:早い
補足:DBと同じサーバー。

実行:VBScript+ADO
結果:遅い
補足:DBと同じサーバー。TCP経由でのアクセス
スポンサーサイト
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ