次の方法で共有


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);  

パラメーター

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 組み込みアカウントを指定し、レポート サーバー データベースがリモートである場合、エラーが返されます。

IsWindowsUsertrue である場合、WMI プロバイダーはレポート サーバー データベースが同じコンピューターにあるかリモート コンピューターにあるかを確認します。 この決定は、UserName で指定された値を変換する必要があるときに行われます。 インストールがローカルであるかどうかを確認するため、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 (8.x)、SQL Server 2005、および SQL Server 2008 (10.0.x) をサポートします。

要件

名前空間: root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin