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가 무시되고 보고서 서버 구성 파일 값이 데이터베이스 이름에 사용됩니다.

IsWindowsUser가 true설정된 경우 UserName은 형식<domain>\<username>이어야 합니다.

IsWindowsUser가 true설정되면 생성된 스크립트는 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) 네트워크 서비스 <Domain>\<ComputerName>$
NT AUTHORITY\NetworkService 네트워크 서비스 <Domain>\<ComputerName>$
(S-1-5-19) 로컬 서비스 오류
NT AUTHORITY\LocalService 로컬 서비스 오류

Windows 2000에서 기본 제공 계정을 사용하고 보고서 서버 데이터베이스가 원격인 경우 오류가 반환됩니다.

LocalService 기본 제공 계정이 지정되어 있고 보고서 서버 데이터베이스가 원격이면 오류가 반환됩니다.

IsWindowsUser가 trueWMI 공급자는 보고서 서버 데이터베이스가 동일한 컴퓨터 또는 원격 컴퓨터에 있는지 여부를 결정합니다. 이 결정은 UserName제공된 값을 변환해야 하는 경우에 결정됩니다. 설치가 로컬인지 확인하기 위해 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 유효성 검사를 통과합니다.

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

MSReportServer_ConfigurationSetting 멤버