Как вставить имя пользователя в VS2008 (редакция отчета) - PullRequest
0 голосов
/ 03 июня 2019

Я создаю новый отчет (* .rdl), и там я хочу добавить имя пользователя, который запускает скрипт (вставка).

Я пробовал на VS2008 через "встроенные поля""функция" Идентификатор пользователя ", но она не работает:

CREATE TABLE #Some_Table
(
Plan_date date null,
Plan_customer int null,
creator_id nvarchar(55) null
)

INSERT INTO Some_Table
(

[Plan_date] ,
[Plan_customer],
[creator_id]

)
SELECT
@p_plan_monthly,
@p_plan_clients,
@creator_id ="user id" --from built-in-fields

Ожидаемый результат: столбец creator_id заполняется значением имени пользователя из активной директории, которая произвела вставку через мой отчет.

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Повторю мой комментарий, поскольку это невероятно важно: "Вам нужно , чтобы использовать другую учетную запись для доступа к вашим данным @whitefang. Учетная запись sa должна никогда не используйте для чего-то столь же обыденного, как отчет. По правде говоря, его никогда не следует использовать, если вам действительно не нужны sysadmin привилегии или если вы делаете что-то вроде восстановления сервера. У вас должна быть служебная учетная запись, которая может это сделатьсоответствующие задачи, в которых он нуждается. Если вы можете подвергнуться инъекции через эти отчеты, ваша служба - это как открытая книга для всех, у кого есть доступ. "

Теперь к вашей проблеме.Я бы добавил еще один внутренний параметр в ваш отчет.Измените значение параметра на значение по умолчанию =User!UserID;это будет идентификатор пользователя, запустившего отчет (возможно, что-то вроде StackOverflow\Larnu).

Затем сопоставьте этот параметр отчета с параметром набора данных @creator_id и измените оператор INSERT на:

INSERT INTO Some_Table ([Plan_date],
                        [Plan_customer],
                        [creator_id])
VALUES (@p_plan_monthly, @p_plan_clients, @creator_id);
1 голос
/ 03 июня 2019

Q: "и там я хочу добавить имя пользователя, который запускает скрипт (вставка)"

Вы можете использовать эти функции.

-- database user name
SELECT USER_NAME() 
-- login identification name
SELECT SUSER_NAME()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...