Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему возникает ошибка The server principal is not able to access? / 9 сообщений из 9, страница 1 из 1
28.12.2017, 16:41
    #39577465
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
Есть 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
28.12.2017, 16:55
    #39577475
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
авторВо второй базе пользователя [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
28.12.2017, 17:10
    #39577482
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
uaggsterЕще раз повторю, что пользователь transferter во второй базе отсутствует, и по смыслу от там не нужен. Можно обойтись без его создания?grant connect to guest во второй базе. Это если cross-database ownership chaining настроен правильно.
...
Рейтинг: 0 / 0
28.12.2017, 17:26
    #39577489
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
не надо жмотиться, отмапьте нужного юзера во вторую базу.
этим вы ему прав не прибавите,
зато заработает ownership chaining, т.е. товарищ сможет читать из второй базы,
но только через вью из первой.

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

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

соответственно, если кто-то имперсонэйтит юзера transferter,
он становится логином transferter, но логин во вторую базу не отмаплен -> не добились вы ничего.
зато если теперь имерсонэйтить в этой базе dbo,
то станешь sa.
со всеми вытекающими
...
Рейтинг: 0 / 0
28.12.2017, 18:32
    #39577512
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
Ролг ХупинавторВо второй базе пользователя [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
28.12.2017, 22:54
    #39577614
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему возникает ошибка The server principal is not able to access?
Yasha123не надо жмотиться, отмапьте нужного юзера во вторую базу.
этим вы ему прав не прибавите,
зато заработает ownership chaining, т.е. товарищ сможет читать из второй базы,
но только через вью из первой.

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

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

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


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