1

2 つのさまざまな方法で同じ選択を実行しようとしています。

最初に、ストアド プロシージャを使用したテーブル値関数を介して

SELECT * FROM dbo.DF_PRODUCTS();

openqueryストアド プロシージャの実行による2 番目の経由

SELECT * 
FROM openquery([servername], 
               'SET FMTONLY OFF exec DatabaseName.dbo.My_StoredProcedure')

問題は、さまざまな結果が得られることです。問題はストアド プロシージャ キャッシュにあると思います。誰でもこれで私を助けることができますか?

4

1 に答える 1

0

まったく同じコードを実行しても異なる結果が得られ、「唯一の」(認識された) 違いは、OPENQUERY コマンドを使用して実行していることだけである場合は、健全性チェックを行い、OPENQUERY([servername]... ) は間違いなく、最初のクエリと同じサーバーに対して実行されています。

最も可能性の高いシナリオは、リンク サーバーが、ローカルで実行しているサーバーとは異なることです。たとえば、ローカル データベースに対して実行しているのに対し、開発/テスト/ステージング/ライブ データベースに対して実行している場合です。

于 2012-12-22T20:50:20.200 に答える