0

危険な結果を示している SSRS レポートをデバッグしようとしています。私はSQLプロファイラを使用しています。実行中の正確なクエリを取得しました。これは、exec sp_executesqlで実行されます。

クエリはビューから結果を返しています。

sp_executesql を含めてそのままクエリを実行すると、1 セットの結果が得られます。内部にネストされたクエリを取得して単独で実行すると、別の結果セットが得られます。

これがどのように可能かわかりません。クエリは同一であり、sp_executesql は単純にクエリを実行するという印象を受けました。

不足しているものはありますか、またはこれをさらにデバッグするにはどうすればよいですか?

exec 呼び出しは次のようになります。

exec sp_executesql N'SELECT FirstName, LastName, DateOfBirth FROM ViewName WHERE
  DateOfBirth >= @pStartDate AND DateOfBirth <= @pEndDate',N'@pStartDate datetime, 
  @pEndDate datetime',@pDate='2010-07-17 00:00:00:000',@pEndDate=''2010-07-17
  23:59:59:000'

それを実行すると、1 セットの結果が得られます。

次に、実行した場合:

SELECT FirstName, LastName, DateOfBirth FROM ViewName WHERE 
     DateOfBirth >= '2010-07-17 00:00:00:000' AND
     DateOfBirth <= '2010-07-17 23:59:59:000'

少し異なる結果が得られます。

4

2 に答える 2

1
  • 別のログインで接続している可能性があります。

これは、結果が SUSER_SNAME または別のスキーマ ( dbo.Viewvs OtherSchema.View) に基づくフィルターの影響を受けることを意味します。ビューの中にあるのかもしれません。

  • どこかにNULL/空の文字列の違いがあります

  • 異なるデータベースまたはサーバー

于 2011-10-17T05:18:45.813 に答える
0

クエリをそのまま (一重引用符を 2 倍にして) exec sp_executesql に貼り付け、結果が手動実行と同じであることを確認します。そうでない場合は、日付パラメーターに関係するものであり、同じ場合は、何らかの所有者/セキュリティ項目である可能性があります。

于 2011-10-18T12:13:59.127 に答える