Adición de una conexión a Azure SQL Database
Con los Servicios conectados de Visual Studio, puede conectarse a Azure SQL Database, a un emulador local (por ejemplo, durante el desarrollo) o a una base de datos de SQL Server local. Para SQL Server local, consulte Conexión a una base de datos.
Con Visual Studio, puede conectarse desde cualquiera de los siguientes tipos de proyecto mediante el uso de la característica Servicios conectados:
- ASP.NET Core
- .NET Core (incluida la aplicación de consola, WPF, Windows Forms y la biblioteca de clases)
- Rol de trabajo de .NET Core
- Funciones de Azure
- Aplicación de consola de .NET Framework
- Model-View-Controller (Modelo-Vista-Controlador) ASP.NET (MVC) (Esquema de trabajo .NET)
- Aplicación de la Plataforma universal de Windows
La funcionalidad del servicio conectado agrega todo el código de conexión y las referencias necesarios al proyecto y modifica los archivos de configuración de forma adecuada.
Requisitos previos
- Visual Studio con la carga de trabajo de Azure instalada
- Un proyecto de uno de los tipos admitidos
- Una cuenta de Azure. Si no tiene una cuenta de Azure, active las ventajas de Azure para suscriptores de Visual Studio o regístrese para obtener una evaluación gratuita.
Conexión a Azure SQL Database mediante Servicios conectados
Abra el proyecto en Visual Studio.
En el Explorador de soluciones, haga clic con el botón derecho en el nodo Servicios conectados y, en el menú contextual, seleccione Agregar para abrir el menú de servicios disponibles.
Si no ve el nodo Servicios conectados, elija Proyecto>Servicios conectados>Agregar.
Elija Base de datos de SQL Server. Aparece la página Conectarse a la dependencia. Debería ver varias opciones:
- SQL Server Express LocalDB, la solución de SQL Database integrada que se instala con Visual Studio
- Base de datos de SQL Server en un contenedor local de la máquina
- SQL Server Database, un servidor SQL local en la red local
- Azure SQL Database, para la SQL Database que se ejecuta como un servicio de Azure
Si empieza con una base de datos local, puede reducir el costo y simplificar los primeros pasos del desarrollo. En Azure, para realizar la migración al servicio en directo más adelante debe repetir estos pasos y elegir otra opción. Si crea una base de datos de forma local que desee volver a crear en Azure, puede migrar la base de datos a Azure en ese momento.
Si quiere conectarse al servicio de Azure, siga con el paso siguiente o, si aún no ha iniciado sesión, acceda a su cuenta de Azure antes de continuar. Si no tiene una cuenta de Azure, puede registrarse para obtener una evaluación gratuita.
En la pantalla Configurar Azure SQL Database, seleccione una base de datos de Azure SQL existente y seleccione Siguiente.
Si necesita crear un componente, vaya al siguiente paso. De lo contrario, vaya al paso 7.
Cómo crear una instancia de Azure SQL Database:
Seleccione Crear nuevo al lado del signo de más verde.
Rellene la pantalla Azure SQL Database: Crear nueva y seleccione Crear.
Cuando se muestra la pantalla Configurar Azure SQL Database, la nueva base de datos aparece en la lista. Elija la nueva base de datos en la lista y seleccione Siguiente.
Escriba un nombre de cadena de conexión o elija el valor predeterminado y, a continuación, elija Configuración adicional.
Nota:
Con Visual Studio 2022, versión 17.12 y versiones posteriores, este procedimiento usa la identidad administrada de Microsoft Entra, un método de autenticación sin contraseña, para conectarse a la base de datos. La advertencia de esta pantalla significa que debe realizar un paso manual en Azure Portal después de completar este procedimiento en Visual Studio. Consulte Autenticación de Microsoft Entra.
Elija si desea que el cadena de conexión almacenado en un archivo de secretos locales o en Azure Key Vault y, a continuación, elija Siguiente.
En la pantalla Resumen de cambios se muestran todas las modificaciones que se realizarán en el proyecto si completa el proceso. Si los cambios parecen correctos, seleccione Finalizar.
Si se le pide que establezca reglas de firewall, elija Sí.
En Explorador de soluciones, haga doble clic en el nodo Servicios conectados para abrir la pestaña Servicios conectados. La conexión aparece en la sección Dependencias del servicio:
Si hace clic en los tres puntos que hay junto a la dependencia que agregó, puede ver varias opciones, como Conectar para volver a abrir el asistente y cambiar la conexión. También puede hacer clic en los tres puntos situados en la parte superior derecha de la ventana para ver las opciones para iniciar dependencias locales, cambiar la configuración, etc.
Si usa la identidad administrada (Visual Studio 17.12 y versiones posteriores), consulte la sección siguiente para configurar el usuario de identidad administrada en la base de datos de Azure SQL.
Autenticación de Microsoft Entra
Con Visual Studio 2022, versión 17.12 y versiones posteriores, el procedimiento de servicios conectados usa la autenticación de Microsoft Entra, que es el método de autenticación más seguro. Sin embargo, Visual Studio no crea automáticamente el usuario administrador de Microsoft Entra en la base de datos de Azure SQL. Si no hay un usuario administrador de Microsoft Entra, la conexión no se autenticará correctamente.
Puede usar Azure Portal, PowerShell o la CLI de Azure para crear el usuario administrador de Microsoft Entra. Para obtener instrucciones detalladas para cada uno de estos métodos, vea Establecer el usuario administrador de Microsoft Entra.
Después de completar el proceso de Servicios conectados, deberá crear un usuario de SQL que corresponda a la identidad administrada y establecer permisos mediante la ejecución de instrucciones SQL en la base de datos. Inicie sesión en el editor de consultas en Azure Portal como usuario administrador de Microsoft Entra y ejecute instrucciones como las siguientes:
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];
GO
<identity-name>
es el nombre de la identidad administrada en microsoft Entra ID. Si la identidad la ha asignado el sistema, el nombre siempre coincide con el nombre de la aplicación de App Service. En el caso de una ranura de implementación, el nombre de su identidad asignada por el sistema es <app-name>/slots/<slot-name>
. Para conceder permisos para un grupo de Microsoft Entra, use el nombre para mostrar del grupo en su lugar (por ejemplo, myAzureSQLDBAccessGroup
). Consulte Tipos de identidad administrada e identidades administradas en Microsoft Entra para Azure SQL. Los roles que agregue dependen de los casos de uso. Consulte ALTER ROLE.
Si el código hace referencia System.Data.SqlClient
a , deberá actualizar a Microsoft.Data.SqlClient
, ya que System.Data.SqlClient
no admite la autenticación de Microsoft Entra. Para actualizar, agregue una referencia al paquete NuGet Microsoft.Data.SqlClient y actualice las directivas using que hagan referencia System.Data.SqlClient
Microsoft.Data.SqlClient
al espacio de nombres. Hay algunos cambios de comportamiento; consulte Migración de la hoja de referencia rápida.
Abra el proyecto en Visual Studio.
En el Explorador de soluciones, haga clic con el botón derecho en el nodo Servicios conectados y, en el menú contextual, seleccione Agregar para abrir el menú de servicios disponibles.
Si no ve el nodo Servicios conectados, elija Proyecto>Servicios conectados>Agregar.
Elija Base de datos de SQL Server. Aparece la página Conectarse a la dependencia. Debería ver varias opciones:
- SQL Server Express LocalDB, la solución de SQL Database integrada que se instala con Visual Studio
- Base de datos de SQL Server en un contenedor local de la máquina
- SQL Server Database, un servidor SQL local en la red local
- Azure SQL Database, para la SQL Database que se ejecuta como un servicio de Azure
Si empieza con una base de datos local, puede reducir el costo y simplificar los primeros pasos del desarrollo. En Azure, para realizar la migración al servicio en directo más adelante debe repetir estos pasos y elegir otra opción. Si crea una base de datos de forma local que desee volver a crear en Azure, puede migrar la base de datos a Azure en ese momento.
Si quiere conectarse al servicio de Azure, siga con el paso siguiente o, si aún no ha iniciado sesión, acceda a su cuenta de Azure antes de continuar. Si no tiene una cuenta de Azure, puede registrarse para obtener una evaluación gratuita.
En la pantalla Configurar Azure SQL Database, seleccione una base de datos de Azure SQL existente y seleccione Siguiente.
Si necesita crear un componente, vaya al siguiente paso. De lo contrario, vaya al paso 7.
Cómo crear una instancia de Azure SQL Database:
Seleccione Crear nuevo al lado del signo de más verde.
Rellene la pantalla Azure SQL Database: Crear nueva y seleccione Crear.
Cuando se muestra la pantalla Configurar Azure SQL Database, la nueva base de datos aparece en la lista. Elija la nueva base de datos en la lista y seleccione Siguiente.
Escriba un nombre de cadena de conexión, o elija el valor predeterminado, y seleccione si quiere la cadena de conexión almacenada en un archivo de secretos local o en Azure Key Vault.
En la pantalla Resumen de cambios se muestran todas las modificaciones que se realizarán en el proyecto si completa el proceso. Si los cambios parecen correctos, seleccione Finalizar.
Si se le pide que establezca reglas de firewall, elija Sí.
En Explorador de soluciones, haga doble clic en el nodo Servicios conectados para abrir la pestaña Servicios conectados. La conexión aparece en la sección Dependencias del servicio:
Si hace clic en los tres puntos que hay junto a la dependencia que agregó, puede ver varias opciones, como Conectar para volver a abrir el asistente y cambiar la conexión. También puede hacer clic en los tres puntos situados en la parte superior derecha de la ventana para ver las opciones para iniciar dependencias locales, cambiar la configuración, etc.
Acceso a la cadena de conexión
Aprenda a almacenar secretos de forma segura como se indica en Almacenamiento seguro de secretos de aplicaciones en desarrollo en ASP.NET Core. En concreto, para leer la cadena de conexión del almacén de secretos, puede agregar código como se indica en Lectura del secreto mediante la API de configuración. Consulte también Inserción de dependencias en ASP.NET Core.
Migraciones de Entity Framework
Es posible que sea conveniente trabajar con un almacén de datos local durante el desarrollo temprano, pero con Entity Framework Core, cuando esté listo para pasar a la nube, puede usar la compatibilidad de Visual Studio con la migración de Entity Framework para mover la base de datos o combinar cambios con un almacén de datos remoto. Consulte Información general sobre migraciones.
En la pestaña Servicios conectados, puede encontrar los comandos de migración haciendo clic en los tres puntos, como se muestra en la captura de pantalla:
Los comandos están disponibles para crear nuevas migraciones, aplicarlas directamente o generar scripts SQL que apliquen las migraciones.
Adición de migración
Cuando se introduce un cambio de modelo de datos, puede usar las herramientas de Entity Framework Core para agregar una migración correspondiente que describa en el código las actualizaciones necesarias para mantener sincronizado el esquema de la base de datos. Entity Framework Core compara el modelo actual con una instantánea del modelo anterior para determinar las diferencias y genera archivos de origen de migración. Los archivos se agregan al proyecto, normalmente en una carpeta denominada Migraciones y se puede realizar un seguimiento en el control de código fuente del proyecto como cualquier otro archivo de código fuente.
Al elegir esta opción, se le pedirá que proporcione el nombre de la clase de contexto que representa el esquema de base de datos que desea migrar.
Actualizar la base de datos
Una vez creada una migración, se puede aplicar a una base de datos. Entity Framework actualiza la base de datos y el esquema con los cambios especificados en el código de migración. Al elegir esta opción, se le pedirá que proporcione el nombre de la clase de contexto que representa el esquema de base de datos que desea migrar.
Generación de script SQL
La manera recomendada de implementar migraciones en una base de datos de producción es mediante la generación de scripts SQL. Entre las ventajas de esta estrategia se incluyen las siguientes:
- Los scripts SQL se pueden revisar para obtener precisión. Esto es importante, ya que aplicar cambios de esquema a las bases de datos de producción es una operación potencialmente peligrosa que podría implicar la pérdida de datos.
- En algunos casos, los scripts se pueden ajustar para adaptarse a las necesidades específicas de una base de datos de producción.
- Los scripts SQL se pueden usar junto con una tecnología de implementación e incluso se pueden generar como parte del proceso de CI.
- Los scripts SQL se pueden proporcionar a un DBA y se pueden administrar y archivar por separado.
Cuando use esta opción, se le pedirá la clase de contexto de base de datos y la ubicación del archivo de script.
Apertura en el Explorador de objetos de SQL Server
Para mayor comodidad, este comando le permite acceder al Explorador de objetos de SQL Server, por lo que puede ver tablas y otras entidades de base de datos y trabajar directamente con los datos. Consulte Explorador de objetos.
Pasos siguientes
Puede continuar con las guías de inicio rápido de Azure SQL Database, pero, en lugar de comenzar por el principio, puede empezar después de la configuración de la conexión inicial. Si usa Entity Framework, puede empezar en Adición del código para conectarse a Azure SQL Database. Si usa clases de datos de ADO.NET o SqlClient
, puede empezar en Adición del código para conectarse a Azure SQL Database.
Su código no coincidirá exactamente con lo que se usa en las guías de inicio rápido, que usan una manera diferente de obtener la cadena de conexión. Las cadenas de conexión son secretos y se almacenan de forma segura, como se explica en Almacenamiento seguro de secretos de aplicación en el desarrollo en ASP.NET Core. En concreto, para leer la cadena de conexión del almacén de secretos, puede agregar código como se indica en Lectura del secreto mediante la API de configuración.
En ASP.NET proyectos de Core, la configuración de conexión o cadena de conexión creada por Connected Services está disponible en un objeto de configuración. Puede acceder a ella usando una propiedad de la clase WebApplicationBuilder
(builder
en muchas plantillas de proyecto), como en el siguiente ejemplo:
var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];
La cadena que se va a proporcionar a la propiedad Configuration debe coincidir con la clave de secrets.json o en Azure Key Vault, que proporcionó en el procedimiento Servicios conectados. Por ejemplo, con Visual Studio 2022 17.12 y versiones posteriores, la configuración de conexión se almacena en secrets.json como:
{
"ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}
En ASP.NET proyectos de Core, la configuración de conexión o cadena de conexión creada por Connected Services está disponible en un objeto de configuración. Puede acceder a ella usando una propiedad de la clase WebApplicationBuilder
(builder
en muchas plantillas de proyecto), como en el siguiente ejemplo:
var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];