Partilhar via


Método ConfigurationSetting - GenerateDatabaseRightsScript

Gera um script SQL que pode usar para conceder a um utilizador acesso à base de dados do servidor de relatórios. Além disso, concede acesso a outras bases de dados necessárias para o funcionamento de um servidor de relatórios. O chamador deve ligar-se ao servidor de base de dados 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 utilizador ou identificador de segurança do Windows (SID) do utilizador a quem o script concede direitos.

DatabaseName
O nome da base de dados ao qual o script concede acesso ao utilizador.

IsRemote
Um valor booleano para indicar se a base de dados está remota do servidor de relatórios.

IsWindowsUser
Um valor booleano que indica se o nome de utilizador especificado é um utilizador do Windows ou do SQL Server.

Guião
[fora] Uma cadeia contendo o script gerado do SQL Server.

HRESULT
[fora] Valor que indica se a chamada teve sucesso ou falhou.

Valor de retorno

Devolve um HRESULT indicando sucesso ou falha da chamada ao método. Um valor de 0 indica que a chamada ao método foi bem-sucedida. Um valor não nulo indica que ocorreu um erro.

Observações

Se o Nome da Base de Dados estiver vazio, então o IsRemote é ignorado e o valor do ficheiro de configuração do servidor de relatórios é usado para o nome da base de dados.

Se o IsWindowsUser estiver definido como true, o UserName deve estar no formato <domain>\<username>.

Quando o IsWindowsUser está definido como true, o script gerado concede direitos de login ao utilizador para o SQL Server, definindo a base de dados do servidor de relatórios como base de dados predefinida, e concede ao papel RSExec na base de dados do servidor de relatórios, na base de dados temporária do servidor de relatórios, na base de dados principal e na base de dados do sistema MSDB.

Quando o IsWindowsUser está definido como true, o método aceita SIDs padrão do Windows como entrada. Quando fornece o SID padrão do Windows ou nome de conta de serviço, o nome traduz-se numa cadeia de nome de utilizador. Se a base de dados for local, a conta é traduzida para a representação localizada correta da conta. Se a base de dados for remota, a conta é representada como a conta do computador.

A tabela seguinte mostra as contas que são traduzidas e a sua representação remota.

Conta / SID traduzido Nome comum Nome remoto
(S-1-5-18) Sistema Local <Domínio>\<NomeComputadorA>$
.\LocalSystem Sistema Local <Domínio>\<NomeComputadorA>$
NomeComputador\LocalSystem Sistema Local <Domínio>\<NomeComputadorA>$
LocalSystem Sistema Local <Domínio>\<NomeComputadorA>$
(S-1-5-20) Serviço de rede <Domínio>\<NomeComputadorA>$
NT AUTHORITY\Serviço de Rede Serviço de rede <Domínio>\<NomeComputadorA>$
(S-1-5-19) Serviço Local Erro
AUTORIDADE NT\Serviço Local Serviço Local Erro

No Windows 2000, se estiveres a usar uma conta integrada e a base de dados do servidor de relatórios for remota, um erro é devolvedo.

Se a conta incorporada do LocalService for especificada e a base de dados do servidor de relatórios for remota, é devolvido um erro.

Quando IsWindowsUser é verdadeiro, o fornecedor WMI determina se a base de dados do servidor de relatórios está localizada no mesmo computador ou num computador remoto. Esta determinação é feita quando o valor fornecido em Nome de Utilizador precisa de ser traduzido. Para determinar se a instalação é local, o fornecedor WMI avalia a propriedade DatabaseServerName em relação à seguinte lista de valores. Se for encontrada uma correspondência, a base de dados é local. Caso contrário, é remoto. A comparação não diferencia maiúsculas de minúsculas.

Valor do DatabaseServerName Example
"."
"(local)"
"LOCAL"
localhost
<Nome da máquina> testlab14
<MachineFQDN> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

Quando o IsWindowsUser está definido como true, o fornecedor WMI chama o LookupAccountName para obter o SID da conta, e depois liga para o LookupAccountSID para obter o nome a colocar no script do SQL Server. Esta ação garante que o nome da conta utilizado passa a validação do SQL Server.

Quando o IsWindowsUser está definido como falso, o script gerado concede ao RSExec o papel na base de dados do servidor de relatórios, na base de dados temporária do servidor de relatórios e na base de dados MSDB.

Quando o IsWindowsUser está definido como falso, o utilizador do SQL Server já deve existir no SQL Server para que o script corra com sucesso.

Se o servidor de relatórios não tiver uma base de dados do servidor de relatórios especificada, chamar GrantRightsToDatabaseUser devolve um erro.

O script gerado suporta SQL Server 2000 (8.x), SQL Server 2005 e SQL Server 2008 (10.0.x).

Requerimentos

namespace:root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin