Implementación de Xcopy (SQL Server Express)

Xcopy es una manera simplificada de implementar aplicaciones y bases de datos de SQL Server Express. La implementación mediante Xcopy le permite copiar una nueva aplicación (.exe) y el archivo de base de datos (.mdf) en otro equipo o en una ubicación diferente del mismo equipo. No se requiere ninguna configuración adicional.

Para distribuir la aplicación a los usuarios, basta con enviar los archivos .exe y .mdf. Cada usuario puede guardar localmente los archivos y simplemente hacer doble clic en el archivo .exe para iniciar la aplicación. Si una aplicación utiliza la replicación, no debe utilizarse la implementación mediante Xcopy.

Para utilizar la implementación mediante Xcopy, SQL Server Express debe estar instalado en el equipo de destino y tener una instancia en ejecución. Para obtener más información, vea Instancias de usuario para usuarios que no son administradores.

¿Cómo se utiliza la implementación mediante Xcopy?

La primera vez que una aplicación establezca una conexión desde una instancia de SQL Server Express en ejecución, SQL Server Express adjuntará automáticamente un archivo .mdf. Cuando el usuario cierra la aplicación, SQL Server Express separa el archivo .mdf de la instancia. La característica Xcopy hace que el archivo .mdf sea totalmente transportable. Puede copiar y mover el archivo y, al mismo tiempo, ejecutar varias copias del archivo 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 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 el 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 como prefijo. Esto garantiza que el nombre lógico sea único.

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

Al implementar una aplicación, solamente deben incluirse en Xcopy los archivos de la aplicación y el archivo .mdf. No es necesario incluir 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 el mismo nombre en el mismo directorio que el archivo .mdf, se utiliza 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 replicación no funcionan.

    La replicación requiere un nombre de base de datos lógico permanente. Si una aplicación utiliza la replicación, 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 (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.

  • 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 de 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

Para implementar una aplicación para los usuarios que no tienen derechos de usuario administrativos en la instancia de SQL Server Express, debe especificar lo siguiente:

  • Los parámetros de la cadena de conexión para la implementación mediante Xcopy.

  • El parámetro user instance.

Para obtener más información, vea Instancias de usuario para usuarios que no son administradores.

Vea también

Otros recursos