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

Откуда:
Сообщений: 36
Добрый день, коллеги.

Помоги, пожалуйста, разобратся с ошибкой. При запуске процедуры выдает сообщение: "Cannot execute as the database principal because the principal “sa” does not exist this type of principal cannot be impersonated or you do not have permission".

Версия SQL - SQL Server 2012, аутентификация на сервере - Mixed Mode, sa является владельцем данной базы данных.
17 июл 14, 15:44    [16319265]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
o-o
Guest
а вы выполняете в духе
execute as user = 'sa'

?
17 июл 14, 15:54    [16319321]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
pugovka
Member

Откуда:
Сообщений: 36
к сожалению так проверить запуск возможности нет
17 июл 14, 15:58    [16319344]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
o-o
Guest
в смысле?
я говорю, процедуру-то пытаетесь от user = 'sa' выполнить что-ли?
я просто пытаюсь ту же ошибку получить,
и мне пока в голову пришло только в явном виде прописать execute as user = 'sa'
(чего не бывает ибо sa -- не database principal)
т.е. пусть бы даже было execute as owner, сервер же не дурак, был бы dbo, а не sa.
это ж явно кто-то где-то насильно пишет user = 'sa'
17 июл 14, 16:04    [16319378]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
pugovka
Member

Откуда:
Сообщений: 36
это внутрення процедура, которая и не должна выполнятся от sa.
Было выполнено следующее на одном сервере запущен бекап, который восстановили на другом сервере, логины были перенесены процедурой sp_help_revlogin. При этом, на том сервере с которого выполнялся бекап данная транзакция отрабатывает, а на новом сервере - нет.
17 июл 14, 16:08    [16319422]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
pugovka
Member

Откуда:
Сообщений: 36
При этом все логины уже были проверены вручную, все права совпадают.
17 июл 14, 16:11    [16319449]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
o-o
Guest
ошибка-то выдается не про логин, а про юзера sa.
откуда серверу взять юзера sa?
моей фантазии хватило только на написание в явном виде : execute as user = 'sa'
Msg 15517, Level 16, State 1, Line 1
Cannot execute as the database principal because the principal "sa" does not exist, this type of principal cannot be impersonated, or you do not have permission.


бывает еще, что в одной базе в процедуре вписано execute as owner, owner -- sa,
и код лезет в соседнюю базу, вот тогда сервер подставит login sa, ибо полезли за пределы базы,
но ошибка будет другая:
The server principal "sa" is not able to access the database "..."
under the current security context.


у вас же он явно написал про юзера
17 июл 14, 16:21    [16319539]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
pugovka
Member

Откуда:
Сообщений: 36
Прошу прощения, там другая ошибка "Cannot execute as the server principal because the principal "sa" does not exist, this type of principal cannot be impersonated, or you do not have permission."
17 июл 14, 17:12    [16319910]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе SQL  [new]
o-o
Guest
забавно.
похоже на то, что в процедуре какой-то кусок хотят выполнять под sa.
и написали где-то внутри процедуры (поищите!!!) execute as login = 'sa'.
и такое может выполнить тот, у кого есть IMPERSONATE на sa.
видимо, на старом сервере выполняет тот, у кого он есть,
а на новом, у кого нет -- or you do not have permission (impersonate on login::sa)

только великий смысл давать кому-то IMPERSONATE на sa мне непонятен, это же неявно человеку дать sysadmin-а
17 июл 14, 18:26    [16320263]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить