Compartir a través de


Implementación de una aplicación web de ASP.NET con SQL Server Compact mediante Visual Studio o Visual Web Developer: Migración a SQL Server - 10 de 12

Por Tom Dykstra

Descarga del proyecto de inicio

En esta serie de tutoriales se muestra cómo implementar (publicar) un proyecto de aplicación web de ASP.NET que incluye una base de datos de SQL Server Compact mediante Visual Studio 2012 RC o Visual Studio Express 2012 RC para la web. También puede usar Visual Studio 2010 si instala la actualización de publicación web. Para obtener una introducción a la serie, consulte el primer tutorial de la serie.

Para ver un tutorial que muestra las características de implementación introducidas después de la versión RC de Visual Studio 2012, muestra cómo implementar ediciones de SQL Server distintas de SQL Server Compact y muestra cómo implementar en Azure App Service Web Apps, consulte Implementación web de ASP.NET con Visual Studio.

Información general

En este tutorial se muestra cómo migrar de SQL Server Compact a SQL Server. Una razón por la que puede querer hacerlo es aprovechar las características de SQL Server que SQL Server Compact no admite, como procedimientos almacenados, desencadenadores, vistas o replicación. Para obtener más información sobre las diferencias entre SQL Server Compact y SQL Server, consulte el tutorial Implementación de SQL Server Compact.

SQL Server Express frente a SQL Server completo para el desarrollo

Una vez que haya decidido actualizar a SQL Server, es posible que quiera usar SQL Server o SQL Server Express en los entornos de desarrollo y prueba. Además de las diferencias en la compatibilidad con herramientas y en las características del motor de base de datos, existen diferencias en las implementaciones del proveedor entre SQL Server Compact y otras versiones de SQL Server. Estas diferencias pueden provocar que el mismo código genere resultados diferentes. Por lo tanto, si decide mantener SQL Server Compact como base de datos de desarrollo, debe probar exhaustivamente el sitio en SQL Server o SQL Server Express en un entorno de prueba antes de cada implementación en producción.

A diferencia de SQL Server Compact, SQL Server Express es básicamente el mismo motor de base de datos y usa el mismo proveedor de .NET que sql Server completo. Al probar con SQL Server Express, puede estar seguro de obtener los mismos resultados que con SQL Server. Puede usar la mayoría de las mismas herramientas de base de datos con SQL Server Express que puede usar con SQL Server (una excepción notable que es SQL Server Profiler) y admite otras características de SQL Server, como procedimientos almacenados, vistas, desencadenadores y replicación. (Normalmente, tiene que usar SQL Server completo en un sitio web de producción, sin embargo. SQL Server Express se puede ejecutar en un entorno de hospedaje compartido, pero no se diseñó para eso y muchos proveedores de hospedaje no lo admiten).

Si usa Visual Studio 2012, normalmente elige SQL Server Express LocalDB para el entorno de desarrollo, ya que es lo que se instala de forma predeterminada con Visual Studio. Sin embargo, LocalDB no funciona en IIS, por lo que para el entorno de prueba debe usar SQL Server o SQL Server Express.

Combinar bases de datos frente a mantenerlas separadas

La aplicación Contoso University tiene dos bases de datos de SQL Server Compact: la base de datos de pertenencia (aspnet.sdf) y la base de datos de aplicaciones (School.sdf). Al migrar, puede migrar estas bases de datos a dos bases de datos independientes o a una base de datos única. Es posible que quiera combinarlas para facilitar las combinaciones de base de datos entre la base de datos de la aplicación y la base de datos de pertenencia. El plan de hospedaje también puede proporcionar un motivo para combinarlos. Por ejemplo, puede que el proveedor de alojamiento cobre más por múltiples bases de datos o que ni siquiera permita más de una. Este es el caso de la cuenta de hospedaje Cytanium Lite que se usa para este tutorial, que solo permite una base de datos única de SQL Server.

En este tutorial, migrará las dos bases de datos de esta manera:

  • Migre a dos bases de datos de LocalDB en el entorno de desarrollo.
  • Migre a dos bases de datos de SQL Server Express en el entorno de prueba.
  • Migre a una base de datos completa de SQL Server combinada en el entorno de producción.

Aviso: Si recibe un mensaje de error o algo no funciona mientras recorre el tutorial, asegúrese de comprobar la página de solución de problemas.

Instalación de SQL Server Express

SQL Server Express se instala automáticamente de forma predeterminada con Visual Studio 2010, pero de forma predeterminada no está instalado con Visual Studio 2012. Para instalar SQL Server 2012 Express, haga clic en el vínculo siguiente

Elija ENU/x64/SQLEXPR_x64_ENU.exe o ENU/x86/SQLEXPR_x86_ENU.exey, en el asistente para instalación, acepte la configuración predeterminada. Para más información sobre las opciones de instalación, vea Instalación de SQL Server 2012 desde el Asistente para la instalación (programa de instalación).

Creación de bases de datos de SQL Server Express para el entorno de prueba

El siguiente paso es crear las bases de datos ASP.NET pertenencia y escuela.

En el menú Ver, seleccione Explorador de servidores (Explorador de bases de datos en Visual Web Developer) y, a continuación, haga clic con el botón derecho en Conexiones de datos y seleccione Crear nueva base de datos deSQL Server.

Selecting_Create_New_SQL_Server_Database

En el cuadro de diálogo Crear nueva base de datos de SQL Server, escriba ".\SQLExpress" en el cuadro Nombre del servidor y "aspnet-ContosoUniversity" en el cuadro Nuevo nombre de base de datos, luefgo haga clic en Aceptar.

Create_New_SQL_Server_Database_aspnet

Siga el mismo procedimiento para crear nueva base de datos de SQL Server Express School denominada.

(Va a anexar "Prueba" a estos nombres de base de datos porque más adelante creará una instancia adicional de cada base de datos para el entorno de desarrollo y deberá poder diferenciar los dos conjuntos de bases de datos).

En el Explorador de servidores se muestran las dos bases de datos nuevas.

New_databases_in_Server_Explorer

Creación de un script de concesión para las nuevas bases de datos

Cuando la aplicación se ejecuta en IIS en el equipo de desarrollo, usa las credenciales del grupo de aplicaciones predeterminado para acceder a la base de datos. Pero, de manera predeterminada, el grupo de aplicaciones no tiene permiso para abrir las bases de datos. Por lo tanto, debe ejecutar un script para conceder ese permiso. En esta sección, creará ese script y lo ejecutará más adelante para asegurarse de que la aplicación puede abrir las bases de datos cuando se ejecute en IIS.

En la carpeta SolutionFiles de la solución que creó en el tutorial Implementación en entorno de producción , cree un nuevo archivo SQL denominado Grant.sql . Copie los siguientes comandos SQL en el archivo y, a continuación, guarde y cierre el archivo:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Nota:

Este script está diseñado para trabajar con SQL Server 2008 y con la configuración de IIS en Windows 7, ya que se especifican en este tutorial. Si usa otra versión de SQL Server o Windows, o bien si configura IIS en el equipo de forma diferente, es posible que se necesiten cambios en este script. Para más información sobre los scripts de SQL Server, vea Libros en pantalla de SQL Server.

Nota:

Nota de seguridad Este script concede permisos al usuario que accede a la base de datos en tiempo de ejecución, que es lo que tendrá en el entorno de producción. En algunos escenarios, es posible que quiera especificar un usuario que tenga permisos completos de actualización del esquema de base de datos solo para la implementación y especificar para el tiempo de ejecución otro usuario que solo tenga permisos para leer y escribir datos. Para obtener más información, consulte Revisión de los cambios automáticos de Web.config para migraciones de Code First en Implementación en IIS como entornode prueba.

Configuración de la implementación de base de datos para el entorno de prueba

A continuación, configurará Visual Studio para que realice las siguientes tareas para cada base de datos:

  • Genere un script SQL que cree la estructura de la base de datos de origen (tablas, columnas, restricciones, etc.) en la base de datos de destino.
  • Genere un script SQL que inserte los datos de la base de datos de origen en las tablas de la base de datos de destino.
  • Ejecute los scripts generados y el script Grant que creó en la base de datos de destino.

Abra la ventana Propiedades del proyecto y seleccione la pestaña Package/Publish SQL (Paquete o publicación de SQL).

Asegúrese de que Active (versión) o Release esté seleccionado en la lista desplegable Configuración.

Haga clic en Habilitar esta página.

Package_Publish_SQL_tab_Enable_This_page

Normalmente, la pestaña SQL Package/Publish está deshabilitada porque especifica un método de implementación heredado. En la mayoría de los escenarios, debe configurar la implementación de bases de datos en el Asistente para publicar web. Migrar de SQL Server Compact a SQL Server o SQL Server Express es un caso especial para el que este método es una buena opción.

Importar desde Web.config.

Selecting_Import_from_Web.config

Visual Studio busca cadenas de conexión en el archivo Web.config, busca una para la base de datos de pertenencia y otra para la base de datos School y agrega una fila correspondiente a cada cadena de conexión de la tabla Entradas de base de datos. Las cadenas de conexión que encuentra son para las bases de datos existentes de SQL Server Compact y el siguiente paso será configurar cómo y dónde implementar estas bases de datos.

Escriba la configuración de implementación de la base de datos en la sección Detalles de entrada de base de datos debajo de la tabla Entradas de base de datos. La configuración que se muestra en la sección Detalles de entrada de base de datos pertenece a la fila de la tabla Entradas de base de datos seleccionada, como se muestra en la ilustración siguiente.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Configuración de las opciones de implementación para la base de datos de pertenencia

Seleccione la fila DefaultConnection-Deployment de la tabla Entradas de base de datos para configurar las opciones que se aplican a la base de datos de pertenencia.

En Cadena de conexión para la base de datosde destino, escriba una cadena de conexión que apunte a la nueva base de datos de pertenencia a SQL Server Express. Puede obtener la cadena de conexión que necesita desde el Explorador de servidores. En el Explorador de servidores, expanda Conexiones de datos y seleccione la base de datos aspnetTest y, a continuación, en la ventana Propiedades, copie el valor de Cadena de conexión.

aspnet_connection_string_in_Server_Explorer

La misma cadena de conexión se reproduce aquí:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Copie y pegue esta cadena de conexión en Cadena de conexión para la base de datos de destino en la pestaña Paquete/Publicación de SQL.

Asegúrese de que se selecciona Extraer datos o esquema de una base de datos existente. Esto es lo que hace que los scripts SQL se generen y ejecuten automáticamente en la base de datos de destino.

La Cadena de conexión para el valor de la base de datos de origen se extrae del archivo Web.config y apunta a la base de datos de SQL Server Compact de desarrollo. Esta es la base de datos de origen que se usará para generar los scripts que se ejecutarán más adelante en la base de datos de destino. Puesto que desea implementar la versión de producción de la base de datos, cambie "aspnet-Dev.sdf" a "aspnet-Prod.sdf".

Cambie las opciones de scripting de base de datos de Esquema solo a Esquema y datos, ya que quiere copiar los datos (cuentas de usuario y roles), así como la estructura de la base de datos.

Para configurar la implementación para ejecutar los scripts de concesión que creó anteriormente, debe agregarlos a la sección Scripts de base de datos. Haga clic en Agregar scripty, en el cuadro de diálogo Agregar scripts SQL, vaya a la carpeta donde almacenó el script de concesión (esta es la carpeta que contiene el archivo de solución). Seleccione el archivo denominado Grant.sqly haga clic en Abrir.

Select_File_dialog_box_grant_script

La configuración de la fila DefaultConnection-Deployment de las entradas de base de datos ahora tiene un aspecto similar a la siguiente ilustración:

Database_Entry_Details_for_DefaultConnection_Test

Configuración de las opciones de implementación para la base de datos educativa

A continuación, seleccione la fila SchoolContext-Deployment de la tabla Entradas de base de datos para configurar las opciones de implementación de la base de datos School.

Puede usar el mismo método que usó anteriormente para obtener la cadena de conexión para la nueva base de datos de SQL Server Express. Copie esta cadena de conexión en Cadena de conexión para la base de datos de destino en la pestaña Package/Publish SQL (Paquete/Publicación de SQL).

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Asegúrese de que se selecciona Extraer datos o esquema de una base de datos existente.

La Cadena de conexión para el valor de la base de datos de origen se extrae del archivo Web.config y apunta a la base de datos de SQL Server Compact de desarrollo. Cambie "School-Dev.sdf" a "School-Prod.sdf" para implementar la versión de producción de la base de datos. (Nunca creó un archivo School-Prod.sdf en la carpeta App_Data, por lo que copiará ese archivo desde el entorno de prueba a la carpeta App_Data en la carpeta del proyecto ContosoUniversity más adelante).

Cambie las opciones de scripting de base de datos a Esquema y datos.

También quiere ejecutar el script para conceder permiso de lectura y escritura para esta base de datos a la identidad del grupo de aplicaciones, por lo que debe agregar el archivo de script de Grant.sql como hizo para la base de datos de pertenencia.

Cuando haya terminado, la configuración de la fila SchoolContext-Deployment en entradas de base de datos tendrá un aspecto similar a la ilustración siguiente:

Database_Entry_Details_for_SchoolContext_Test

Guarde los cambios en la pestaña Package/Publish SQL (Paquete o publicación de SQL).

Copie el archivo School-Prod.sdf de la carpeta c:\inetpub\wwwroot\ContosoUniversity\App_Data en la carpeta App_Data del proyecto ContosoUniversity.

Especificar el modo de transacción para el script de concesión

El proceso de implementación genera scripts que implementan el esquema y los datos de la base de datos. De forma predeterminada, estos scripts se ejecutan en una transacción. Sin embargo, los scripts personalizados (como los scripts de concesión) de forma predeterminada no se ejecutan en una transacción. Si el proceso de implementación combina los modos de transacción, es posible que reciba un error de tiempo de espera cuando los scripts se ejecuten durante la implementación. En esta sección, editará el archivo de proyecto para configurar los scripts personalizados que se ejecutarán en una transacción.

En Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity y seleccione Establecer como proyecto de inicio y luego seleccione Descargar proyecto.

Unload_Project_in_Solution_Explorer

A continuación, haga clic con el botón derecho en el proyecto de nuevo y seleccione Editar ContosoUniversity.csproj.

Edit_Project_in_Solution_Explorer

El editor de Visual Studio muestra el contenido XML del archivo de proyecto. Observe que hay varios PropertyGroup elementos. (En la imagen, se ha omitido el contenido de los PropertyGroup elementos).

Project file editor window

La primera, que no tiene ningún Condition atributo, es para la configuración que se aplica independientemente de la configuración de compilación. Un PropertyGroup elemento solo se aplica a la configuración de compilación de depuración (tenga en cuenta el Condition atributo ), solo se aplica a la configuración de compilación release y solo se aplica a la configuración de compilación de prueba. Dentro del PropertyGroup elemento de la configuración de compilación release, verá un PublishDatabaseSettings elemento que contiene la configuración especificada en la pestaña Package/Publish SQL (Paquete o publicación de SQL ). Hay un Object elemento que corresponde a cada uno de los scripts de concesión especificados (observe las dos instancias de "Grant.sql"). De forma predeterminada, el atributo Transacted del elemento Source para cada script de concesión es False.

Transacted_false

Cambie el valor del atributo Transacted del elemento Source a True.

Transacted_true

Guarde y cierre el archivo del proyecto y, a continuación, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Volver a cargar proyecto.

Reload_project

Configuración de transformaciones Web.Config para las cadenas de conexión

Web Deploy usa las cadenas de conexión para las nuevas bases de datos SQL Express que especificó en la pestaña SQL Package/Publish solo para actualizar la base de datos de destino durante la implementación. Todavía tiene que configurar transformaciones Web.config para que las cadenas de conexión del archivo Web.config implementado apunten a las nuevas bases de datos de SQL Server Express. (Cuando se usa el Pestaña Empaquetar o publicar SQL, no se pueden configurar cadenas de conexión en el perfil de publicación).

Abra Web.Test.config y reemplace el connectionStrings elemento por el connectionStrings elemento en el ejemplo siguiente. (Asegúrese de copiar solo el elemento connectionStrings, no el código circundante que se muestra aquí para proporcionar contexto).

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Este código hace que los atributos connectionString y providerName de cada elemento add se reemplacen en el archivo Web.config implementado. Estas cadenas de conexión no son idénticas a las especificadas en la pestaña Package/Publish SQL (Paquete/publicación de SQL ). El valor "MultipleActiveResultSets=True" se ha agregado a ellos porque es necesario para Entity Framework y los proveedores universales.

Instalación de SQL Server Compact

El paquete NuGet SqlServerCompact proporciona los ensamblados del motor de base de datos de SQL Server Compact para la aplicación Contoso University. Pero ahora no es la aplicación, sino Web Deploy que debe poder leer las bases de datos de SQL Server Compact, con el fin de crear scripts que se ejecuten en las bases de datos de SQL Server. Para habilitar Web Deploy para leer bases de datos de SQL Server Compact, instale SQL Server Compact en el equipo de desarrollo mediante el vínculo siguiente: Microsoft SQL Server Compact 4.0 SP1.

Implementación en el entorno de prueba

Para publicar en el entorno de prueba, debe crear un perfil de publicación que esté configurado para usar la pestaña SQL Package/Publish para la publicación de bases de datos en lugar de la configuración de la base de datos de perfil de publicación.

En primer lugar, elimine el perfil de prueba existente.

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity y haga clic en Publicar.

Seleccione la pestaña Perfil.

Haga clic en Administrar perfiles.

Seleccione Probar, haga clic en Quitar, y a continuación, haga clic en Cerrar.

Cierre el Asistente para publicar web para guardar este cambio.

A continuación, cree un nuevo perfil de prueba y úselo para publicar el proyecto.

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity y haga clic en Publicar.

Seleccione la pestaña Perfil.

Seleccione <Nuevo...> en la lista desplegable y escriba "Probar" como nombre del perfil.

En el cuadro URL del servicio, escriba localhost.

En el cuadro Sitio o aplicación, escriba Sitio web predeterminado/ContosoUniversity.

En el cuadro Dirección URL de destino, escriba http://localhost/ContosoUniversity/.

Haga clic en Next.

La pestaña Configuración le advierte de que se ha configurado la pestaña SQL Package/Publish y le ofrece la oportunidad de invalidarlos haciendo clic en habilitar las nuevas mejoras de publicación de bases de datos. Para esta implementación, no desea invalidar la configuración de la pestaña Paquete o publicación de SQL, por lo que solo tiene que hacer clic en Siguiente.

Publish_Web_wizard_Settings_tab_Migrate

Un mensaje en la pestaña Vista previa indica que No hay bases de datos seleccionadas para publicar, pero esto solo significa que la publicación de bases de datos no está configurada en el perfil de publicación.

Haga clic en Publicar.

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio implementa la aplicación y abre el explorador en la página principal del sitio en el entorno de prueba. Ejecute la página Instructors para ver que muestra los mismos datos que vio anteriormente. Ejecute la página Agregar alumnos, agregue un nuevo alumno y, a continuación, vea el nuevo alumno en la página Estudiantes. Esto comprueba que puede actualizar la base de datos. Seleccione la página Actualizar créditos (deberá iniciar sesión) para comprobar que se implementó la base de datos de pertenencia y que tiene acceso a ella.

Creación de una base de datos de SQL Server para el entorno de producción

