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);  

參數

使用者名稱
此指令碼將授與權限之目標使用者的使用者名稱或 Windows 安全性識別碼 (SID)。

DatabaseName
此指令碼將授與使用者存取權的資料庫名稱。

IsRemote
指出資料庫是否位於報表伺服器遠端的布林值。

IsWindowsUser
指出指定之使用者名稱是 Windows 使用者或 SQL Server 使用者的布林值。

指令碼
[out] 包含所產生之 SQL Server 指令碼的字串。

HRESULT
[out] 指出呼叫成功或失敗的值。

傳回值

傳回 HRESULT ,指出方法呼叫成功或失敗。 值為 0 表示方法呼叫成功。 非零值則表示已發生錯誤。

備註

如果 DatabaseName 是空的,即忽略 IsRemote ,而且報表伺服器組態檔值會用於資料庫名稱。

如果 IsWindowsUser 設定為 trueUserName 的格式應該是 <domain>\<username>。

當 IsWindowsUser 設定為 true,產生的腳本會將登入許可權授與 SQL Server 的使用者、將報表伺服器資料庫設定為預設資料庫,並在報表伺服器資料庫、報表伺服器暫存資料庫、master 資料庫和 MSDB 系統資料庫上授與 RSExec 角色。

當IsWindowsUser設定為true,此方法會接受標準 Windows SID 做為輸入。 提供了標準 Windows SID 或服務帳戶名稱時,它就會轉譯成使用者名稱字串。 如果資料庫位於本機,此帳戶就會轉譯成帳戶的正確當地語系化表示。 如果資料庫位於遠端,此帳戶就會表示成電腦的帳戶。

下表將顯示已轉譯的帳戶及其遠端表示。

已轉譯的帳戶 / SID 一般名稱 遠端名稱
(S-1-5-18) [本機系統] <Domain>\<ComputerName>$
.\LocalSystem [本機系統] <Domain>\<ComputerName>$
ComputerName\LocalSystem [本機系統] <Domain>\<ComputerName>$
LocalSystem [本機系統] <Domain>\<ComputerName>$
(S-1-5-20) 網路服務 <Domain>\<ComputerName>$
NT AUTHORITY\NetworkService 網路服務 <Domain>\<ComputerName>$
(S-1-5-19) 本機服務 錯誤 - 請參閱下列內容。
NT AUTHORITY\LocalService 本機服務 錯誤 - 請參閱下列內容。

在 Windows 2000 上,如果您正在使用內建帳戶,而且報表伺服器資料庫位於遠端,就會傳回錯誤。

LocalService如果指定了內建帳戶,而且報表伺服器資料庫是遠端的,則會傳回錯誤。

IsWindowsUser 為 true,且必須轉譯 UserName 提供的值時,WMI 提供者就會判斷報表伺服器資料庫位於同一部電腦或遠端電腦上。 為了判斷安裝是否位於本機,WMI 提供者會根據下列值清單評估 DatabaseServerName 屬性。 如果找到相符項目,表示資料庫位於本機。 否則,就表示資料庫位於遠端。 此比較不區分大小寫。

DatabaseServerName 的值 範例
"."
"(local)"
"LOCAL"
本機主機
<Machinename> testlab14
<MachineFQDN> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

當 IsWindowsUser 設定為 true,WMI 提供者會呼叫 LookupAccountName 以取得帳戶的 SID,然後呼叫 LookupAccountSID 以取得要放入 SQL Server 腳本中的名稱。 這樣可確保所使用的帳戶名稱會通過 SQL Server 驗證。

當 IsWindowsUser 設定為 false,產生的腳本會在報表伺服器資料庫、報表伺服器暫存資料庫和 MSDB 資料庫上授與 RSExec 角色。

當 IsWindowsUser 設定為 false,SQL Server 用戶必須已存在於 SQL Server 上,腳本才能順利執行。

如果報表伺服器尚未指定報表伺服器資料庫,呼叫 GrantRightsToDatabaseUser 就會傳回錯誤。

產生的腳本支援 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。

需求

Namespace:root\Microsoft\SqlServer\ReportServer\<InstanceName>\v12\Admin

另請參閱

MSReportServer_ConfigurationSetting 成員