Instancias de usuario para usuarios que no son administradores

Las instancias de usuario son una característica que permite a los usuarios que no son administradores ejecutar una versión local de SQL Server en su propia cuenta. Con las instancias de usuario, los usuarios que no son administradores tienen los privilegios del propietario de la base de datos en la instancia que se ejecuta en su propia cuenta. 

Nota importanteImportante

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

La instancia de usuario, también denominada instancia secundaria o cliente, es una instancia de SQL Server generada por la instancia primaria (la instancia principal que se ejecuta como servicio, como sqlExpress) en nombre de un usuario. La instancia de usuario se ejecuta como un proceso de usuario en el contexto de seguridad de dicho usuario. La instancia de usuario está aislada de la instancia primaria y de las demás instancias de usuario que se ejecutan en el equipo. La característica de instancias de usuario también se denomina "Ejecutar como usuario normal" (RANU).

Nota

Por coherencia, en los Libros en pantalla de SQL Server Express, esta característica se denomina instancia de usuario. Además, esta característica se introdujo con SQL Server 2005 Express Edition.

Motivos para usar instancias de usuario

A continuación se exponen algunas de las razones por las cuales puede ser ventajoso usar el modelo de instancia de usuario:

  • El principal objetivo del modelo de instancia de usuario es aislar a los usuarios de SQL Server que no sean administradores, permitiendo que adjunten bases de datos arbitrarias sin el riesgo de comprometer a otro usuario. Este aislamiento se obtiene al generar una instancia independiente de SQL Server para cada usuario.

  • Además del aislamiento, la finalidad de SQL Server Express es también simplificar el trabajo a los usuarios que no sean administradores. Muchos usuarios de Windows tienen cuentas con privilegios administrativos. Desafortunadamente, al trabajar como administrador, es fácil que software malintencionado tome posesión del equipo de un usuario. Sin embargo, el software malintencionado ejecutado por usuarios no administradores no puede realizar cambios en el sistema y, por tanto, su daño es limitado.

Información general sobre las instancias de usuario

El modelo de instancia de usuario se puede resumir de la manera siguiente:

  • Para generar instancias de usuario, debe estar ejecutándose una instancia primaria de SQL Server.

  • Siempre que se instala SQL Server Express, el programa de instalación crea una carpeta de datos de plantilla que almacena las bases de datos del sistema limpias que van a ser utilizadas por el proceso de instancia de usuario, si se invoca.

  • Para invocar la instancia de usuario, se usa la palabra clave de cadena de conexión user instance en SQLClient, que puede ser true o false (de manera predeterminada, es false). Si se establece en false, no se admite el uso de instancias de usuario y se mantiene el comportamiento original. Si user instance se establece en true, se activará el modelo de instancia de usuario durante la llamada connection.open de ADO .NET.

    Nota

    El espacio de nombres System.Data.SqlClient define un conjunto de clases que permiten el acceso a la base de datos SQL Server y que, colectivamente, se conocen como el proveedor de datos .NET para SQL Server, o SqlClient. Las aplicaciones administradas interactúan con SqlClient a través de la API ADO .NET para consultar y manipular los datos y la información del esquema almacenada en las bases de datos de SQL Server. Para obtener más información, vea la documentación de Visual Studio 2005.

  • La primera vez que se genera una instancia de usuario para un usuario, las bases de datos del sistema se copian de la carpeta de datos de plantilla (Template Data) a una ruta de acceso en el directorio del repositorio de datos de aplicación local del usuario para que las use exclusivamente la instancia de usuario. Esta ruta suele ser unidad:\Documents and Settings\Username\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS.

  • El usuario se conecta a esta nueva instancia de usuario como SysAdmin y usa la base de datos incluso aunque no sea administrador en la instancia primaria.

    Nota de seguridadNota de seguridad

    Los inicios de sesión proporcionados como miembros del rol fijo de servidor sysadmin durante la instalación se proporcionan como administradores en la base de datos de plantilla. Son miembros del rol fijo de servidor sysadmin en la instancia de usuario a menos que se quite.

  • Cuando se genera la instancia de usuario, SQLClient redirige todas las llamadas a la instancia de usuario.

Nota

Las bases de datos de usuario derivan sus propiedades READONLY basándose en los atributos y permisos de sistema de archivos del archivo principal de la base de datos. No se aplica la configuración de ALTER DATABASE SET READ_ONLY/READ_WRITE.