Ahora que ha implementado en el entorno de prueba, está listo para configurar la implementación en producción. Para comenzar como hizo para el entorno de prueba, cree una base de datos en la que se va a implementar. Como recuerda de la información general, el plan de hospedaje cytanium Lite solo permite una base de datos única de SQL Server, por lo que configurará solo una base de datos, no dos. Todas las tablas y datos de las bases de datos de pertenencia y School SQL Server Compact se implementarán en una base de datos de SQL Server en producción.

Vaya al panel de control Cytanium en http://panel.cytanium.com. Mantenga presionado el mouse sobre Bases de datos y, a continuación, haga clic en SQL Server 2008.

Selecting_Databases_in_Control_Panel

En la página SQL Server 2008, haga clic en Crear base de datos.

Selecting_Create_Database

Asigne un nombre a la base de datos "School" y haga clic en Guardar. (La página agrega automáticamente el prefijo "contosou", por lo que el nombre efectivo será "contosouSchool").

Naming_the_database

En la misma página, haga clic en Crear usuario. En los servidores de Cytanium, en lugar de usar la seguridad integrada de Windows y permitir que la identidad del grupo de aplicaciones abra la base de datos, creará un usuario que tenga autoridad para abrir la base de datos. Agregará las credenciales del usuario a las cadenas de conexión que van en el archivo de producción Web.config. En este paso, creará esas credenciales.

Creating_a_database_user

Rellene los campos obligatorios en la página Propiedades del usuario de SQL:

  • Escriba "ContosoUniversityUser" como nombre.
  • Escriba una contraseña.
  • Seleccione contosouSchool como base de datos predeterminada.
  • Active la casilla contosouSchool.

SQL_User_Properties_page

Configuración de la implementación de base de datos para el entorno de producción

Ahora está listo para configurar la configuración de implementación de la base de datos en la pestaña Paquete y publicación de SQL, como hizo anteriormente para el entorno de prueba.

Abra la ventana Propiedades del proyecto, seleccione la pestaña Empaquetar/Publicar SQL y asegúrese de que está seleccionada la opción Activo (Release) o Release en la lista desplegable Configuración.

Al configurar las opciones de implementación para cada base de datos, la diferencia clave entre lo que hace para entornos de producción y pruebas es en cómo se configuran las cadenas de conexión. Para el entorno de prueba que especificó cadenas de conexión de base de datos de destino diferentes, pero para el entorno de producción, la cadena de conexión de destino será la misma para ambas bases de datos. Esto se debe a que va a implementar ambas bases de datos en una base de datos en producción.

Configuración de las opciones de implementación para la base de datos de pertenencia

Para configurar las opciones que se aplican a la base de datos de pertenencia, seleccione la fila DefaultConnection-Deployment en la tabla Entradas de base de datos.

En Cadena de conexión para la base de datos de destino, escriba una cadena de conexión que apunte a la nueva base de datos de SQL Server de producción que acaba de crear. Puede obtener la cadena de conexión desde el correo electrónico de bienvenida. La parte pertinente del correo electrónico contiene la siguiente cadena de conexión de ejemplo:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Después de reemplazar las tres variables, la cadena de conexión que necesita es similar a la de este ejemplo:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Copie y pegue esta cadena de conexión en Cadena de conexión para la base de datos de destino en la pestaña Paquete/Publicación de SQL.

Asegúrese de que todavía está seleccionada la opción Extraer datos o esquema de una base de datos existente y que las opciones de scripting de base de datos siguen siendo Esquema y Datos.

En la casilla Scripts de base de datos, desactive la casilla situada junto al script de Grant.sql.

Disable_Grant_script

Configuración de las opciones de implementación para la base de datos educativa

A continuación, seleccione la fila SchoolContext-Deployment de la tabla Entradas de base de datos para configurar la configuración de la base de datos School.

Copie la misma cadena de conexión en Cadena de conexión para la base de datos de destino que copió en ese campo para la base de datos de pertenencia.

Asegúrese de que todavía está seleccionada la opción Extraer datos o esquema de una base de datos existente y que las opciones de scripting de base de datos siguen siendo Esquema y Datos.

En la casilla Scripts de base de datos, desactive la casilla situada junto al script de Grant.sql.

Guarde los cambios en la pestaña Package/Publish SQL (Paquete o publicación de SQL).

Configuración de transformaciones Web.Config para las cadenas de conexión a bases de datos de producción

A continuación, configurará las transformacionesWeb.config para que las cadenas de conexión del archivo Web.config implementado apunten a la nueva base de datos de producción. La cadena de conexión que especificó en la pestaña Package/Publish SQL para Web Deploy to use es la misma que la que necesita usar la aplicación, excepto la adición de la MultipleResultSets opción.

Abra Web.Production.config y reemplace el connectionStrings elemento por un connectionStrings elemento similar al ejemplo siguiente. (Copie solo el connectionStrings elemento, no las etiquetas circundantes que se proporcionan para mostrar el contexto).

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

A veces verá consejos que le indican que cifre siempre las cadenas de conexión en el archivo Web.config. Esto puede ser adecuado si estaba implementando en servidores en la red de su propia empresa. Sin embargo, al implementar en un entorno de hospedaje compartido, confía en las prácticas de seguridad del proveedor de hospedaje y no es necesario ni práctico cifrar las cadenas de conexión.

Implementación en el entorno de producción

Ahora está listo para realizar la implementación en producción. Web Deploy leerá las bases de datos de SQL Server Compact en la carpeta App_Data del proyecto y volverá a crear todas sus tablas y datos en la base de datos de SQL Server de producción. Para publicar mediante la configuración de la pestaña Empaquetar/Publicar web, debe crear un nuevo perfil de publicación para producción.

En primer lugar, elimine el perfil de producción existente como hizo anteriormente en el perfil de prueba.

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity y haga clic en Publicar.

Seleccione la pestaña Perfil.

Haga clic en Administrar perfiles.

Seleccione Producción, haga clic en Quitar, y a continuación, haga clic en Cerrar.

Cierre el Asistente para publicar web para guardar este cambio.

A continuación, cree un nuevo perfil de producción y úselo para publicar el proyecto.

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity y haga clic en Publicar.

Seleccione la pestaña Perfil.

Haga clic en Importary seleccione el archivo .publishsettings que descargó anteriormente.

En la pestaña Conexión , cambie la dirección URLde destino a la dirección URL temporal correcta, que en este ejemplo es http://contosouniversity.com.vserver01.cytanium.com.

Cambie el nombre del perfil a Producción. Seleccione la pestaña Perfil y haga clic en Administrar perfiles.

Cierre el Asistente para publicar web para guardar los cambios.

En una aplicación real en la que la base de datos se estaba actualizando en producción, realizaría dos pasos adicionales ahora antes de publicar:

  1. Cargue app_offline.htm, como se muestra en el tutorial Implementación en el entorno de producción.
  2. Use la característica Administrador de archivos del panel de control cytanium para copiar los archivos aspnet-Prod.sdf y School-Prod.sdf del sitio de producción a la carpeta App_Data del proyecto ContosoUniversity. Esto garantiza que los datos que va a implementar en la nueva base de datos de SQL Server incluyen las actualizaciones más recientes realizadas por el sitio web de producción.

En la barra de herramientas Web One Click Publish (Publicar con un solo clic), asegúrese de que el perfil de producción está seleccionado y, a continuación, haga clic en Publicar.

Si cargó app_offline.htm antes de publicarlo, debe usar la utilidad Administrador de archivos en el panel de control cytanium para eliminar app_offline.htm antes de probar. También puede eliminar los archivos .sdf de la carpeta App_Data.

Ahora puede abrir un explorador y ir a la dirección URL del sitio público para probar la aplicación de la misma manera que hizo después de realizar la implementación en el entorno de prueba.

Cambio a SQL Server Express LocalDB en desarrollo

Como se explicó en Información general, generalmente es mejor usar el mismo motor de base de datos en desarrollo que se usa en pruebas y producción. (Recuerde que la ventaja de usar SQL Server Express en desarrollo es que la base de datos funcionará igual en los entornos de desarrollo, prueba y producción). En esta sección configurará el proyecto ContosoUniversity para usar SQL Server Express LocalDB al ejecutar la aplicación desde Visual Studio.

La manera más sencilla de realizar esta migración es permitir que Code First y el sistema de pertenencia creen ambas bases de datos de desarrollo. El uso de este método para migrar requiere tres pasos:

  1. Cambie las cadenas de conexión para especificar nuevas bases de datos localDB de SQL Express.
  2. Ejecute la herramienta de administración del sitio web para crear un usuario administrador. Esto crea la base de datos de pertenencia.
  3. Use el comando update-database de Migraciones de Code First para crear y inicializar la base de datos de la aplicación.

Actualización de cadenas de conexión en el archivo Web.config

Abra el archivo Web.config y reemplace el connectionStrings elemento por el código siguiente:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Creación de la base de datos de pertenencia

En el Exploradorde soluciones, seleccione el proyecto ContosoUniversity y haga clic en ASP.NET Configuración en el menú Proyecto.

Seleccione la pestaña Seguridad .

Haga clic en Crear o administrar rolesy, a continuación, cree un rol de administrador.

Vuelva a la pestaña Seguridad.

Haga clic en Crear usuarioy, a continuación, active la casilla Administrador y cree un usuario denominado admin.

Uso de la herramienta Administración de sitios Web.

Creación de la base de datos educativa

En la ventana Consola del Administrador de paquetes.

En la lista desplegable Proyecto predeterminado, seleccione el proyecto ContosoUniversity.DAL.

Escriba el comando siguiente:

update-database

Migraciones de Code First aplica la migración inicial que crea la base de datos y, a continuación, aplica la migración AddBirthDate y, a continuación, ejecuta el método Seed.

Ejecute el sitio presionando Control-F5. Como hizo con los entornos de prueba y producción, ejecute la página Agregar alumnos, agregue un nuevo alumno y, a continuación, vea el nuevo alumno en la página Estudiantes. Esto comprueba que la base de datos School se creó e inicializó y que tiene acceso de lectura y escritura a ella.

Seleccione la página Actualizar créditos e inicie sesión para comprobar que se implementó la base de datos de pertenencia y que tiene acceso a ella. Si no ha migrado las cuentas de usuario, cree una cuenta de administrador y, a continuación, seleccione la página Actualizar créditos para comprobar que funciona.

Limpieza de archivos compactos de SQL Server

Ya no necesita archivos y paquetes NuGet que se incluyeron para admitir SQL Server Compact. Si lo desea (este paso no es necesario), puede limpiar archivos y referencias innecesarios.

En el Explorador de soluciones, elimine los archivos .sdf de la carpeta App_Data y las carpetas amd64 y x86 de la carpeta bin.

En el Explorador de soluciones, haga clic con el botón derecho en la solución (no uno de los proyectos) y, a continuación, haga clic en Administrar paquetes NuGet para la solución.

En el panel izquierdo del cuadro de diálogo Administrar paquetes NuGet, seleccione Paquetes instalados.

Seleccione el paquete EntityFramework.SqlServerCompact y haga clic en Administrar.

En el cuadro de diálogo Seleccionar proyectos, se seleccionan ambos proyectos. Para desinstalar el paquete en ambos proyectos, desactive ambas casillas y, a continuación, haga clic en Aceptar.

En el cuadro de diálogo que le pregunta si desea desinstalar también los paquetes dependientes, haga clic en No. Uno de estos es el paquete de Entity Framework que tiene que mantener.

Siga el mismo procedimiento para desinstalar el paquete SqlServerCompact. (Los paquetes deben desinstalarse en este orden porque El paquete EntityFramework.SqlServerCompact depende del paquete SqlServerCompact).

Ahora ha migrado correctamente a SQL Server Express y a SQL Server completo. En el siguiente tutorial realizará otro cambio en la base de datos y verá cómo implementar los cambios en la base de datos cuando las bases de datos de prueba y producción usen SQL Server Express y SQL Server completo.