Implementación de Xcopy (SQL Server Express)

Microsoft SQL Server 2005 Express Edition (SQL Server Express) admite la implementación de una aplicación y la base de datos de SQL Server Express mediante Xcopy, lo que simplifica de manera importante la distribución de las aplicaciones que utilizan bases de datos de SQL Server Express.

¿En qué consiste una implementación mediante Xcopy?

La implementación mediante Xcopy permite copiar la aplicación y el archivo de base de datos (.mdf) en otro equipo o en una ubicación diferente del mismo equipo, sin que sea necesaria ninguna configuración adicional. Para utilizar la implementación mediante Xcopy, SQL Server Express debe estar instalado previamente en el equipo de destino y tener una instancia en ejecución. Para obtener más información acerca de las instancias, vea Usar instancias con nombre.

Con Xcopy, cuando se distribuye una aplicación a los usuarios, se pueden enviar solamente los archivos .exe y .mdf. Cada usuario puede colocarlos en una carpeta y hacer doble clic en el archivo .exe para empezar a usar la aplicación.

¿Cómo funciona una implementación mediante Xcopy?

SQL Server Express puede adjuntar automáticamente un archivo .mdf a una instancia de SQL Server Express en ejecución la primera vez que una aplicación establece una conexión. Cuando el usuario cierra la aplicación o sale de la misma, SQL Server Express separa el archivo .mdf de la instancia. El resultado es que el archivo .mdf es totalmente transferible: el archivo se puede copiar y mover, y se pueden ejecutar simultáneamente varias copias del mismo en la misma instancia.

Asignación de nombres de bases de datos lógicos

Cuando SQL Server Express adjunta una base de datos, genera automáticamente un nombre lógico para la base de datos, a menos que en la cadena de conexión de la aplicación se especifique un nombre lógico. El nombre lógico debe ser único. SQL Server Express utilizará como nombre lógico la letra de la unidad, el nombre del directorio y el nombre de archivo de la base de datos. Por ejemplo, si el archivo .mdf se encuentra en la ruta de acceso C:\Archivos de programa\Mi aplicación\Data\MainData.mdf, SQL Server Express asignará un nombre de base de datos lógico que coincidirá exactamente con la ruta de acceso: C:\Archivos de programa\Mi aplicación\Data\MainData.mdf.

[!NOTA] Si la longitud de la ruta de acceso completa y del nombre de archivo es superior a 127 caracteres, el nombre lógico de la base de datos se abrevia y se le agrega un GUID, con lo que se garantiza que el nombre lógico será único.

Creación de archivos de registro y asignación de nombres

Al implementar una aplicación, debe utilizarse Xcopy solamente con los archivos de aplicación y el archivo .mdf. No debe incluirse el archivo de registro (.ldf). SQL Server Express creará automáticamente un nuevo archivo de registro al adjuntar la base de datos. SQL Server Express asignará al archivo de registro el nombre nombre_de_base_de_datos_log.ldf. Si ya existe un archivo con ese nombre en el mismo directorio que el archivo .mdf, se usará el archivo existente.

Limitaciones de la implementación mediante Xcopy

Cuando se implementa una aplicación mediante Xcopy, 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:

  • No funcionará ningún código Transact-SQL que contenga nombres de bases de datos lógicos.
    Dado que el nombre lógico de la base de datos depende de la ubicación del archivo, que cambia con cada operación Xcopy, cualquier código que especifique un nombre de base de datos lógico generará un error.
  • Los escenarios de réplica no funcionan.
    La réplica requiere un nombre de base de datos lógico permanente. Si una aplicación utiliza la réplica, no debe utilizarse la implementación mediante Xcopy.

Implementación mediante Xcopy para administradores en una instancia de SQL Server Express

Para que una aplicación funcione con la característica de implementación mediante Xcopy de SQL Server Express, es necesario comprobar que la cadena de conexión que se utilice en la aplicación contenga los parámetros correctos:

  • Utilice el parámetro data source, pero cambie el nombre del equipo a un punto (.) o a (local). También debe especificar el nombre de la instancia, a menos que esté seguro de que SQL Server Express va a instalarse siempre en una instancia sin nombre. Para obtener más información acerca de las instancias con nombre y sin nombre, vea Usar instancias con nombre.
  • Use el parámetro initial catalog o database, pero no lo establezca en ningún valor.
  • Agregue el parámetro AttachDBFileName y establézcalo en el nombre y la ruta de acceso del archivo .mdf. Attachdbfilename es una opción de cadena de conexión SqlClient que permite adjuntar bases de datos en tiempo de ejecución y genera automáticamente el nombre de la base de datos. La palabra clave DataDirectory permite especificar la ruta de acceso relativa de un archivo de base de datos. Attachdbfilename también favorece la portabilidad de la base de datos. Para obtener más información acerca de Attachdbfilename, vea la documentación de Visual Studio 2005.

La siguiente cadena de conexión adjunta el archivo de base de datos MyDb.mdf, que se encuentra en la misma carpeta que el archivo ejecutable de la aplicación, a la instancia de SQL Server Express que se ejecuta en el equipo local.

@"Data Source='.\SQLExpress'; Initial Catalog=; Integrated 
Security=true; AttachDBFileName='" |DataDirectory| + 
@"\MyDb.mdf'"

Implementación mediante Xcopy para no administradores en una instancia de SQL Server Express

Además de todos los parámetros especificados en la cadena de conexión para la implementación mediante Xcopy dirigida a administradores, debe especificarse el parámetro user instance si se va a implementar una aplicación para usuarios que no tienen privilegios administrativos en la instancia de SQL Server Express. Para obtener más información acerca de las instancias de usuario, vea Instancias de usuario para usuarios que no son administradores.

Vea también

Otros recursos

Distribuir SQL Server Express

Ayuda e información

Obtener ayuda sobre SQL Server 2005