Compartir a través de


Método ConfigurationSetting - GenerateDatabaseRightsScript

Genera un script SQL que se puede utilizar para conceder permisos de usuario a la base de datos del servidor de informes. Además, concede acceso a otras bases de datos necesarias para que se ejecute un servidor de informes. El autor de la llamada debe conectarse al servidor de base de datos de SQL Server y ejecutar 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 concede derechos.

DatabaseName
Nombre de base de datos para el que el script concede 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] Cadena que contiene el script generado de SQL Server.

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.

Comentarios

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 debe tener el formato <domain>\<username>.

Cuando IsWindowsUser está establecido en true, el script generado concede derechos de inicio de sesión al usuario para SQL Server, estableciendo la base de datos del servidor de informes como base de datos predeterminada, y concede el rol RSExec en la base de datos del servidor de informes, la base de datos temporal del servidor de informes, la base de datos principal 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 las 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) 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
NT AUTHORITY\LocalService Servicio local Error

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 true, el proveedor WMI determina si la base de datos del servidor de informes se encuentra en el mismo equipo o en un equipo remoto. Esta determinación se realiza cuando es necesario traducir el valor proporcionado en UserName. 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 de la cuenta y, luego, llama a LookupAccountSID para obtener el nombre e insertarlo en el script de SQL Server. Esta acción asegura que el nombre de la cuenta que se utiliza pase la validación de SQL Server.

Cuando IsWindowsUser está establecido en false, el script generado concede el rol 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 ya debe existir en la instancia de 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 (8.x), SQL Server 2005 y SQL Server 2008 (10.0.x).

Requisitos

Espacio de nombres: root\Microsoft\SqlServer\ReportServer\<nombreDeInstancia>\v13\Admin