Метод GenerateDatabaseRightsScript (WMI MSReportServer_ConfigurationSetting)
Создает сценарий SQL, с помощью которого пользователям могут предоставляться права доступа к базе данных сервера отчетов и другим базам данных, необходимым для работы сервера отчетов. Ожидается, что участник соединится с базой данных сервера отчетов SQL Server и выполнит сценарий.
Синтаксис
Public Sub GenerateDatabaseRightsScript(ByVal UserName As String, _
ByVal DatabaseName As String, ByVal IsRemote As Boolean, _
ByVal IsWindowsUser As Boolean, ByRef Script As String, _
ByRef HRESULT As Int32)
public void GenerateDatabaseRightsScript(string UserName, string DatabaseName, bool IsRemote, bool IsWindowsUser, out string Script,
out Int32 HRESULT);
Параметры
UserName
Имя пользователя или идентификатор безопасности Windows пользователя, которому сценарий предоставляет права.DatabaseName
Имя базы данных, доступ к которой сценарий предоставит пользователю.IsRemote
Логическое значение. Показывает, является ли база данных удаленной по отношению к серверу отчетов.IsWindowsUser
Логическое значение, которое показывает тип пользователя для указанного имени пользователя: Windows или SQL Server.Script
[out] Строка, которая содержит созданный сценарий SQL Server.HRESULT
[out] Значение, которое указывает, окончился ли вызов успехом или неудачей.
Возвращаемое значение
Возвращает значение HRESULT, являющееся признаком успешного или неуспешного завершение вызова метода. Значение 0 указывает, что вызов метода завершился успешно. Ненулевое значение указывает, что произошла ошибка.
Замечания
Если параметр DatabaseName пуст, IsRemote пропускается и значение файла конфигурации сервера отчетов используется в качестве имени базы данных.
Если параметр IsWindowsUser имеет значение true, то параметр UserName должен иметь вид <домен>\<имя_пользователя>.
Если параметр IsWindowsUser имеет значение true, то созданный сценарий предоставляет пользователю права для входа на SQL Server; при этом база данных сервера отчетов задается в качестве базы данных по умолчанию, а также пользователю предоставляет роль RSExec в базе данных сервера отчетов, во временной базе данных сервера отчетов, в базе данных master и в системной базе данных MSDB.
Если параметр IsWindowsUser имеет значение true, то метод принимает в качестве входных данных стандартные идентификаторы безопасности Windows. Если предоставлен стандартный идентификатор безопасности Windows или имя учетной записи службы, то они переводятся в строку имени пользователя. Если база данных локальная, то учетная запись переводится в соответствии с представлением текущего языкового стандарта учетной записи. Если база данных удаленная, то учетная запись представляется как учетная запись компьютера.
В приведенной ниже таблице показаны переведенные учетные записи и их удаленное представление.
Переведенная учетная запись/идентификатор безопасности |
Общее имя |
Удаленное имя |
---|---|---|
(S-1-5-18) |
Local System |
<Домен>\<ИмяКомпьютера>$ |
.\LocalSystem |
Local System |
<Домен>\<ИмяКомпьютера>$ |
ComputerName\LocalSystem |
Local System |
<Домен>\<ИмяКомпьютера>$ |
LocalSystem |
Local System |
<Домен>\<ИмяКомпьютера>$ |
(S-1-5-20) |
Network Service |
<Домен>\<ИмяКомпьютера>$ |
NT AUTHORITY\NetworkService |
Network Service |
<Домен>\<ИмяКомпьютера>$ |
(S-1-5-19) |
Local Service |
Ошибка — см. ниже. |
NT AUTHORITY\LocalService |
Local Service |
Ошибка — см. ниже. |
Если в Windows 2000 используется встроенная учетная запись, а база данных сервера отчетов удаленная, то возвращается сообщение об ошибке.
Если указана встроенная учетная запись LocalService и база данных сервера отчетов удаленная, то возвращается сообщение об ошибке.
Если параметр IsWindowsUser имеет значение true, а значение параметра UserName требует перевода, то поставщик WMI определяет, на каком компьютере находится база данных сервера отчетов: на этом же или на удаленном. Чтобы определить, что установка локальная, поставщик WMI проверяет свойство DatabaseServerName на значения из приведенного ниже списка. Если одно из значений совпадает, то база данных локальная. В противном случае она является удаленной. При сравнении учитывается регистр букв.
Значение параметра DatabaseServerName |
Примеры |
---|---|
“.” |
|
“(local)” |
|
“LOCAL” |
|
localhost |
|
<Machinename> |
testlab14 |
<MachineFQDN> |
example.redmond.microsoft.com |
<IPAddress> |
180.012.345,678 |
Если параметр IsWindowsUser имеет значение true, то поставщик WMI вызывает метод LookupAccountName для получения идентификатора безопасности для учетной записи, затем вызывает метод LookupAccountSID, чтобы получить имя для вставки в сценарий SQL Server. Это гарантирует, что имя учетной записи успешно пройдет проверку SQL Server.
Если параметр IsWindowsUser имеет значение false, то созданный сценарий предоставляет роль RSExec в базе данных сервера отчетов, во временной базе данных сервера отчетов и в базе данных MSDB.
Если параметр IsWindowsUser имеет значение false, то для успешного выполнения сценария пользователь SQL Server уже должен существовать в SQL Server.
Если для сервера отчетов не задана база данных сервера отчетов, то при вызове метода GrantRightsToDatabaseUser возвращается ошибка.
Созданный сценарий поддерживает SQL Server 2000, SQL Server 2005 и SQL Server 2008.
Системные требования
Пространство имен: root\Microsoft\SqlServer\ReportServer\RS_<закодированное_имя_экземпляра>\v10\Admin
Платформа: Windows Server 2003 Datacenter Edition; Windows Server 2003 Enterprise Edition; Windows Server 2003 Standard Edition; Windows Vista; Windows XP Professional с пакетом обновления 2 (SP2) или 1 (SP1) или Windows 2000 (все версии).