powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему возникает ошибка The server principal is not able to access?
9 сообщений из 9, страница 1 из 1
Почему возникает ошибка The server principal is not able to access?
    #39577465
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 базы на одном сервере.
Владельцем обеих баз является sa.
В первой базе определен sql-пользователь transferter.
Кроме того, в первой базе определен view, который обращается к нескольким таблицам второй базы.
Грант на select пользователю из view пытаюсь дать командой:
Код: sql
1.
2.
3.
4.
GRANT REFERENCES ON [load].[operations0x00] TO [transferter]
GO
GRANT SELECT ON [load].[operations0x00] TO [transferter]
GO


В обеих базах cross database ownership chaining = true и trustworthy = true
Во второй базе пользователя [transferter] - нет.

При попытке сделать select * from [load].[operations0x00] под пользователем transferter получаю ошибку:
The server principal "transferter" is not able to access the database "db0x00" under the current security context.

Как сделать, чтобы заработало?
Еще раз повторю, что пользователь transferter во второй базе отсутствует, и по смыслу от там не нужен. Можно обойтись без его создания?
Точнее КАК обойтись без создания этого пользователя во второй базе?

Microsoft SQL Server 2014 (SP2-CU8) (KB4037356) - 12.0.5557.0 (X64)
Oct 3 2017 14:56:10
Copyright (c) Microsoft Corporation
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577475
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВо второй базе пользователя [transferter] - нет.

При попытке сделать select * from [load].[operations0x00] под пользователем transferter получаю ошибку:
The server principal "transferter" is not able to access the database "db0x00" under the current security context.

в какой базе?
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577482
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterЕще раз повторю, что пользователь transferter во второй базе отсутствует, и по смыслу от там не нужен. Можно обойтись без его создания?grant connect to guest во второй базе. Это если cross-database ownership chaining настроен правильно.
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577489
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не надо жмотиться, отмапьте нужного юзера во вторую базу.
этим вы ему прав не прибавите,
зато заработает ownership chaining, т.е. товарищ сможет читать из второй базы,
но только через вью из первой.

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

а TRUSTWORTHY с базы снимите, оно вам вообще не нужно.
оно позволяет выпрыгнуть из базы,
т.е. если кто-то имперсонэйтит **юзера**, то с овнером базы sa
он обретает права того **логина**, что соответствует юзеру.

соответственно, если кто-то имперсонэйтит юзера transferter,
он становится логином transferter, но логин во вторую базу не отмаплен -> не добились вы ничего.
зато если теперь имерсонэйтить в этой базе dbo,
то станешь sa.
со всеми вытекающими
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577512
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинавторВо второй базе пользователя [transferter] - нет.

При попытке сделать select * from [load].[operations0x00] под пользователем transferter получаю ошибку:
The server principal "transferter" is not able to access the database "db0x00" under the current security context.

в какой базе?
вьюха [load].[operations0x00] в базе1 (ее имя нигде в посте не фигурирует).
а базовая таблица для вьюхи в базе db0x00.
так вот в базе1 есть и юзер, и права на вью.
во второй (db0x00) юзера нет, поэтому и ошибка The server principal "transferter" is not able...
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577614
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123не надо жмотиться, отмапьте нужного юзера во вторую базу.
этим вы ему прав не прибавите,
зато заработает ownership chaining, т.е. товарищ сможет читать из второй базы,
но только через вью из первой.

Проблема в том, что вторая база - это вторичная база логшиппинга в состоянии standby/read only.
И таких баз - 4 с лишним десятка.
а TRUSTWORTHY с базы снимите, оно вам вообще не нужно.
оно позволяет выпрыгнуть из базы,
т.е. если кто-то имперсонэйтит **юзера**, то с овнером базы sa
он обретает права того **логина**, что соответствует юзеру.

соответственно, если кто-то имперсонэйтит юзера transferter,
он становится логином transferter, но логин во вторую базу не отмаплен -> не добились вы ничего.
зато если теперь имерсонэйтить в этой базе dbo,
то станешь sa.
со всеми вытекающими
Да, наверное нужно так сделать.
Первичные базы TRUSTWORTHY на своих серверах по другим причинам, наверное, на вторичном сервере сделали эти базы TRUSTWORTHY по инерции.

Т.е., получается, придется на 40 серверах создать пользователя, причем, с одинаковым сид, отмапить его в базу, и подождать, когда восстановятся логи?
Замечательно.
Я так понимаю, если завернуть в первой базе вызов из view в хранимую процедуру, где указать with execute as owner - всё заработает.
... но оно не подходит, т.к. нужно читать именно из view.
Может, есть еще мысли?
Ну, кроме разрешения анонимного логина к базе?
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577637
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,
Вы ж только сейчас описали проблему целиком.
А inline function не подойдёт?
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39577689
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, не inline, а multistatement,
в инлайновой нет execute as
...
Рейтинг: 0 / 0
Почему возникает ошибка The server principal is not able to access?
    #39578193
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123пардон, не inline, а multistatement,
в инлайновой нет execute as
Я так понимаю, что производительность при этом - пойдет лесом?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему возникает ошибка The server principal is not able to access?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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