Я пытаюсь разрешить пользователю просматривать данные трассировки SQL Server из файла .trc без предоставления им ALTER TRACE
разрешений (SQL Server 2008 R2). Таким образом, я завернул его в хранимой процедуре, используя мой сисадмин счет:SQL Server EXECUTE AS на FN_TRACE_GETTABLE
CREATE PROCEDURE test_trace
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
Если я выполнить эту хранимую процедуру, используя мой сисадмин счет, он прекрасно работает, как ожидалось. Если я попытаюсь запустить это под учетной записью domain1 \ user1, она не запускается с ошибкой "You do not have permission to run 'FN_TRACE_GETTABLE'"
. Это снова ожидается.
Так что теперь я хочу, чтобы domain1\user1
запустить хранимую процедуру, так что я изменить хранимую процедуру для выполнения под сисадмином счетов:
CREATE PROCEDURE test_trace
WITH EXECUTE AS 'domain1\sysadmin1'
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
Теперь, когда я выполнить хранимую процедуру, я получаю "You do not have permission to run 'FN_TRACE_GETTABLE'"
независимо от счет я его выполню! Я ожидал, что смогу выполнить его как по счетам , так и domain1\sysadmin1
.
Может ли кто-нибудь помочь в том, что я пропустил? Моя цель - разрешить domain1\user1
читать trace1.trc
файл без предоставления ALTER TRACE
разрешений.
«возможно, сервер игнорирует выполнение как для доступа к файлу (который я бы рассматривал как ошибку).': На самом деле ошибка была бы, если бы SQL Server мог каким-то образом чудесным образом вызвать токен доступа, даже не представляя пароль для локального авторитет безопасности ... так что нет, EXECUTE AS имеет абсолютно 0 (ноль) значение вне сферы самого SQL Server, и ОС никогда не доверяет ему. Если вы хотите получить доступ к внешнему ресурсу, вам нужно создать [ПОЛНОМОЧИЙ] (http://msdn.microsoft.com/en-us/library/ms189522.aspx) и указать, как вы ** должны ** предоставлять секрет (пароль учетной записи). –