ConfigurationSetting 方法 - GenerateDatabaseRightsScript

產生可用來為使用者授予報表伺服器資料庫存取權限的 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 設為 true,則 UserName 的格式應該為 <domain>\<username>。

當 IsWindowsUser 設為 true 時,產生的指令碼就會將登入權限授與 SQL Server 的使用者、將報表伺服器資料庫設定為預設資料庫,並且針對報表伺服器資料庫、報表伺服器暫存資料庫、主資料庫和 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>$
北領地管理局\網路服務 網路服務 <Domain>\<ComputerName>$
(S-1-5-19) 本機服務 錯誤
北領地管理局\地方服務 本機服務 錯誤

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

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

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

DatabaseServerName 的值 範例
"."
"(local)"
"LOCAL"
localhost
<機名> testlab14
<機器FQDN> 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 (8.x)、SQL Server 2005 與 SQL Server 2008 (10.0.x)。

規格需求

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