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 內建帳戶,而且報表伺服器資料庫位於遠端,就會傳回錯誤。
當 IsWindowsUser 為 true 時,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