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 역할을 부여합니다.
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) | 로컬 서비스 | Error |
NT AUTHORITY\LocalService | 로컬 서비스 | Error |
Windows 2000에서 기본 제공 계정을 사용하고 있고 보고서 서버 데이터베이스가 원격이면 오류가 반환됩니다.
LocalService 기본 제공 계정이 지정되어 있고 보고서 서버 데이터베이스가 원격이면 오류가 반환됩니다.
IsWindowsUser가 true인 경우 WMI 공급자는 보고서 서버 데이터베이스가 동일한 시스템에 있는지 아니면 원격 시스템에 있는지 확인합니다. 이 결정은 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 유효성 검사를 통과하는지 확인합니다.
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)을 지원합니다.
요구 사항
네임스페이스: root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin