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>$
NT AUTHORITY\NetworkService 網路服務 <Domain>\<ComputerName>$
(S-1-5-19) 本機服務 錯誤
NT AUTHORITY\LocalService 本機服務 錯誤

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

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

IsWindowsUsertrue 時,WMI 提供者就會判斷報表伺服器資料庫位於同一部電腦或遠端電腦上。 當 UserName 中提供的值需要翻譯時,就會做出此判定。 為了判定安裝是否位於本機,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 (8.x)、SQL Server 2005 與 SQL Server 2008 (10.0.x)。

規格需求

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

MSReportServer_ConfigurationSetting 成員