次の方法で共有


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 ユーザーかを示すブール値。

[スクリプト]
[out] 生成された SQL Server スクリプトを含む文字列。

HRESULT
[out] 呼び出しの成功または失敗を示す値。

戻り値

メソッド呼び出しの成功または失敗を示す HRESULT を返します。 値 0 は、メソッド呼び出しが成功したことを示します。 0 以外の値は、エラーが発生したことを示します。

解説

DatabaseName が空の場合、 IsRemote は無視され、レポート サーバーの構成ファイルの値がデータベース名に使用されます。

IsWindowsUsertrueに設定されている場合、UserNameは<domain>\<username>の形式にする必要があります。

IsWindowsUsertrueに設定すると、生成されたスクリプトは SQL Server のユーザーにログイン権限を付与し、レポート サーバー データベースを既定のデータベースとして設定し、レポート サーバー データベース、レポート サーバー一時データベース、マスター データベース、MSDB システム データベースに対する RSExec ロールを付与します。

IsWindowsUsertrueに設定されている場合、このメソッドは標準の 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) Network Service <Domain>\<ComputerName>$
NT AUTHORITY\NetworkService Network Service <Domain>\<ComputerName>$
(S-1-5-19) Local Service エラー - 下記参照。
NT AUTHORITY\LocalService Local Service エラー - 下記参照。

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

IsWindowsUsertrueに設定されている場合、WMI プロバイダーは LookupAccountName を呼び出してアカウントの SID を取得し、LookupAccountSID を呼び出して SQL Server スクリプトに配置する名前を取得します。 このようにすると、使用するアカウント名は必ず SQL Server 検証に合格します。

IsWindowsUserfalseに設定されている場合、生成されたスクリプトは、レポート サーバー データベース、レポート サーバー一時データベース、および MSDB データベースに対する RSExec ロールを付与します。

IsWindowsUserfalseに設定されている場合、スクリプトを正常に実行するには、SQL Server ユーザーが SQL Server に既に存在している必要があります。

レポート サーバーにレポート サーバー データベースが指定されていない場合、GrantRightsToDatabaseUser を呼び出すとエラーが返されます。

生成されたスクリプトは、SQL Server 2000、SQL Server 2005、および SQL Server 2008 をサポートします。

要件

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

参照

MSReportServer_ConfigurationSetting メンバー