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

Откуда:
Сообщений: 588
Коллеги!

SSIS в одном из шагов должен создать папку на сетевом диске посредством File System Task.
Из среды всё работает на ура.
Сетевой диск (W) замаунтен к серваку, на котором стоит сиквел.

Как только запускаешь пакет из джоба - папка не создается и вываливается ошибка:

Executed as user: SQLserver\serveruser. 
Microsoft (R) SQL Server Execute Package Utility Version 11.0.6020.0 for 64-bit Copyright (C) Microsoft Corporation. All rights reserved.
Started: 09:09:16 Error: 2017-10-27 09:09:16.73
Code: 0xC002F304
Source: Create Dir in Net Storage File System Task
Description: An error occurred with the following error message: "Could not find a part of the path 'W:\DBBackUP\SERVER1\dirTest\'.".
End Error DTExec: The package execution returned DTSER_FAILURE (1).
Started: 09:09:16 Finished: 09:09:16 Elapsed: 0.172 seconds. The package execution failed. The step failed.

Owner у джоба SQLserver\serveruser
Доступ к сетевой папке 'W:\DBBackUP\SERVER1\dirTest\'." есть права вроде бы тоже.

Что посоветуете?
Куда глянуть?
27 окт 17, 10:58    [20905435]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
RegisteredUser
Member

Откуда:
Сообщений: 588
Дополню картину.
Этот пакет запускается на двух серверах.
На одном из них в System Log есть вот такое (на другом этого нет вообще)

К сообщению приложен файл. Размер - 26Kb
27 окт 17, 11:06    [20905481]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
RegisteredUser
Member

Откуда:
Сообщений: 588
Вот что означают эти UUID

К сообщению приложен файл. Размер - 9Kb
27 окт 17, 11:34    [20905620]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
felix_ff
Member

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

под какой учетной запиьсю у вас запускается job?
предполагаю что из под учетки SQLAgent, под которой нет примапленого W:

пишите или полный путь UNC или предварительно запускайте скрипт до шага:

dir W:
IF %ERRORLEVEL% GEQ 1 (net use W: \\somepath)
27 окт 17, 11:37    [20905636]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
RegisteredUser
Member

Откуда:
Сообщений: 588
felix_ff
RegisteredUser,

под какой учетной запиьсю у вас запускается job?
предполагаю что из под учетки SQLAgent, под которой нет примапленого W:

пишите или полный путь UNC или предварительно запускайте скрипт до шага:

dir W:
IF %ERRORLEVEL% GEQ 1 (net use W: \\somepath)


Вы правы коллега!
ранится оно под
Executed as user: NT Service\SQLSERVERAGENT

пробовал задать путь как \\10/1/1/23\Bak$\newDir
не помогло

может как-то накинуть права для NT Service\SQLSERVERAGENT ?
но я что-то не вижу это юзера в списке.

и еще: Ваш скрипт... не очень понял куда его запихать?
27 окт 17, 12:51    [20906085]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
Владислав Колосов
Member

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

пакеты SSIS, выполняемые агентом всегда запускаются от имени учётки агента. Создайте доменную для агента учетку с нужными правами, если нужен доступ в сеть и настройте агента на запуск от этой УЗ.
27 окт 17, 13:05    [20906195]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Вообще, если у вас публичный сервер, то сразу настраивайте ему доменные технологические учетки для запуска сервисов.
27 окт 17, 13:06    [20906204]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
felix_ff
Member

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

это скрипт оболочки cmd-shell, можете его в .bat файл сохранить и дергать отдельным шагом в пакете.

NT SERVICE - это значит вам необходимо дать права на сетевую папку для учетной записи компа на котором установлен сервер.
учетка будет вида COMPUTERNAME$

а лучше сделать для агента отдельную доменную учетную запись и уже нормально рулить правами именно для этой учетки.
ну или используйте прокси-учетку
27 окт 17, 13:07    [20906218]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Владислав Колосов
пакеты SSIS, выполняемые агентом всегда запускаются от имени учётки агента
если не настроен прокси
27 окт 17, 13:16    [20906274]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
А кто мешает:
1. Создать прокси EXEC msdb.dbo.sp_add_proxy....
2. Дать ему права на SQLCmd by msdb.dbo.sp_grant_proxy_to_subsystem...
3. Привязать доменного юзера EXEC msdb.dbo.sp_grant_login_to_proxy...
4. Дать этому юзеру создавать папку на сервере.
5. Запустить степ джоба от имени прокси?
Это ж вроде мелкософтовски-рекомендуемый вариант. Не?
27 окт 17, 15:56    [20907179]     Ответить | Цитировать Сообщить модератору
 Re: SSIS & File System Task: создание папки на сетевом диске  [new]
RegisteredUser
Member

Откуда:
Сообщений: 588
Победили мы это зло.
Заработало все на обоих серверах, НО с некоторой разницей, которую я тут опишу, ибо мож кому надо будет.
Итак, от SSIS пришлось отказаться и писать все на SQL.
Задача стояла следующая: бекапить базы данных и складывать их на сетевую шару в определенные папки, которые надо было создавать для каждой БД.
Ничего не предвещало беды, но SSIS при запуске его через job напрочь отказывался видеть шару и создавать там папки.

Чтобы все было хорошо, шару надо прикручивать непосредственно в скрипте перед запуском бекапа.
Код ниже
declare @NetPathBkp nvarchar(500) = '\\NETSHARE\backup$' -- other server required the '\\10.x.x.xx\\backup$'
		,@LocalPathBkp nvarchar(500) = 'DBBackUP\SERVER1'
		,@UserName  nvarchar(500) = 'SERVER1\poweruser'
		,@UserPwd  nvarchar(500) = 'xxxxxx'
		,@DrvName nvarchar(3) = 'W:'
		,@PathMount  nvarchar(500) = ''
		,@PathBkp  nvarchar(500) = ''
		,@ReturnCode int = 0

Set @PathMount = CONCAT('NET USE ', @DrvName,' ',@NetPathBkp, ' ', @UserPwd, ' /USER:', @UserName,' /PERSISTENT:NO');
print @PathMount -- NET USE W: \\NETSHARE\backup$ xxxxxx /USER:SERVER1\poweruser /PERSISTENT:NO

		EXEC @ReturnCode = xp_cmdshell @PathMount

			if (@ReturnCode = 0)
				begin
					print 'Folder is mounted Ok'

					-- TODO any tasks

					Set @PathBkp = concat(rtrim(ltrim( @DrvName )) , '\' ,  rtrim(ltrim( @LocalPathBkp))+'\', 'NewFolderBAK')
					EXECUTE master.dbo.xp_create_subdir @FolderBkp 

					-- ........	

				end
			else
				begin
					print 'Folder is NOT mounted'
				end


-- ........				


-- UNmount drive after all tasks
		Set @PathMount =  'NET USE ' + @DrvName + ' /delete /y' 
		EXEC @ReturnCode = xp_cmdshell @PathMount
		if (@ReturnCode = 0)
			begin
				print 'UNmounted Ok'
			end
		else
			begin
				print 'ERROR: Folder is NOT UNmounted'
			end
30 ноя 17, 17:10    [20996153]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить