Compartilhar via


Método GenerateDatabaseRightsScript (WMI MSReportServer_ConfigurationSetting)

Gera um Script SQL que pode ser usado para conceder direitos de usuário ao banco de dados do servidor de relatório e 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 concederá direitos.

  • DatabaseName
    O nome do banco de dados para o qual o script concederá 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 Booleano 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 contém o script SQL Server gerado.

  • HRESULT
    [out] Valor que indica se a chamada obteve êxito ou falhou.

Valor de retorno

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 <domínio>\<nome_de_usuário>.

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 um SID do Windows padrão ou nome de conta de serviço é fornecido, ele é convertido em 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

<Domínio>\<Nome do computador>$

.\LocalSystem

Sistema Local

<Domínio>\<Nome do computador>$

Nome do computador\sistema local

Sistema Local

<Domínio>\<Nome do computador>$

LocalSystem

Sistema Local

<Domínio>\<Nome do computador>$

(S-1-5-20)

Serviço de Rede

<Domínio>\<Nome do computador>$

NT AUTHORITY\NetworkService

Serviço de Rede

<Domínio>\<Nome do computador>$

(S-1-5-19)

Serviço local

Erro – consulte abaixo.

NT AUTHORITY\LocalService

Serviço local

Erro – consulte abaixo.

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 verdadeiro e o valor fornecido no UserName precisar ser convertido, o provedor WMI determinará se o banco de dados do servidor de relatório está localizado no mesmo computador ou em um computador remoto. 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 e 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 SQL Server. Isso assegura que o nome da conta usado transmitirá 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 o GrantRightsToDatabaseUser retornará um erro.

O script gerado dá suporte ao SQL Server 2000, SQL Server 2005 e ao SQL Server 2008.

Requisitos

Namespace: raiz\Microsoft\SqlServer\ReportServer\RS_<Nome_da_Instância_Codificado>\v10\Admin

Plataforma: Windows Server 2003, Datacenter Edition; Windows Server 2003, Enterprise Edition; Windows Server 2003, Standard Edition; Windows Vista; Windows XP Professional com Service Pack 2 (SP2) ou Service Pack 1 (SP1); ou Windows 2000 (todas as versões)

Consulte também

Referência