Cadena de conexión para usar la instancia de usuario

conn string =
"Data Source=.\\SQLExpress" +
"integrated security=true;" + 
"attachdbfilename=|DataDirectory|\mydb.mdf;" +
"user instance=true"
string connstr = GetConnectionString(); // get from config
using(SqlConnection conn = new SqlConnection(connstr)) {
  // this will connect to the user instance, not to the 
  // default SSE instance
  conn.Open();
  // use the connection to the user instance
}

Conectar con una instancia de usuario

El único protocolo de red admitido para las instancias de usuario es el de canalizaciones con nombre locales, lo que implica que un usuario no se puede conectar a una instancia de usuario desde un equipo remoto.

Para obtener información acerca de la conexión a una instancia de usuario mediante SQL Server Management Studio, vea "SQL Server Management Studio y SQL Server Express" en los Libros en pantalla de SQL Server Express

Nota

Para obtener más información acerca de las canalizaciones con nombre o los protocolos de red, vea la Ayuda del Administrador de configuración de SQL Server. Para tener acceso a esta Ayuda, en el menú Inicio, haga clic en Ejecutar y escriba SQLServerManager.msc. Se abrirá el Administrador de configuración de SQL Server. Para tener acceso a la Ayuda, haga clic en el menú Ayuda. Para ver los protocolos de red de SQL Server, haga clic en Configuración de red de SQL Server.

Administración de instancias de usuario

Si es un administrador y desea administrar instancias de usuario, le será útil la siguiente información.

Vista/procedimiento almacenado/Transact-SQL

Descripción

Seleccione * en sys.dm_os_child_instances (Transact-SQL)

Permite ejecutar una vista virtual que muestra todas las instancias de usuario generadas en la instancia primaria.

SHUTDOWN

Detiene SQL Server. Use este comando para detener la instancia de usuario. Para obtener más información sobre cómo usar SHUTDOWN, vea SHUTDOWN (Transact-SQL) en los Libros en pantalla de SQL Server.

sp_configure 'user instances enabled'

Controla si la característica de instancias de usuario está habilitada o deshabilitada.

Para habilitar la generación de instancias de usuario, use:

sp_configure 'user instances enabled','1' 

RECONFIGURE;

GO

Para deshabilitar la generación de instancias de usuario, use:

sp_configure 'user instances enabled','0'.

sp_configure ‘user instance timeout’

Use:

sp_configure 'show advanced options', 1;

RECONFIGURE;

GO

sp_configure 'user instance timeout', 5;

GO

Donde 5 es el valor mínimo y 65535 es el valor máximo.

sp_configure ‘show advanced options’ es necesario para ver y establecer el tiempo de espera. Para obtener más información acerca de 'show advanced options', vea (Establecer las opciones de configuración del servidor) en los Libros en pantalla de SQL Server.

El tiempo de espera de las instancias de usuario se puede establecer tanto en la instancia primaria como en la instancia de usuario.

Cuando se inicia una instancia de usuario, ésta siempre obtiene el valor de tiempo de espera de la instancia primaria. Sin embargo, una vez iniciada, se puede usar sp_configure en la instancia de usuario para cambiar el valor de tiempo de espera que es válido únicamente para esta instancia específica.

Limitaciones en el uso de instancias de usuario

Cuando se utilizan instancias de usuario, es posible que algunas características de SQL Server Express no funcionen de la manera esperada. En la lista siguiente se describen las posibles limitaciones:

  • Un usuario sólo puede tener una instancia de usuario.

  • La replicación estará deshabilitada.

  • Las instancias de usuario no admiten la autenticación de SQL Server. Sólo se admite la autenticación de Windows.

  • El único protocolo de red admitido para las instancias de usuario es el de canalizaciones con nombre locales.

  • La instancia de usuario comparte las entradas del Registro de la instancia primaria.

  • No se admiten las instancias de usuario con código nativo. Esta característica sólo se admite con ADO .NET.

  • No se admiten las búsquedas de texto completo en una instancia de usuario de SQL Server Express.

  • El proveedor WMI de eventos de servidor no se admite en las instancias de usuario generadas dinámicamente. Debería seguir funcionando en la instancia primaria de SQL Server Express. Para obtener más información acerca del proveedor WMI, vea (Proveedor WMI de eventos de servidor) en los Libros en pantalla de SQL Server.