Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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