Método ConfigurationSetting - GenerateDatabaseRightsScript

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.

Observaciones

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>\<nombre de usuario>.

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 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 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 <Domain>\<Nombre de equipo>$
.\LocalSystem Sistema local <Domain>\<Nombre de equipo>$
NombreDeEquipo\LocalSystem Sistema local <Domain>\<Nombre de equipo>$
LocalSystem (Sistema local) Sistema local <Domain>\<Nombre de equipo>$
(S-1-5-20) Servicio de red <Domain>\<Nombre de equipo>$
NT AUTHORITY\NetworkService Servicio de red <Domain>\<Nombre de equipo>$
(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 de la cuenta y, luego, 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 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 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.

Requisitos

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

Consulte también

Miembros MSReportServer_ConfigurationSetting