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

Откуда:
Сообщений: 59
запускаю под логином ztf
create database [data]
go
use [data]
go
create schema data
go
create table data.data
(
id int identity(1,1)
, date datetime
)
insert data.data(date)
select GETDATE()
go
create database engine
go
use engine
go
create schema engine
go
create procedure engine.p_get_data
with execute as self
as
select * from data.data.data
go
grant execute on engine.p_get_data to [Domain\Domain Users]
после запускаю под логином ztf
exec engine.p_get_data
ошибка
Msg 916, Level 14, State 1, Procedure p_get_data, Line 4
Серверу-участнику "ztf" не удалось обратиться к базе данных "data" в текущем контексте безопасности.
при запуске под логином [Domain\ztf]
Msg 916, Level 14, State 1, Line 1
The server principal "Domain\ztf" is not able to access the database "engine" under the current security context.

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   Jul  9 2008 14:17:44   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6001: Service Pack 1)
цель - доменные пользователи запускают процедуру, получают данные.
к данным доступа не имеют
CREATE LOGIN [Domian\Domain Users] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
юзер ztf - полный доступ
EXEC sys.sp_addsrvrolemember @loginame = N'ztf', @rolename = N'sysadmin'
7 сен 09, 09:26    [7624559]     Ответить | Цитировать Сообщить модератору
 Re: Контексты выполнения  [new]
mike909
Member

Откуда:
Сообщений: 662
Тимур З
запускаю под логином ztf
create database [data]
go
create procedure engine.p_get_data
with execute as self


with execute as OWNER
7 сен 09, 09:31    [7624584]     Ответить | Цитировать Сообщить модератору
 Re: Контексты выполнения  [new]
Тимур З
Member

Откуда:
Сообщений: 59
EXEC sys.sp_configure N'cross db ownership chaining', N'1'
ALTER DATABASE Data SET TRUSTWORTHY ON
ALTER DATABASE Engine SET TRUSTWORTHY ON
помогло
7 сен 09, 10:00    [7624713]     Ответить | Цитировать Сообщить модератору
 Re: Контексты выполнения  [new]
mike909
Member

Откуда:
Сообщений: 662
Тимур З
ALTER DATABASE Data SET TRUSTWORTHY ON
ALTER DATABASE Engine SET TRUSTWORTHY ON
А что, небыло ? Ну, тогда незабывайте выставлять после Restore ...
Тимур З
EXEC sys.sp_configure N'cross db ownership chaining', N'1'
помогло

Лучше этим не баловаться - см. BOL ...
А чем не устроил execute as owner ?
7 сен 09, 10:07    [7624759]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить