Крок завдання SQL запускається як різні акаунти sql


11

Мені цікаво, як налаштувати етап завдання SQL, який буде виконуватися як інший обліковий запис для входу в SQL. Здається, мені потрібно створити новий обліковий запис проксі, який вимагає наявних даних. Коли я створюю обліковий запис, єдиний варіант - використовувати вхідні дані Windows Login.

Робота, яку я намагаюся виконувати, наведена нижче. Є й інші додаткові заяви, але коли я встановлюю крок завдання для запуску в якості входу в SQL, він не працює.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Коли це виконується через крок завдання SQL, він не вдається.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

Мені незрозуміло, чому він намагається отримати доступ до віддаленого сервера, коли всі ці таблиці існують на локальному db.


Крок завдання SQL вже має підключення до екземпляра SQL. Тому вам потрібно змінити існуючий контекст безпеки, а не встановлювати нове з'єднання з паролем. Якщо ви хочете створити нове з'єднання, ви можете скористатися командою sqlcmd або скриптом PowerShell, який може використовувати вхід і пароль SQL як параметри в сценарії. Але ви повинні врахувати, що вам потрібно зробити, і чи буде достатньо збереженого протоколу з власним контекстом.
Роб Фарлі

Відповіді:


15

Якщо ви налаштовуєте етап завдання T-SQL, перейдіть на сторінку «Додаткові сторінки» та налаштуйте «Запустити як користувач» для входу за вашим вибором. введіть тут опис зображення

Якщо ви працюєте з іншими типами кроків завдання, такими як PowerShell, вам буде потрібно налаштувати проксі-акаунт.


Я спробував це, але тепер завдання не вдається сказати: "Доступ до віддаленого сервера заборонено, оскільки поточний контекст безпеки не довіряється". Однак якщо я запускаю скрипт під час входу в систему як користувач, він може запустити його просто чудово. У запиті немає пов'язаного сервера, тому я не розумію, чому він має на увазі віддалений сервер. Будь-які думки?
Джефф Дауді

Якщо ви можете додати до свого питання, що намагається зробити, і точна помилка допомогла б нам вказати на рішення.

У моєму випадку він ігнорував налаштування. Використання SQL 2012.
Мігель Св

1

Використовуйте EXECUTE ASна початку або створіть збережену процедуру, яка виконується у певному контексті.


Це може бути погано. Якщо ви хочете зателефонувати на збережену процедуру з обмеженим користувачем, вона може REVERT отримати права доступу до sysadmin (або власника роботи). Для вирішення проблеми буде використовувати печиво.
Jens W.

Збережена процедура, створена за допомогою параметра EXECUTE AS, буде обробляти ескалацію привілеїв і не дозволяти комусь змінити частину шляху. Якщо немає доступних збережених процедурних файлів, то видання себе за інший логін виконає трюк, як і для EXECUTE AS на початку сценарію.
Роб Фарлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.