- PR -

ストアドプロシージャ実行時のタイムアウト

投稿者投稿内容
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-12-19 16:52
!!

> ALL_V_0001・AA_V_0004・AA_V_0005・MM_V_0001・MM_V_0002・FI_V_0001

「V」が付いていたので勝手にビューだと思っていました。
きっと複雑な集計クエリなのだろうと。

それでインデックス付きビュー(実データが格納されるビュー)を提案しました。
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-12-19 16:58
運用している環境ですが、
 @SQLサーバー ASAP R/3
となっており、ALL_V_0001・AA_V_0004・AA_V_0005・MM_V_0001・MM_V_0002・FI_V_0001は@上に作成されたAをリンクサーバー先とするビューになります。

 『ALL_V_0001』
  SELECT *
FROM OPENQUERY('SAPR3P','SELECT * FROM ANLA') ・・・リンクサーバーを参照

その為、ビューは同一サーバーに存在していますがテーブルはサーバー外に存在しています。複雑な仕組みなので説明は省略されていただいておりました。

こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-12-20 12:36
> 1回何かのストアドを実行したのでクライアントとサーバーの接続確認が終了し2回目はスムーズに行なえた、といった印象を受けます。

だとすると・・・

1.SQLサーバー側のSAP R/3クライアント相当のプロセス
2.コネクション確立
3.SAP R/3側のサービス

この3つの内のどこかに解決の糸口がありそうですね。

対症療法だが確実なのは上総さんのおっしゃる通り、ダミーのSQLを一回実行しておくことですかね?
あと考えられそうなのは、1.のデータプロバイダをSQLサーバーのインプロセスで起動しておくとか。

的外れだったらごめんなさい。
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-12-21 11:53
こあらさん、コメントありがとうございます。

>1.SQLサーバー側のSAP R/3クライアント相当のプロセス
>2.コネクション確立
>3.SAP R/3側のサービス
これらを調べるにはどのようにしたら良いでしょうか?
プロファイラでストアド実行をトレースしたり、クエリアナライザでトレースを確認したりするのでしょうか?

>1.のデータプロバイダをSQLサーバーのインプロセスで起動しておくとか。
インプロセスで起動しておくというのは具体的にはどのような手法でしょうか?

色々質問ばかりしてすみません、
どうしても原因がつかめない場合にはやはりダミーのSQLを一回実行することも検討してみます。。。
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2007-12-21 12:22
引用:

>1.SQLサーバー側のSAP R/3クライアント相当のプロセス
>2.コネクション確立
>3.SAP R/3側のサービス

これらを調べるにはどのようにしたら良いでしょうか?


私はSQLServerもリンクサーバーも使ったことが無いので明確に回答できません。
参考までに、私ならこの辺りを読むかな?というページを紹介しておきます。

Microsoft SQL Server 2000 の分散クエリ: OLE DB 接続
http://www.microsoft.com/japan/msdn/sqlserver/sql2000/sql_oledbconn.aspx

SQL Server 2000 管理者用ポケット コンサルタント
https://www.microsoft.com/japan/technet/prodtechnol/sql/2000/books/c08ppcsq.mspx

InProcess 許可
http://search.technet.microsoft.com/search/Default.aspx?query=InProcess+%e8%a8%b1%e5%8f%af&brand=technet&locale=&refinement=00&lang=ja-jp
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2007-12-21 13:03
引用:

ともこさんの書き込み(投稿日時: 2007-12-19 16:58)より
運用している環境ですが、
 @SQLサーバー ASAP R/3
となっており、ALL_V_0001・AA_V_0004・AA_V_0005・MM_V_0001・MM_V_0002・FI_V_0001は@上に作成されたAをリンクサーバー先とするビューになります。

 『ALL_V_0001』
  SELECT *
FROM OPENQUERY('SAPR3P','SELECT * FROM ANLA') ・・・リンクサーバーを参照


ビューとしてデータを取得するとしても条件式を切る事は可能ですので、
全件抽出でなく条件抽出の形でビューを作るとよろしいかと思います。

又、今回使用されているストアードは、他のテーブルと連携したりしますか?
独立したものとして扱えるのであれば、クライアントから"そのデータだけ"でも
直接リンク元サーバー(つまりはSAP)を参照する方がよろしいかと思います。

若しくは、SAP側で(出来るかどうかは不明ですが)トリガーを組んで、SQLサーバーと
データの同期を取る方法もあります。
(データの同期を取っていれば、クライアント←SQLServer(全件)←SAP(全件)の
 様にネットワーク上の負荷も減るのではと思います。)

スキルアップ/キャリアアップ(JOB@IT)