Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 net use and xp_cmdshell  [new]
guestsql
Guest
Здравствуйте !
Выполнется ежедневное копирование backupSet
на другую станцию в сети. Эта операция оформлена как Job.

Step 1 (CmdExec) :: net use \\disp\arData <password>

Step 2 (Script TSQL) :: exec masterclass.dbo.backupcopy
'e:\backup\ferrari\transport', '\\disp\arData\backup\ferrari',
'e:\backup\ferrari\alternative'

Step 3 (CmdExec) :: net use \\disp\arData /delete

При этом процедура masterclass.dbo.backupcopy в упор не видит ресурс \\disp\arData и выполняет копирование в альтернативную папку.
Пришлось использовать .bat файлы. С .bat файлами работает.

Текст masterclass.dbo.backupcopy такой:

CREATE procedure dbo.backupcopy
(@source varchar(127), @maintarget varchar(127), @reserve varchar(127))
as
declare @result int, @dir varchar(8), @target varchar(48), @cmd varchar(255)

set nocount on
set @result = 0

set @dir = dbo.datetosql(getdate()) -- дата как yyyymmdd

-- проверка доступа
set @target = @maintarget
set @cmd = 'dir ' + @target + '\*.*'
exec @result = master.dbo.xp_cmdshell @cmd, no_output
if @result <> 0 begin
set @target = @reserve
set @cmd = 'dir ' + @target + '\*.*'
exec @result = master.dbo.xp_cmdshell @cmd, no_output
if @result <> 0
return -1 -- not access to target
end

set @cmd = 'mkdir ' + @target + '\' + @dir
exec @result = master.dbo.xp_cmdshell @cmd, no_output

-- проверка доступа
set @cmd = 'dir ' + @target + '\' + @dir + '\*.*'
exec @result = master.dbo.xp_cmdshell @cmd, no_output
if @result <> 0
return -2 -- not access to target folder

-- собственно копирование
set @cmd = 'copy ' + @source + '\*.* ' + @target + '\' + @dir + '\*.*'
exec @result = master.dbo.xp_cmdshell @cmd, no_output
if @result <> 0
return -3 -- copying error
return @result
GO

Чего -то я не правильно делаю. Почему в процедуре xp_cmdshell общий ресурс не доступен ?
19 ноя 04, 06:01    [1118929]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
what account is used for sql server - local or domain?
Do you have Agent proxy account set up?
19 ноя 04, 06:37    [1118946]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
guestsql
Guest
2 BugsBunny
used local account.
Agent proxy account not setup.
Но с .bat файлами всё работает.
19 ноя 04, 06:53    [1118963]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А .bat файлы канешна лежат локально на сервере?
19 ноя 04, 06:57    [1118966]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
guestsql
Guest
2 tpg
.bat файлы канешна лежат локально на сервере.
19 ноя 04, 07:23    [1118986]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
guestsql
2 tpg
.bat файлы канешна лежат локально на сервере.
Тогда, очень внимательно читаем вот здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_xp_aa-sz_4jxo.asp
19 ноя 04, 07:29    [1118993]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
guestsql
Guest
2 tpg
там всё написано!
... Execute permissions for xp_cmdshell default to members of the sysadmin fixed server role, but can be granted to other users. ...

и так далее...
Спасибо !
19 ноя 04, 08:15    [1119032]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Там ещё есть фраза:

When you grant execute permissions to users, the users can execute any operating-system command at the Microsoft Windows NT® command shell that the account running Microsoft SQL Server™ has the needed privileges to execute.

Так что, если локаль, то она не имеет доступа в сетку, если доменный акаунт, то будет исполнена от "лица" этого аккаунта (BugsBunny же на это и намекал)...
19 ноя 04, 08:32    [1119055]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
guestsql
Guest
2 tpg
Значит, нужно сделать account, под которым стартует ОС windows и (у меня так сделано) под которым стартует sql Server, членом домена ?
Чтобы от "лица" этого аккаунта (BugsBunny же на это и намекал)...
добраться до общего ресурса ?
19 ноя 04, 09:23    [1119149]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
guestsql
2 tpg
Значит, нужно сделать account, под которым стартует ОС windows и (у меня так сделано) под которым стартует sql Server, членом домена ?
Чтобы от "лица" этого аккаунта (BugsBunny же на это и намекал)...
добраться до общего ресурса ?
Для оси по барабану, а вот для sql - да, обязательно, чтоб был доступ в сетке.
В той статье ещё рассказывается как разрулить и для юзеров чуть ниже (опять же - про это тоже намекал BugsBunny )
19 ноя 04, 09:42    [1119201]     Ответить | Цитировать Сообщить модератору
 Re: net use and xp_cmdshell  [new]
guestsql
Guest
2 tpg
Спасибо !
пошел запускать.
19 ноя 04, 10:11    [1119307]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить