Как использовать User! UserID для ограничения данных на сервере отчетов - PullRequest
1 голос
/ 24 марта 2012

У меня есть таблица «Пользователь», в которой каждый пользователь сопоставляется с данными, которые ему разрешено видеть.

Несколько будущих отчетов будут использовать эту таблицу User, и я хотел бы перейти к наилучшему подходу, чтобы использовать глобальную переменную User! UserID.

В предварительном отчете, который я настроил, используется хранимая процедура с параметром @myUser - в Sproc данные ВНУТРЕННО ПОДКЛЮЧЕНЫ к таблице User, а в предложении WHERE я ограничиваю данные с помощью @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 

В отчете я использую этот Sproc в качестве набора данных, а затем создаю параметр @myUser - в разделе значений по умолчанию для параметра @myUser я использую выражение User! UserID. Также я делаю этот параметр скрытым.

Это лучший подход?

1 Ответ

1 голос
/ 26 марта 2012

Ваш подход правильный, у меня просто 2 небольших изменения:

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 y.CustomerKey = x.CustomerKey
WHERE       @myUser = y.LoginName
...