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 安全性識別碼 (SID)。DatabaseName
此指令碼將授與使用者存取權的資料庫名稱。IsRemote
指出資料庫是否位於報表伺服器遠端的布林值。IsWindowsUser
指出指定之使用者名稱是 Windows 使用者或 SQL Server 使用者的布林值。Script
[out] 包含所產生之 SQL Server 指令碼的字串。HRESULT
[out] 指出呼叫成功或失敗的值。
傳回值
傳回 HRESULT,指出方法呼叫成功或失敗。值為 0 表示方法呼叫成功。非零值則表示已發生錯誤。
備註
如果 DatabaseName 是空的,就會忽略 IsRemote,而且報表伺服器組態檔值會用於資料庫名稱。
如果 IsWindowsUser 設定為 true,UserName 就應該採用 <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” |
|
localhost |
|
<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。
需求
命名空間: root\Microsoft\SqlServer\ReportServer\RS_<EncodedInstanceName>\v10\Admin
平台: Windows Server 2003 Datacenter Edition;Windows Server 2003 Enterprise Edition;Windows Server 2003 Standard Edition;Windows Vista;Windows XP Professional Service Pack 2 (SP2) 或 Service Pack 1 (SP1);或 Windows 2000 (所有版本)