0

複数のselectステートメントを含むストアドプロシージャを呼び出すと、SPの外部で同じコードを実行すると期待される結果が返されますが、結果セットに行が表示されません。これは、実稼働環境からのデータベースバックアップが開発サーバーにインストールされるまでに発生し始めました。

以下の例では、EnterpriseManager2008で実行したときに行が返されません。

exec dbo.USP_S_CustomerLimit '00000053-0000-1148-5300-000000000000'

ただし、そのプロシージャ内のすべてのコードを単独で実行すると(選択して「実行」を押すなど)、期待される量の結果行が得られます。

SELECT * FROM CustomerLimit WHERE Department =
(SELECT Department FROM Customer WHERE CustomerID = CONVERT(BINARY(16), CONVERT(UNIQUEIDENTIFIER, '00000053-0000-1148-5300-000000000000')))

また、残念ながらまったく同じように動作するこのコードの変形を試しました。

SELECT CustomerLimit.* FROM CustomerLimit
JOIN Customer ON Customer.Department = CustomerLimit.Department
WHERE Customer.CustomerID = CONVERT(BINARY(16), CONVERT(UNIQUEIDENTIFIER, '00000053-0000-1148-5300-000000000000'))

ある種の正しい問題だと思いますが、どこをチェックすればいいのかわかりません。私はサーバー上のdb_ownerであり、問​​題のデータベースのdb_ownerであるグループにも属しています。この問題の原因は何でしょうか?1つのselect、feだけでテストプロシージャを作成すると、Select * from Customerそのプロシージャを実行したときに正しい結果が得られますが、feと書くSelect * from Customer where CustomerID in (select CustomerID from Customer)と、行が得られません。:(

4

1 に答える 1

0

これら 3 つのテーブルすべてに対する権限/許可があるかどうかを確認してください。これらのテーブルのリストについては、sys.objects を確認してください。

于 2012-05-08T11:34:25.433 に答える