Método de ConfigurationSetting – GenerateDatabaseRightsScript
Gera um script SQL que pode ser usado para conceder a um usuário acesso ao banco de dados do servidor de relatórios. Além disso, concede acesso a outros bancos de dados necessários para a execução de um servidor de relatório. O chamador deve se conectar ao servidor de banco de dados do SQL Server e executar o script.
Sintaxe
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);
Parâmetros
UserName
O nome de usuário ou o identificador de segurança (SID) do Windows do usuário ao qual o script concede direitos.
DatabaseName
O nome do banco de dados para o qual o script concede acesso ao usuário.
IsRemote
Um valor Booleano que indica se o banco de dados é remoto em relação ao servidor de relatório.
IsWindowsUser
Um valor booliano que indica se o nome de usuário especificado é de um usuário do Windows ou de um usuário do SQL Server.
Script
[out] Uma cadeia de caracteres que gerou o script do SQL Server.
HRESULT
[out] Valor que indica se a chamada obteve êxito ou falhou.
Valor retornado
Retorna um HRESULT indicando êxito ou falha da chamada do método. Um valor 0 indica que a chamada do método teve êxito. Um valor diferente de zero indica que ocorreu um erro.
Comentários
Se DatabaseName ficar vazio, IsRemote será ignorado e o valor do arquivo de configuração do servidor de relatório será usado como o nome do banco de dados.
Se IsWindowsUser for definido como true, UserName deverá estar no formato <domain>\<username>
.
Quando IsWindowsUser é definido como true, o script gerado concede direitos de logon ao usuário no SQL Server, configurando o banco de dados do servidor de relatório como o banco de dados padrão, e concede a função RSExec no banco de dados do servidor de relatório, no banco de dados temporário do servidor de relatório, no banco de dados mestre e no banco de dados do sistema MSDB.
Quando IsWindowsUser é definido como true, o método aceita os SIDs do Windows padrão como entrada. Quando você fornece o SID padrão do Windows ou o nome da conta de serviço, o nome é traduzido para uma cadeia de caracteres de nome de usuário. Se o banco de dados for local, a conta será convertida para a representação localizada correta da conta. Se o banco de dados for remoto, a conta será representada como a conta do computador.
A tabela a seguir mostra as contas que são convertidas e sua representação remota.
Conta/SID que está convertido | Nome comum | Nome remoto |
---|---|---|
(S-1-5-18) | Sistema Local | <Domain>\<ComputerName>$ |
.\LocalSystem | Sistema Local | <Domain>\<ComputerName>$ |
Nome do computador\sistema local | Sistema Local | <Domain>\<ComputerName>$ |
LocalSystem | Sistema Local | <Domain>\<ComputerName>$ |
(S-1-5-20) | Serviço de Rede | <Domain>\<ComputerName>$ |
NT AUTHORITY\NetworkService | Serviço de Rede | <Domain>\<ComputerName>$ |
(S-1-5-19) | Serviço Local | Erro |
NT AUTHORITY\LocalService | Serviço Local | Erro |
No Windows 2000, se você estiver usando uma conta interna e o banco de dados do servidor de relatório for remoto, será retornado um erro.
Se a conta interna LocalService for especificada e o banco de dados do servidor de relatório for remoto, um erro será retornado.
Quando IsWindowsUser for true, o provedor WMI determinará se o banco de dados do servidor de relatório está localizado no mesmo computador ou em um computador remoto. Essa determinação é feita quando o valor fornecido em UserName precisa ser convertido. Para determinar se a instalação é local, o provedor de WMI avaliará a propriedade DatabaseServerName da lista de valores a seguir. Se uma correspondência for localizada, o banco de dados é local. Caso contrário, é remoto. A comparação não diferencia maiúsculas de minúsculas.
Valor do DatabaseServerName | Exemplo |
---|---|
"." | |
"(local)" | |
"LOCAL" | |
localhost | |
<Machinename> | testlab14 |
<MachineFQDN> | example.redmond.microsoft.com |
<EndereçoIP> | 180.012.345,678 |
Quando IsWindowsUser é definido como true, o provedor WMI chama LookupAccountName para obter o SID para a conta e, em seguida, chama LookupAccountSID para obter o nome para colocar no script do SQL Server. Essa ação assegura que o nome da conta usado transmita a validação do SQL Server.
Quando IsWindowsUser é definido como false, o script gerado concede a função RSExec no banco de dados do servidor de relatório, no banco de dados temporário do servidor de relatório e no banco de dados MSDB.
Quando IsWindowsUser é definido como false, o usuário do SQL Server já deve existir no SQL Server para que o script seja executado corretamente.
Se o servidor de relatório não tiver um banco de dados do servidor de relatório especificado, a ação de chamar GrantRightsToDatabaseUser retornará um erro.
O script gerado dá suporte ao SQL Server 2000 (8.x), ao SQL Server 2005 e ao SQL Server 2008 (10.0.x).
Requisitos
Namespace: root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin