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

Откуда: Москва
Сообщений: 93
Добрый день, коллеги.
Нужна помощь с разрешением проблемы с созданием резервных копий в сетевых каталогах. Ситуация следующая:
SQL на машине работает под NT Service, компьютер, на котором SQL, имеет права на шару полные.
На SQL при старте запускается хранимка, которая делает бэкап. Так вот - при автоматическом ее запуске ошибка, если запускаю вручную - все хорошо.
Помогите разрешить проблему..
11 сен 17, 13:47    [20786703]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
КусокАналитика
Guest
"Так вот - при автоматическом ее запуске ошибка" - автоматический запуск делаете с помощью чего? у SQL Agent своя учетная запись.

NT Service на удаленной шаре может быть никто и завоут его никак.

Если есть возможность вставьте в начало своей "хранимки" или ее вызова команду "whoami" поймете в контексте какой учетной записи идет вызов.
11 сен 17, 13:53    [20786741]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
автоматический запуск делаю с помощью sp_procoption. Агента нет, SQL Server Express 2008 R2
11 сен 17, 13:57    [20786754]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
При добавлении 'select suser_name()' показывает 'sa'.
Однако, вот такие нюансы:
если я меняю контекст вызова хп на sa, то выполняет нормально. Если я выдаю команду 'execute as user = 'dbo'', процедура на зарос 'select suser_name()' показывает 'sa', но директория уже недоступна.
11 сен 17, 14:10    [20786806]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
Виталий Перевозчиков
Member

Откуда:
Сообщений: 40
Какой путь до шары используете?
Права на шару есть у учетки? не знаю как с NT Service, проще запускать SQL Server от доменной УЗ и права на шару ей выдавать.
11 сен 17, 14:22    [20786861]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Компьютер с SQL: msk-pc1
Шара: \\msk-pc2\backup

У компьютера msk-pc1 есть права на чтение и изменение на шару \\msk-pc2\backup
11 сен 17, 14:38    [20786947]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
Massa52
Member

Откуда:
Сообщений: 379
gerogekochkin,
У компьютера права на запись могут быть. Но пишет то беккап не компьютер.
Напрягись и подумай - кто же беккапом занимается?
11 сен 17, 15:04    [20787073]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
вау, так вот кто у нас на dba.stackexchange есть George K!
нехорошо, товарищ, умалчивать определенные факты.
у него не бэкап обламывается, а Ola Hallengren-ская проца,
с юзерским мессаджем:
автор
Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 786 [Batch Start Line 0] The directory \*** does not exist

угадайте, что это за строка такая в процедуре?
а это проверка существования пути на шаре, и проверка с помощью недокументированной
xp_fileexist

а у этой процедурки известное issue с проверкой на шаре, когда под сисадмином выполняется.

но мне нравится, как что-то добавляется/скрывается в зависимости от целевой аудитории.
а вот и оригинал вопроса:
Ola Hallengren DatabaseBackup error on locating Windows directory
11 сен 17, 15:41    [20787293]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
да причем тут целевая аудитория???!!!
а что насчет вот этого нюанса? -

если я меняю контекст вызова хп на sa, то выполняет нормально. Если я выдаю команду 'execute as user = 'dbo'', процедура на зарос 'select suser_name()' показывает 'sa', но директория уже недоступна.
11 сен 17, 15:48    [20787341]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
gerogekochkin
да причем тут целевая аудитория???!!!


при том, что на том форуме вывалена и ошибка, и контекст, а на нашем -- сплошное введение в заблуждение
gerogekochkin
а что насчет вот этого нюанса? -
если я меняю контекст вызова хп на sa, то выполняет нормально. Если я выдаю команду 'execute as user = 'dbo'', процедура на зарос 'select suser_name()' показывает 'sa', но директория уже недоступна.

а вот все просто, надо документацию читать.
не бывает with execute as login, есть только лишь execute as user.
а почему?
а потому, что если только база не трастворсная, вы сами себя ограничили, написав execute as user
теперь вы только ЮЗЕР в контексте процедуры, и ни разу не логин.
а то, что вам выдает suser_name() = sa,
так это потому, что овнер вашей базы sa.
вот его и выдает.
а сделайте теперь
select * from sys.fn_my_permissions(null, 'server')

и убедитесь, что никаких серверных прав и в помине нет
11 сен 17, 16:00    [20787385]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
ладно, товарищ, не обижайся.
не делай процедуру с with execute as 'dbo'.
напиши внутри процедуры
execute as login = 'sa'

и вот это уже будет настоящий sa.
EXECUTE AS CLAUSE <> EXECUTE AS STATEMENT
11 сен 17, 16:16    [20787470]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
o-o,
спасибо.
Свет пролился.
Тест пройдет завтра)
11 сен 17, 16:24    [20787507]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
gerogekochkin,
там такое дело еще...если исполнитель процедуры (логин) не имеет имперсонэйта на sa,
он получит об этом ошибку.
11 сен 17, 16:34    [20787554]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
а права то в итоге должны быть даны машине с SQl Server'ом, верно?
11 сен 17, 16:59    [20787686]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
если сервер ходит под Network Service, то да, аккаунту компа, который с долларом на хвосте.
тогда исполнитель-сисадмин будет проверять наличие пути на шаре под аккаунтом сервиса.
если же запустит неадмин, то права надо выдать учетке-прокси, которая для xp_cmdshell.
вот тут когда-то бились с этим:
Проверка сетевого файла на существование

у меня, кстати, как раз были проблемы, если запускал логин-член роли sysadmin.
может, ну ее вообще нафиг, недокументированную процедуру xp_fileexists?
главное же чтобы бэкапилось, а не чтоб какая-то xp_fileexists находила путь
11 сен 17, 17:14    [20787738]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
секунду, у вас под кем сервис-то запущен, под NT AUTHORITY\LOCAL SERVICE или под NT AUTHORITY\NETWORK SERVICE?
первый в сеть не ходит вообще.
мой ответ для второго, для NT AUTHORITY\NETWORK SERVICE.
вот он по сети ходит от имени компьютера
11 сен 17, 17:22    [20787760]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
да, вариант. А может замапить sa к credential?
11 сен 17, 17:28    [20787783]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
gerogekochkin
да, вариант. А может замапить sa к credential?

в смысле?
в sp_xp_cmdshell_proxy_account мапится виндовый аккаунт
11 сен 17, 17:37    [20787815]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
o-o
секунду, у вас под кем сервис-то запущен, под NT AUTHORITY\LOCAL SERVICE или под NT AUTHORITY\NETWORK SERVICE?
первый в сеть не ходит вообще.
мой ответ для второго, для NT AUTHORITY\NETWORK SERVICE.
вот он по сети ходит от имени компьютера


все верно, под NT AUTHORITY\NETWORK SERVICE
12 сен 17, 09:08    [20788859]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
o-o,
но ошибка все та же. процедуру я изменил, как посоветовали:

ALTER PROC [dbo].[sp_backup]
AS
     BEGIN
		 execute as login='sa'
                 ***
                 EXECUTE master.dbo.DatabaseBackup @databases = @dbs , @Directory = @backupLocation , @BackupType = 'FULL' , @Verify = 'Y' , @CleanupTime = 72 , @CheckSum = 'Y' , @LogToTable = 'Y';
     END
12 сен 17, 09:17    [20788897]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
aleks222
Guest
gerogekochkin
o-o,
но ошибка все та же. процедуру я изменил, как посоветовали:

ALTER PROC [dbo].[sp_backup]
AS
     BEGIN
		 execute as login='sa'
                 ***
                 EXECUTE master.dbo.DatabaseBackup @databases = @dbs , @Directory = @backupLocation , @BackupType = 'FULL' , @Verify = 'Y' , @CleanupTime = 72 , @CheckSum = 'Y' , @LogToTable = 'Y';
     END


Страдалец,

1. Бэкап всегда исполняет сервер и всегда от имени своей учетки. Хотя, у тя загадочная master.dbo.DatabaseBackup...
2. ОСи пофиг на "execute as login='sa'". А уж удаленой ОСи - пофиг вдвойне.
12 сен 17, 09:43    [20788980]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
aleks222
gerogekochkin
o-o,
но ошибка все та же. процедуру я изменил, как посоветовали:

ALTER PROC [dbo].[sp_backup]
AS
     BEGIN
		 execute as login='sa'
                 ***
                 EXECUTE master.dbo.DatabaseBackup @databases = @dbs , @Directory = @backupLocation , @BackupType = 'FULL' , @Verify = 'Y' , @CleanupTime = 72 , @CheckSum = 'Y' , @LogToTable = 'Y';
     END


Страдалец,

1. Бэкап всегда исполняет сервер и всегда от имени своей учетки. Хотя, у тя загадочная master.dbo.DatabaseBackup...
2. ОСи пофиг на "execute as login='sa'". А уж удаленой ОСи - пофиг вдвойне.

вот если бы ты, дарагуля, прочел весь пост,
то и узнал бы, что у него не ошибка бэкапа, а ошибка недокументированной xp_fileexists.
она не видит путь, когда исполняется не под админом.
и загадочная DatabaseBackup это проца Ola Hallengren,
о чем писалось выше, именно она лезет юзать xp_fileexists и валится с ошибкой.

и ему уже было предложено наплевать на эту xp_fileexists и бэкапить себе спокойно,
именно потому, что бэкапу как раз все равно, сисадмин или нет, всегда используется учетка сервера
12 сен 17, 11:03    [20789226]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
o-o
Guest
когда что-то не пашет,
и в центре этого неработающего нечто недокументированное,
т.е. оно и неизвестно, чего хочет,
и претензии не предъявить,
то по мне, так самое время отказаться от сей недокументированности.

ну если так хочется именно ту процу использовать,
просто закомментируйте кусок с использованием xp_fileexists.
12 сен 17, 11:13    [20789255]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при создание бэкапа в шаре  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
o-o
когда что-то не пашет,
и в центре этого неработающего нечто недокументированное,
т.е. оно и неизвестно, чего хочет,
и претензии не предъявить,
то по мне, так самое время отказаться от сей недокументированности.

ну если так хочется именно ту процу использовать,
просто закомментируйте кусок с использованием xp_fileexists.


Закомментировал блок, работает!
Спасибо еще раз!
13 сен 17, 11:43    [20792299]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить