Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Всем доброго времени суток.
Сабж уже вынес мне моск, ищу помощи.

Есть джоб запускающий юзерпроцу в которой запускается бэкап с его проверкой.
Вот та самая проверка возвращает ошибку.
[SQLSTATE 42000] (Error 3013)  CREATE DATABASE permission denied in database 'master'. 
[SQLSTATE 42000] (Error 262) VERIFY DATABASE is terminating abnormally.

- проца создана под sa
- овнер джоба sa
- шаг джоба выполняется из под специально созданного с админ правами доменного юзера domain\BKUser
- у юзера domain\BKUser есть одноименный логин domain\SQLBKUser
- логин в серверных ролях public, dbcreator
- на юзер базе есть пользователь bk_user промапленный на логин domain\SQLBKUser
- bk_user состоит в ролях юзербазы public, db_backupoperator

листинг кода проверки вызывающий ошибку:
	-- verify backup
		SELECT @backupSetId = position 
		FROM msdb..backupset 
		WHERE database_name = @db_name and backup_set_id = (SELECT max(backup_set_id) 
															FROM msdb..backupset 
															WHERE database_name = @db_name )



Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)
on Windows Server 2016 Standard 6.3 <X64> (Build 14393: )
26 янв 18, 18:36    [21142577]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Забыл... файл бэкапа ложится в сетевую папку, доступ на запись у доменного юзера есть
26 янв 18, 18:39    [21142588]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
автор
- у юзера domain\BKUser есть одноименный логин domain\SQLBKUser
- на юзер базе есть пользователь bk_user промапленный на логин domain\SQLBKUser

что это тут такое написано?
по первому пункту: не вижу одноименности.
по второму: виндовый логин мапится лишь в самого себя,
что еще за невиндовый юзер, "промапленный на логин domain\SQLBKUser"?
26 янв 18, 18:42    [21142592]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
CREATE DATABASE не нужен для бэкапа,
это надо для рестора.
ваше "с проверкой" это есть что, не backup with checksum,
а "restore verifyonly"?
---
для рестора существующей базы надо быть минимум в роли DBCREATOR
26 янв 18, 18:47    [21142605]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
ну и наконец ошибка совсем не на селекте из msdb..backupset:
для такого селекта вообще ничего не нужно.
просто быть отмапленным на сервере как логин достаточно
26 янв 18, 18:51    [21142610]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
короче, ищите, где у вас restore verifyonly.
ваш логин никакой не dbcreator, отсюда и ошибка
26 янв 18, 18:55    [21142616]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123
автор
- у юзера domain\BKUser есть одноименный логин domain\SQLBKUser
- на юзер базе есть пользователь bk_user промапленный на логин domain\SQLBKUser

что это тут такое написано?
по первому пункту: не вижу одноименности.
по второму: виндовый логин мапится лишь в самого себя,
что еще за невиндовый юзер, "промапленный на логин domain\SQLBKUser"?


1) Сорри, "SQL" в имени логина лишнее, логин действительно одноименный.
2) Хотел сказать,что в базе есть юзер bk_user с логином domain\BKUser

Yasha123
CREATE DATABASE не нужен для бэкапа,
это надо для рестора.
ваше "с проверкой" это есть что, не backup with checksum,
а "restore verifyonly"?
---
для рестора существующей базы надо быть минимум в роли DBCREATOR


все верно, не тот кусок кода вставил ((( пятница, вечер, снова сорри
вот тот:
RESTORE VERIFYONLY FROM DISK = @destination_file WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND


почему логин никакой не dbcreator?
результат выполнения
select IS_SRVROLEMEMBER ( 'dbcreator' ,'domain\BKUser' )
1
26 янв 18, 19:16    [21142636]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Gosha,
в процедуре точно не прописано какое-нибудь with execute as owner?
сделайте простую вещь: в процедуре закомментируйте весь код, вставьте select user, system_user.
теперь запустите. наверняка юзер будет guest
26 янв 18, 20:11    [21142698]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123,

Сделал по совету

в хистори джоба такое сообщение:
Executed as user: bk_user. The step succeeded.
в логе запрос
select user, system_user
вернул

bk_user , domain\BKUser

Куда копать, не пойму ((
26 янв 18, 20:35    [21142748]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
with execute as owner в проце точно нет
26 янв 18, 20:38    [21142752]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
автор
Хотел сказать,что в базе есть юзер bk_user с логином domain\BKUser

как вы умудрились доменный логин отмапить в такого вот юзера,
совершенно не доменного?
заскриптуйте что ли создание юзера и код покажите, плиз
26 янв 18, 21:00    [21142771]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
ну и кстати вставьте еще в процедуру
select IS_SRVROLEMEMBER ( 'dbcreator' ,'domain\BKUser' )

посмотрим, creator он или не creator.
---
кстати, а у него нет deny create any database?
посмотрите в sys.server_permissions
26 янв 18, 21:04    [21142781]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123
автор
Хотел сказать,что в базе есть юзер bk_user с логином domain\BKUser

как вы умудрились доменный логин отмапить в такого вот юзера,
совершенно не доменного?

Ну это вообще не проблема заменить имя юзера для логина при создании :)

решил посмотреть, что вернет ORIGINAL_LOGIN() и он вернул совершенно не то, что ожидал - domain\SRV03$
Я правильно понимаю, что джоб выполняется именно от этого имени? вообще не понимаю, почему имя компа.

any ideas?
29 янв 18, 19:15    [21148516]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Gosha
решил посмотреть, что вернет ORIGINAL_LOGIN() и он вернул совершенно не то, что ожидал - domain\SRV03$
Я правильно понимаю, что джоб выполняется именно от этого имени? вообще не понимаю, почему имя компа.

any ideas?

ну так агент запущен или под Local System или под Network Service.
у них имя в сети это имя_компа$
29 янв 18, 21:49    [21148920]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
вот результат запроса

select [status], [dbname], [name], loginname, denylogin, hasaccess, isntname, isntgroup, isntuser, sysadmin, securityadmin, serveradmin, setupadmin, processadmin, diskadmin, dbcreator, bulkadmin
from sys.syslogins
where name = 'domain\BKUser'


statusdbnamenameloginnamedenyloginhasaccessisntnameisntgroupisntusersysadminsecurityadminserveradminsetupadminprocessadmindiskadmindbcreatorbulkadmin
9masterdomain\BKUserdomain\BKUser0110100000010


может чего-то не хватает?...
куда глянуть, что еще посмотреть?
30 янв 18, 13:42    [21150878]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
выполните из своей процедуры
select IS_SRVROLEMEMBER ( 'dbcreator')

без указания логина.
creator он или не creator?

и где результат проверки,
есть ли DENY CREATE ANY DATABASE
30 янв 18, 14:23    [21151124]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123,
опачкиии....
запрос
select IS_SRVROLEMEMBER ( 'dbcreator')
из джоба вернул 0

Yasha123
есть ли DENY CREATE ANY DATABASE

вот результат из sys.database_permissions для пользовательской базы

classclass_descmajor_idminor_idgrantee_principal_idgrantor_principal_idtypepermission_namestatestate_desc
0DATABASE00181CO CONNECTGGRANT
1OBJECT_OR_COLUMN15708206580181EX EXECUTEGGRANT


что не так делаю? ((
30 янв 18, 15:35    [21151578]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
шаг джоба типа T-SQL при овнере джоба sysadmin выполняется от учетки агента.
вот и поместите его (domain\SRV03$) в роль dbcreator
30 янв 18, 16:08    [21151783]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123,

у меня овнер джоба это sa а шаг джоба выполняется от имени юзера bk_user у которого вот этот самый логин domain\BKUser
кого куда мне добавить? или может нужно поменять овнера джоба?
30 янв 18, 16:45    [21151926]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
я даже не знаю, как еще донести-то.
жирным шрифтом соответствующего размера?
может, на инглише понятнее?
автор
if the owner of the job is a sysadmin, it will execute in the context of the agent account.
If the owner is not sysadmin, it will execute under the context of the owner.

ну или вот еще аж c репро:
SQL Server Agent jobs and user contexts
30 янв 18, 16:52    [21151949]     Ответить | Цитировать Сообщить модератору
 Re: permission denied in database 'master'. [SQLSTATE 42000] (Error 262)  [new]
Gosha
Member

Откуда: Odessa
Сообщений: 217
Yasha123,

так понятно, спасибо :) особенно за ссылку
30 янв 18, 18:13    [21152186]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить