Método GenerateDatabaseRightsScript (WMI MSReportServer_ConfigurationSetting)

Genera un script SQL que se puede usar para conceder derechos a un usuario sobre la base de datos del servidor de informes y otras bases de datos necesarias para el funcionamiento de un servidor de informes. Se espera que el autor de la llamada se conecte al servidor de base de datos de SQL Server y ejecute el script.

Sintaxis

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
    Nombre de usuario o identificador de seguridad de Windows (SID) del usuario al que el script concederá derechos.

  • DatabaseName
    Nombre de base de datos para el que el script concederá acceso al usuario.

  • IsRemote
    Valor booleano que indica si la base de datos es remota desde el servidor de informes.

  • IsWindowsUser
    Valor booleano que indica si el nombre de usuario especificado es un usuario de Windows o un usuario de SQL Server.

  • Script
    [out] Una cadena que contiene el script SQL Server generado.

  • HRESULT
    [out] Valor que indica si la llamada se realizó correctamente o no.

Valor devuelto

Devuelve HRESULT que indica si la llamada al método se realizó correctamente o no. Un valor de 0 indica que la llamada al método se realizó correctamente. Un valor distinto de cero indica que se ha producido un error.

Notas

Si DatabaseName está vacío, IsRemote se omite y el valor del archivo de configuración del servidor de informes se usa para el nombre de base de datos.

Si IsWindowsUser está establecido en true, UserName deberá estar en el formato <dominio>\<nombre de usuario>.

Cuando IsWindowsUser está establecido en true, el script generado concede derechos de inicio de sesión al usuario para el servidor SQL Server, estableciendo la base de datos del servidor de informes como base de datos predeterminada, y concede la función RSExec en la base de datos del servidor de informes, la base de datos temporal del servidor de informes, la base de datos maestra y la base de datos del sistema MSDB.

Cuando IsWindowsUser está establecido en true, el método acepta los SID de Windows estándar como entrada. Cuando se proporciona un SID de Windows estándar o el nombre de la cuenta de servicio, se traduce a una cadena de nombre de usuario. Si la base de datos es local, la cuenta se traduce a la representación localizada correcta de la cuenta. Si la base de datos es remota, la cuenta se representa como la cuenta del equipo.

En la tabla siguiente, se muestran cuentas que están traducidas y su representación remota.

Cuenta / SID traducido

Nombre común

Nombre remoto

(S-1-5-18)

Sistema local

<Dominio>\<nombreDeEquipo>$

.\LocalSystem

Sistema local

<Dominio>\<nombreDeEquipo>$

NombreDeEquipo\LocalSystem

Sistema local

<Dominio>\<nombreDeEquipo>$

LocalSystem

Sistema local

<Dominio>\<nombreDeEquipo>$

(S-1-5-20)

Servicio de red

<Dominio>\<nombreDeEquipo>$

NT AUTHORITY\NetworkService

Servicio de red

<Dominio>\<nombreDeEquipo>$

(S-1-5-19)

Servicio local

Error: vea a continuación.

NT AUTHORITY\LocalService

Servicio local

Error: vea a continuación.

En Windows 2000, si está utilizando una cuenta integrada y la base de datos del servidor de informes es remota, se devuelve un error.

Si se especifica la cuenta integrada LocalService y la base de datos del servidor de informes es remota, se devuelve un error.

Cuando IsWindowsUser es verdadero y el valor proporcionado en UserName debe traducirse, el proveedor WMI determina si la base de datos del servidor de informes se encuentra en el mismo equipo o en un equipo remoto. Para determinar si la instalación es local, el proveedor WMI evalúa la propiedad DatabaseServerName con la lista siguiente de valores. Si se encuentra una coincidencia, la base de datos es local. De lo contrario, es remota. La comparación distingue entre mayúsculas y minúsculas.

Valor de DatabaseServerName

Ejemplo

“.”

"(local)"

"LOCAL"

localhost

<Machinename>

testlab14

<MachineFQDN>

example.redmond.microsoft.com

<IPAddress>

180.012.345,678

Cuando IsWindowsUser está establecido en true, el proveedor WMI llama a LookupAccountName para obtener el SID para la cuenta y, a continuación, llama a LookupAccountSID para obtener el nombre e insertarlo en el script SQL Server. Esto asegura que el nombre de la cuenta que se utiliza pasará la validación SQL Server.

Cuando IsWindowsUser está establecido en false, el script generado concede la función RSExec en la base de datos del servidor de informes, la base de datos temporal del servidor de informes y la base de datos MSDB.

Cuando IsWindowsUser está establecido en false, el usuario de SQL Server debe existir con antelación en SQL Server para que el script se ejecute correctamente.

Si el servidor de informes no cuenta con una base de datos del servidor de informes especificada, al llamar a GrantRightsToDatabaseUser, se devuelve un error.

El script generado admite SQL Server 2000, SQL Server 2005 y SQL Server 2008.

Requisitos

**Espacio de nombres:**raíz\Microsoft\SqlServer\servidorDeInformes\RS_<nombreDeInstanciaCodificado>\v10\Admin

**Plataforma:**Windows Server 2003, Datacenter Edition; Windows Server 2003, Enterprise Edition; Windows Server 2003, Standard Edition; Windows Vista; Windows XP Professional con Service Pack 2 (SP2) o Service Pack 1 (SP1) o Windows 2000 (todas las versiones)