Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Использую пакеты SSIS со встроенным скриптом. Скрипт копирует файлы из "расшаренных" папок, на локальный диск. Но столкнулся с непониманием с какими правами запускается скрипт. Пакет я запускаю из хранимой процедуры на транзакте.
Получается что когда пакет запускается от имени доменного пользователя, из под которого запущен сервер все копируется без проблем. Но когда я запускаю пакет от своего имени (хотя права на файлы у меня тоже есть), то у меня получается ошибка доступа.

Поясните пожалуйста под чьими правами запускаются скрипты в пакете? И каким образом можно сделать чтобы они запускались с правами пользователя, который подключился к базе данных?
(Sql Server 2017)
15 мар 19, 15:48    [21833996]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Причем если запустить пакет через задание (job), то он тоже корректно отрабатывает и копирует файлы
17 мар 19, 16:28    [21835275]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
lex452,

Запускайте свою хранимку тоже через job, вроде как это единственный способ заставить работать имперсонацию
17 мар 19, 17:47    [21835294]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
Точнее так job->ssis(run as login)->stored procedure->ssis
17 мар 19, 17:51    [21835296]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Alexander Titkin,

проблема в том что пакет с параметрами, и как я понимаю нужно под каждое изменение параметров создавать новое задание, а это подход мне не нравится. Пользователь через ПО запускает хранимку которая запускает пакет с параметрами. А реализовывать это через JOB мне кажется костылем
17 мар 19, 17:54    [21835298]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Нужно попробовать использовать пользователей уровня приложения, если получится отпишусь
17 мар 19, 17:55    [21835299]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
lex452,

Параметры может читать ваша хранимка из таблицы( по сути очередь) и запускать с ними пакет. Приложение просто пихает задачу в очередь.
По окончании выставляет задаче Выполнено.

Если это не подходит, то копайте в сторону делигирования, double hop и т.п. Проблема именно с этим. Возможно, у вас получится заставит integration servises пробрасывать учетку, запустившую хранимку.
17 мар 19, 18:42    [21835314]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4680
lex452,

Любая операция делается под каким-то юзером. Пакет запускается либо под юзером службы SSIS, либо если вы специально настраивали, то под конкретным оператором.

Эти юзера должны иметь права на файловую систему, в которую лезет пакет.

Лучше всего создать специального юзера, сделать под него оператора и дать ему права на папки.
18 мар 19, 12:30    [21835794]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
a_voronin,

Юзера доменного или sql сервера? Как я дам серверному пользователю права на папку? Повторюсь что мне нужно запускать пакет из транзакта
18 мар 19, 12:43    [21835811]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4680
lex452
a_voronin,

Юзера доменного или sql сервера? Как я дам серверному пользователю права на папку? Повторюсь что мне нужно запускать пакет из транзакта


Вы делаете распределенной приложение и пока оно не будет работать под доменным юзероми и пока вы дадите ему права, то ничего работать не будет.

Вы понимаете, что есть служба и что она работает под аккаунтом? И что доступ в папку должен быть дан этому аккаунту. И ещё есть оператор -- знаете, что это такое?
18 мар 19, 13:27    [21835889]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
a_voronin,

К базе пользователь подключается по windows аутентификации, а что такое оператор я не знаю
18 мар 19, 13:35    [21835908]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1346
lex452,

по памяти:
запуск ssis пакета это трансляция запуска DtExec.exe в операционную систему.
если осуществляется запуск из t-sql аля exec ssisdb.start_execution то у вас DtExec запустится из под учетки службы SQL Server

если запускаете джобом SQL Agent, то там в зависимости от того настроено ли использование учетных данных для шага задания.
18 мар 19, 14:18    [21835969]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 551
lex452
Пакет я запускаю из хранимой процедуры на транзакте.

А как вы его запускаете. Через выполнение dtexec в shell, или через создание executiщт в ssisdb и запуска ее потом?
18 мар 19, 15:21    [21836097]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Ferdipux,

Через execution id. Просто ситуация дурацкая. Я подключаюсь к серверу под своим доменным пользователем, права на файлы у меня есть. Но скрипт пакета их не копирует
18 мар 19, 19:40    [21836487]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Добавлю пару моментов, которые окончательно ставят меня в тупик.

Создал скрипт в пакете, который показывает имя пользователя и копирует файл по сетевому пути на локальный диск.
Пакет запускаю через transact-sql. Подключаюсь к серверу под доменной учеткой.
Когда запускаю на своем компьютере, получаю ошибку нет доступа к файлу,
когда захожу на сервер через удаленный рабочий стол, тоже под своей доменной учеткой, и выполняю скрипт запуска пакета, то файл копируется.
В обоих случаях скрипт выводит мое доменной имя пользователя. Пакет развернут в SSIS catalog.

Не понимаю как такое возможно, что под одной и той же учеткой, на одном и том же SQL сервере получаются разные результаты???
23 мар 19, 16:45    [21841711]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
lex452
Добавлю пару моментов, которые окончательно ставят меня в тупик.

Создал скрипт в пакете, который показывает имя пользователя и копирует файл по сетевому пути на локальный диск.
Пакет запускаю через transact-sql. Подключаюсь к серверу под доменной учеткой.
Когда запускаю на своем компьютере, получаю ошибку нет доступа к файлу,
когда захожу на сервер через удаленный рабочий стол, тоже под своей доменной учеткой, и выполняю скрипт запуска пакета, то файл копируется.
В обоих случаях скрипт выводит мое доменной имя пользователя. Пакет развернут в SSIS catalog.

Не понимаю как такое возможно, что под одной и той же учеткой, на одном и том же SQL сервере получаются разные результаты???
Хм, какая то фантастическая история :-)

1. Так, значит, скрипт - это скрипт-таск в dts пакете, да? В нём на C# что то написано.

2. "Показывает имя пользоователя" - куда показывает, пишет в какую то таблдицу/лог?

3. "Пакет запускаю через transact-sql" - это что значит? Например, xm_cmdshell 'DTExec.exe ...'? Или ещё как то?

4. "Когда запускаю на своем компьютере" - имеется в виду "запускаю SSMS на своем компьютере и запускаю пакет тем же скриптом на transact-sql"?

5. "захожу на сервер через удаленный рабочий стол ... выполняю скрипт запуска пакета" - имеется в виду "запускаю SSMS и запускаю пакет тем же скриптом на transact-sql"?
23 мар 19, 19:25    [21841751]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
lex452
Ferdipux,

Через execution id.
Это не ответ на вопрос "А как вы его запускаете?".
Если вслух произнести "execution id", пакет не запустится, явно нужно что то ещё сделать :-)
23 мар 19, 19:27    [21841753]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
Хм, какая то фантастическая история :-)

1. Так, значит, скрипт - это скрипт-таск в dts пакете, да? В нём на C# что то написано.

2. "Показывает имя пользоователя" - куда показывает, пишет в какую то таблдицу/лог?

3. "Пакет запускаю через transact-sql" - это что значит? Например, xm_cmdshell 'DTExec.exe ...'? Или ещё как то?

4. "Когда запускаю на своем компьютере" - имеется в виду "запускаю SSMS на своем компьютере и запускаю пакет тем же скриптом на transact-sql"?

5. "захожу на сервер через удаленный рабочий стол ... выполняю скрипт запуска пакета" - имеется в виду "запускаю SSMS и запускаю пакет тем же скриптом на transact-sql"?[/quot]
Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx',
    @execution_id=@execution_id OUTPUT,
    @folder_name=N'Deployed Projects',
      @project_name=N'Integration Services Project1',
    @use32bitruntime=False,
      @reference_id=Null
Select @execution_id
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,
    @object_type=50,
      @parameter_name=N'LOGGING_LEVEL',
      @parameter_value=@var0
EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO


1. Да скрипт на C#
2. Я создаю файл с именем пользователя File.Create(Environment.UserName)
3. Привел пример выше
4. Да, запускаю SSMS на своем компьютере и запускаю пакет тем же скриптом на transact-sql
и второй вариант запускаю SSMS на самом сервере к которому подключен через удаленный рабочий стол и запускаю пакет тем же скриптом на transact-sql
23 мар 19, 19:58    [21841762]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
lex452
4. Да, запускаю SSMS на своем компьютере и запускаю пакет тем же скриптом на transact-sql
и второй вариант запускаю SSMS на самом сервере к которому подключен через удаленный рабочий стол и запускаю пакет тем же скриптом на transact-sql
На всякий случай, добавьте в начало скрипта такую строчку, а то мало ли что :-)
select @@SERVERNAME, SUSER_NAME(), SYSTEM_USER
23 мар 19, 21:37    [21841778]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
alexeyvg
lex452
4. Да, запускаю SSMS на своем компьютере и запускаю пакет тем же скриптом на transact-sql
и второй вариант запускаю SSMS на самом сервере к которому подключен через удаленный рабочий стол и запускаю пакет тем же скриптом на transact-sql
На всякий случай, добавьте в начало скрипта такую строчку, а то мало ли что :-)
select @@SERVERNAME, SUSER_NAME(), SYSTEM_USER

Не совсем понимаю, зачем? Имя сервера и так известно, а скрипт я запускаю под одним и тем же пользователем.
я проверял ORIGINAL_login он одинаковый.
23 мар 19, 21:42    [21841780]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
lex452
Не совсем понимаю, зачем? Имя сервера и так известно, а скрипт я запускаю под одним и тем же пользователем.
я проверял ORIGINAL_login он одинаковый.
Вот именно что бы проверить, что эти 2 запуска делаются под одним пользователем и на одном сервере. И не убирать эту строчку из скрипта (пока проблема не будет решена).

В 99% случаев такое заканчивается через 3 дня исследований тем, что "ой, а я же на другом сервере запустил", "ой, а я же там под другим логином".
Но можно, конечно, не вставлять, съэкономить 2 секунды, и заняться дизассемблированоем ядра :-)
23 мар 19, 21:55    [21841787]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
alexeyvg,

Хорошо, я попробую. Просто этот пакет развернут только на одном сервере. И я подключаюсь под доменным пользователем, так как пользователей sql там в принципе нет
23 мар 19, 21:58    [21841788]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31328
lex452
Просто этот пакет развернут только на одном сервере. И я подключаюсь под доменным пользователем, так как пользователей sql там в принципе нет
Понятно. Ну мало ли.

Да, а как вы получаете ошибку? В логах выполнения смотрите? Вдруг смотрите не те логи/не последние записи?
23 мар 19, 22:03    [21841789]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
alexeyvg
lex452
Просто этот пакет развернут только на одном сервере. И я подключаюсь под доменным пользователем, так как пользователей sql там в принципе нет
Понятно. Ну мало ли.

Да, а как вы получаете ошибку? В логах выполнения смотрите? Вдруг смотрите не те логи/не последние записи?

Я в скрипте File.Copy обернул в try catch, так и получаю ошибку доступа. ex.Message пишу в файл, вот и вся магия. В логи вообще не смотрю
23 мар 19, 22:07    [21841790]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с правами в скрипте пакета SSIS  [new]
lex452
Member

Откуда:
Сообщений: 548
alexeyvg
lex452
Просто этот пакет развернут только на одном сервере. И я подключаюсь под доменным пользователем, так как пользователей sql там в принципе нет
Понятно. Ну мало ли.

Да, а как вы получаете ошибку? В логах выполнения смотрите? Вдруг смотрите не те логи/не последние записи?

Проверил как вы предложили. В обоих вариантах все одинаково. Если вдруг важно, проблема возникает только с сетевыми ресурсами. То есть когда поменял еще и конечный путь на сетевой диск, скрипт начал ругаться и на него
25 мар 19, 12:57    [21842692]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить