1
各ユーザーを表示できる「ユーザー」テーブルがあります。User!UserIDを使用してレポートサーバーのデータを制限する方法
今後のレポートでは、このUserテーブルを使用する予定であり、グローバル変数User!UserIDを利用する最良の方法を進めていきたいと思います。
私が設定した探索的なレポートでは、パラメータ@myUserを持つストアドプロシージャが使用されています.SprocではデータはINNER JOINEDがUserテーブルに、WHERE句では@myUserでデータを制限します。
私はデータセットとしてこのSPROCを使用し、これはその後、@myUserパラメータを作成し、報告書の中でCREATE PROCEDURE [dbo].[pr_SSRS_Dly_Data]
@myUser VARCHAR(50)
AS
SELECT
x.[Date]
, x.Product
, x.Amount
FROM
WHReports.dbo.tb_Dly_Data x
INNER JOIN WHReports.dbo.tb_Users y
ON
x.CustomerKey = y.CustomerKey
WHERE 1 = CASE WHEN (@myUser = y.LoginName) THEN 1 ELSE 0 END
- !@myUserパラメータのデフォルト値のセクションでは、私が表現ユーザーを使用しユーザーID。また、私はこのパラメータを非表示にします。
これが最善のアプローチですか?
JOINのaswellに誤りがありますように見える - それはデカルトかもしれないと思うが。私はエイリアスの1つを修正します – whytheq
他のクエリでは "WHERE 1 = CASE WHEN ...."という構造体を使用しましたが、上記のような必要性はほとんどありません。もし私がパラメータをNULL可能にしたいのであれば、CASEは元のクエリに "WHEN NULL THEN 1"という文字列を追加することもできます。 – whytheq
また、セキュリティのために、メインデータクエリのパラメータを再チェックする必要があります。パラメータを提供するクエリ(ユーザーは、IDに関係なく、有効なパラメータを提供するためにURLアクセスを使用できます)。 –