powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SELECT 1 vs EXEC('SELECT 1')
16 сообщений из 16, страница 1 из 1
SELECT 1 vs EXEC('SELECT 1')
    #39739617
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обычно в осадок выпасть мне тяжело, но сегодня это клиенту удалось. Накрутили что-то с правами, что внутри хранимки нельзя использовать динамику EXEC. Обьясните добрые люди в какую сторону копать?

Ибо такой код как оказывается выполнить нельзя:

Код: sql
1.
EXEC('SELECT 1')


Права на базе с которой вызывается динамика: datareader, datawriter, ddladmin.
Исходя из справки права на вызов EXEC: Requires membership in the public role.

По дефолту в ней все юзера.
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739625
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ошибка-то какая?
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739626
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDenton,

openquery, например
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739632
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invmА ошибка-то какая?
Код по факту выполняется от юзера с такими же правами как у меня:

Код: sql
1.
EXEC ('select 1') AS USER = 'WIN\ReportAnalytics'


Код: sql
1.
2.
Msg 15517, Level 16, State 1, Line 5
Cannot execute as the database principal because the principal "WIN\ReportAnalytics" does not exist, this type of principal cannot be impersonated, or you do not have permission.


Увы посмотреть не могу что там с правами у ReportAnalytics (клиент говорит что идентично). Вопрос выше конечно нубский, но сильно такое удивило. Так что буду благодарен если ткнете в нужную сторону.
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739637
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKopenquery, например
Попробую. Спасибо
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739659
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
Msg 7411, Level 16, State 1, Line 9
Server 'REPORTING1\REPORTING' is not configured for DATA ACCESS.


при использовании OPENQUERY. Так что увы(
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739667
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDenton
Код: sql
1.
2.
Msg 7411, Level 16, State 1, Line 9
Server 'REPORTING1\REPORTING' is not configured for DATA ACCESS.


при использовании OPENQUERY. Так что увы(
не ну тут без добавления сервера никак :)
OPENROWSET
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739670
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDenton,

Если я правильно понимаю, то владелец базы не существует. Но не совсем понятно, как это можно получить.
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739701
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы уверены, что WIN\ReportAnalytics -- это именно индивидуальный юзер,
а не группа?
группу имперсонэйтить нельзя, вот вам пример:
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739758
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123а не группа?
В sys.sysusers четко показывает что это NT Login (isntname = 1). Так что да - уверенность есть что это юзер.
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739795
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDentonYasha123а не группа?
В sys.sysusers четко показывает что это NT Login (isntname = 1). Так что да - уверенность есть что это юзер.
понятия не имею, что там показывает доисторическое sys.sysusers.
могу сказать, что и моей группе это вью рисует 1 в указанной вами колонке.
тем не менее, это группа, а не индивидуальный виндовый аккаунт,
вот, пожалуйста:
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739797
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123, спасибо за замечание. Но по факту WINDOWS_USER показывает
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739881
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотрите, все возможные причины ошибки перечислены в ней самой,
т.е. имеем 3 возможности:

the principal does not exist
this type of principal cannot be impersonated
you do not have permission

что principal exists мы убедились (он есть в sys.database_principals)
что его можно имперсонэйтить -- тоже убедились, ибо это виндовый логин,
не группа и не юзер из сертификата и тому подобное
остается, что у юзера нет права имперсонэйтить.
проверьте
Код: sql
1.
select HAS_PERMS_BY_NAME('WIN\ReportAnalytics', 'user', 'impersonate')
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739907
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123остается, что у юзера нет права имперсонэйтить.
Вы правы. Спасибо
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739908
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDentonИсходя из справки права на вызов EXEC: Requires membership in the public role.

По дефолту в ней все юзера.
вот это, кстати, к ошибке не относится.
ошибка говорит, нет права IMPERSONATE, а не на EXEC
...
Рейтинг: 0 / 0
SELECT 1 vs EXEC('SELECT 1')
    #39739909
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDentonYasha123остается, что у юзера нет права имперсонэйтить.
Вы правы. Спасибо
а, ну вот и разобрались.
пардон за повторное долбление про IMPERSONATE в предыдущем посте
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SELECT 1 vs EXEC('SELECT 1')
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]