Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
de Jason Lee
En este tema se describe cómo adaptar las propiedades de una base de datos a entornos de destino específicos como parte del proceso de implementación.
Nota:
En el tema se supone que va a implementar un proyecto de base de datos de Visual Studio 2010 mediante MSBuild.exe y VSDBCMD.exe. Para obtener más información sobre por qué puede elegir este enfoque, consulte Implementación web en enterprise e implementación de proyectos de base de datos.
Al implementar un proyecto de base de datos en varios destinos, a menudo querrá personalizar las propiedades de implementación de la base de datos para cada entorno de destino. Por ejemplo, en entornos de prueba normalmente volvería a crear la base de datos en cada implementación, mientras que en entornos de ensayo o producción sería mucho más probable que realice actualizaciones incrementales para conservar los datos.
En un proyecto de base de datos de Visual Studio 2010, la configuración de implementación se incluye en un archivo de configuración de implementación (.sqldeployment). En este tema se muestra cómo crear archivos de configuración de implementación específicos del entorno y especificar el que desea usar como parámetro VSDBCMD.
Este tema forma parte de una serie de tutoriales basados en los requisitos de implementación empresarial de una empresa ficticia denominada Fabrikam, Inc. En esta serie de tutoriales se usa una solución de ejemplo (la solución Contact Manager) para representar una aplicación web con un nivel realista de complejidad, incluida una aplicación de ASP.NET MVC 3, un servicio de Windows Communication Foundation (WCF) y un proyecto de base de datos.
El método de implementación en el centro de estos tutoriales se basa en el enfoque de archivo de proyecto dividido descrito en Descripción del archivo de proyecto, en el que el proceso de compilación se controla mediante dos archivos de proyecto, uno que contiene instrucciones de compilación que se aplican a todos los entornos de destino y uno que contiene la configuración de implementación y compilación específica del entorno. En tiempo de compilación, el archivo de proyecto específico del entorno se combina en el archivo de proyecto independiente del entorno para formar un conjunto completo de instrucciones de compilación.
Información general sobre tareas
En este tema se supone que:
- Use el enfoque de archivo de proyecto dividido para la implementación de soluciones, tal como se describe en Descripción del archivo de proyecto.
- Puede llamar a VSDBCMD desde el archivo de proyecto para implementar el proyecto de base de datos, como se describe en Descripción del proceso de compilación.
Para crear un sistema de implementación que admita la variación de las propiedades de implementación de la base de datos entre entornos de destino, deberá:
- Cree un archivo de configuración de implementación (.sqldeployment) para cada entorno de destino.
- Cree un comando de VSDBCMD que especifique el archivo de configuración de implementación como un interruptor de línea de comandos.
- Parametrice el comando VSDBCMD en un archivo de proyecto de Microsoft Build Engine (MSBuild), de modo que las opciones de VSDBCMD sean adecuadas para el entorno de destino.
En este tema se muestra cómo realizar cada uno de estos procedimientos.
Creación de archivos de configuración de implementación específicos del entorno
De forma predeterminada, un proyecto de base de datos contiene un único archivo de configuración de implementación denominado Database.sqldeployment. Si abre este archivo en Visual Studio 2010, puede ver las diferentes opciones de implementación disponibles para usted:
- Ordenación comparativa de implementaciones. Esto le permite elegir si se va a usar la intercalación de base de datos del proyecto (la intercalación de origen) o la intercalación de base de datos del servidor de destino (la intercalación de destino ). En la mayoría de los casos, querrás usar la intercalación de origen cuando implementes en un entorno de desarrollo o prueba. Al implementar en un entorno de ensayo o producción, normalmente se querrá dejar la intercalación de destino inalterada para evitar problemas de interoperabilidad.
- Implemente las propiedades de la base de datos. Esto le permite elegir si se aplican las propiedades de la base de datos, tal como se define en el archivo Database.sqlsettings . Al implementar una base de datos por primera vez, debe implementar las propiedades de la base de datos. Si estás actualizando una base de datos existente, las propiedades ya deberían estar configuradas, y no deberías necesitar desplegarlas de nuevo.
- Vuelva a crear siempre la base de datos. Esto le permite elegir si desea volver a crear la base de datos de destino cada vez que implemente o realice cambios incrementales para actualizar la base de datos de destino con el esquema. Si vuelve a crear la base de datos, perderá los datos de la base de datos existente. Por lo tanto, normalmente debe establecer esto en false para las implementaciones en entornos de ensayo o producción.
- Bloquear la implementación incremental si se puede producir una pérdida de datos. Esto le permite elegir si la implementación debe detenerse si un cambio en el esquema de la base de datos provocará la pérdida de datos. Normalmente, esto se establece en true para una implementación en un entorno de producción, para ofrecerle la oportunidad de intervenir y proteger los datos importantes. Si ha establecido Volver a crear siempre la base de datos en false, esta configuración no tendrá ningún efecto.
- Ejecute la implementación en modo de usuario único. Esto no suele ser un problema en entornos de desarrollo o pruebas. Sin embargo, normalmente debe establecer esto en true para las implementaciones en entornos de ensayo o producción. Esto impide que los usuarios realicen cambios en la base de datos mientras la implementación está en curso.
- Copia de seguridad de la base de datos antes de la implementación. Normalmente, esto se establece en true cuando se implementa en un entorno de producción, como medida de precaución contra la pérdida de datos. También puede establecerlo en true cuando se implementa en un entorno de ensayo, si la base de datos de almacenamiento provisional contiene una gran cantidad de datos.
- Genere instrucciones DROP para objetos que se encuentran en la base de datos de destino, pero que no están en el proyecto de base de datos. En la mayoría de los casos, se trata de una parte integral y esencial de realizar cambios incrementales en una base de datos. Si ha establecido Volver a crear siempre la base de datos en false, esta configuración no tendrá ningún efecto.
- No use las instrucciones ALTER ASSEMBLY para actualizar los tipos CLR. Esta configuración determina cómo SQL Server debe actualizar los tipos de Common Language Runtime (CLR) a las versiones de ensamblado más recientes. Debe establecerse en false en la mayoría de los escenarios.
En esta tabla se muestra la configuración de implementación típica para distintos entornos de destino. Sin embargo, la configuración puede ser diferente en función de sus requisitos exactos.
| Desarrollador/prueba | Ensayo e integración | Producción | |
|---|---|---|---|
| Comparación de implementaciones | Fuente | Objetivo | Objetivo |
| Implementación de propiedades de base de datos | Cierto | Solo la primera vez | Solo la primera vez |
| Volver a crear siempre la base de datos | Cierto | Falso | Falso |
| Bloquear la implementación incremental si se puede producir una pérdida de datos | Falso | Es posible | Cierto |
| Ejecutar script de implementación en modo de usuario único | Falso | Cierto | Cierto |
| Copia de seguridad de la base de datos antes de la implementación | Falso | Es posible | Cierto |
| Generar instrucciones DROP para objetos que se encuentran en la base de datos de destino, pero que no están en el proyecto de base de datos | Falso | Cierto | Cierto |
| No utilice la instrucción ALTER ASSEMBLY para actualizar los tipos CLR | Falso | Falso | Falso |
Nota:
Para obtener más información sobre las propiedades de implementación de bases de datos y las consideraciones sobre el entorno, vea Información general sobre la configuración del proyecto de base de datos, Cómo: Configurar propiedades para detalles de implementación, Compilar e implementar base de datos en un entorno de desarrollo aislado y Compilar e implementar bases de datos en un entorno de ensayo o producción.
Para admitir la implementación de un proyecto de base de datos en varios destinos, debe crear un archivo de configuración de implementación para cada entorno de destino.
Para crear un archivo de configuración específico del entorno
En Visual Studio 2010, en la ventana Explorador de soluciones, haga clic con el botón derecho en el proyecto de base de datos y, a continuación, haga clic en Propiedades.
En la página de propiedades del proyecto de base de datos, en la pestaña Implementar , en la fila Archivo de configuración de implementación , haga clic en Nuevo.
En el cuadro de diálogo Nuevo archivo de configuración de implementación , asigne al archivo un nombre descriptivo (por ejemplo, TestEnvironment.sqldeployment) y, a continuación, haga clic en Guardar.
En la página [Filename].sqldeployment , establezca las propiedades de implementación para que coincidan con los requisitos del entorno de destino y guarde el archivo.
Observe que el nuevo archivo se agrega a la carpeta Propiedades del proyecto de base de datos.
Especificación del archivo de configuración de implementación en VSDBCMD
Al usar configuraciones de solución (como Depurar y Liberar) en Visual Studio 2010, puede asociar un archivo de configuración de implementación a cada configuración. Al compilar una configuración determinada, el proceso de compilación genera un archivo de manifiesto de implementación específico de la configuración que apunta al archivo de configuración de implementación específico de la configuración. Sin embargo, uno de los principales objetivos del enfoque de implementación descrito en estos tutoriales es proporcionar a los usuarios la capacidad de controlar el proceso de implementación sin usar las configuraciones de soluciones y Visual Studio 2010. En este enfoque, la configuración de la solución es la misma independientemente del entorno de implementación de destino. Para adaptar la implementación de la base de datos a un entorno de destino específico, puede usar las opciones de línea de comandos de VSDBCMD para especificar el archivo de configuración de implementación.
Para especificar un archivo de configuración de implementación en VSDBCMD, use el modificador p:/DeploymentConfigurationFile y proporcione la ruta de acceso completa al archivo. Esto invalidará el archivo de configuración de implementación que identifica el manifiesto de implementación. Por ejemplo, puede usar este comando VSDBCMD para implementar la base de datos ContactManager en un entorno de prueba:
vsdbcmd.exe /a:Deploy
/manifest:"…\ContactManager.Database.deploymanifest"
/cs:"Data Source=TESTDB1;Integrated Security=true"
/p:TargetDatabase=ContactManager
/p:DeploymentConfigurationFile=
"…\ContactManager.Database_TestEnvironment.sqldeployment"
/dd+
/script:"…\Publish-ContactManager-Db.sql"
Nota:
Tenga en cuenta que el proceso de compilación puede cambiar el nombre del archivo .sqldeployment cuando copia el archivo en el directorio de salida.
Si usa variables de comando SQL en los scripts SQL anteriores a la implementación o posteriores a la implementación, puede usar un enfoque similar para asociar un archivo .sqlcmdvars específico del entorno con la implementación. En este caso, se usa el conmutador p:/SqlCommandVariablesFile para identificar el archivo .sqlcmdvars.
Ejecución del comando VSDBCMD desde un archivo de proyecto de MSBuild
Puede invocar un comando VSDBCMD desde un archivo de proyecto de MSBuild mediante una tarea Exec dentro de un destino de MSBuild. En su forma más sencilla, tendría el siguiente aspecto:
<Target Name="DeployDatabase">
<PropertyGroup>
<_Cmd>
Add your VSDBCMD command here
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
- En la práctica, para facilitar la lectura y reutilización de los archivos del proyecto, querrá crear propiedades para almacenar los distintos parámetros de la línea de comandos. Esto facilita a los usuarios proporcionar valores de propiedad en un archivo de proyecto específico del entorno o invalidar los valores predeterminados de la línea de comandos de MSBuild. Si usa el enfoque de archivo de proyecto dividido descrito en Descripción del archivo de proyecto, debe dividir las instrucciones de compilación y las propiedades entre los dos archivos en consecuencia:
- La configuración específica del entorno, como el nombre de archivo de configuración de implementación, la cadena de conexión de la base de datos y el nombre de la base de datos de destino, deben ir en el archivo de proyecto específico del entorno.
- El destino de MSBuild que ejecuta el comando VSDBCMD, junto con cualquier propiedad universal, como la ubicación del ejecutable VSDBCMD, debe ir en el archivo de proyecto universal.
También debe asegurarse de compilar el proyecto de base de datos antes de invocar VSDBCMD para que el archivo .deploymanifest se cree y esté listo para usarse. Puede ver un ejemplo completo de este enfoque en el tema Descripción del proceso de compilación, que le guía a través de los archivos del proyecto en la solución de ejemplo contact Manager.
Conclusión
En este tema se describe cómo puede adaptar las propiedades de la base de datos a distintos entornos de destino al implementar proyectos de base de datos mediante MSBuild y VSDBCMD. Este enfoque es útil cuando necesita implementar proyectos de base de datos como parte de soluciones de escala empresarial más grandes. Estas soluciones a menudo se implementan en varios destinos, como entornos de desarrollo o prueba en un entorno aislado, plataformas de preparación o integración, y entornos de producción o en directo. Cada uno de estos entornos de destino normalmente requiere un conjunto único de propiedades de implementación de base de datos.
Lecturas adicionales
Para obtener más información sobre la implementación de proyectos de base de datos mediante VSDBCMD.exe, vea Deploying Database Projects. Para obtener más información sobre el uso de archivos de proyecto de MSBuild personalizados para controlar el proceso de implementación, vea Descripción del archivo del proyecto y Descripción del proceso de compilación.
En estos artículos de MSDN se proporcionan instrucciones más generales sobre la implementación de bases de datos: