# 6.2 Cambiar a SQL Server en Azure

## ¿Qué es Azure?

Azure es un servicio proporcionado por Microsoft para que las empresas ya no tengan que comprar y darle mantenimiento a un servidor propio. Azure pone a tu disposición sus servidores virtuales y bases de datos en donde pagas de acuerdo al tiempo de uso y las características del servidor que desees.&#x20;

Por ejemplo puedes rentar un servidor y solo pagas por el tiempo que lo usas, por ejemplo si lo apagas en las noches de 2:00 am a 6:00 am esas horas no te las cobran o te las cobran a un menor precio. O por ejemplo si tu aplicación es una juguetería puedes rentar un servidor básico y en temporada de ventas altas como navidad se agregan 2 servidores par balancear automáticamente el número de visitas entre los 2 servidores.

Por lo general azure esta disponible de forma gratuita para que lo pruebes, ya sea en programas de 12 meses, o con programas como bizspark de apoyo a emprendedores por 3 años. Puedes utilizar también visual studio dev essentials para tener acceso a meses gratis de azure y otros productos

{% embed url="https://visualstudio.microsoft.com/es/dev-essentials/" %}

## Crear una base de datos de SQL Server en Azure

Con tu cuenta de dev essentials vamos a configurar una base de datos de sql server.&#x20;

1. Registrate con tu cuenta gratuita en  [www.portal.azure.com](https://www.portal.azure.com) e inicia sesión
2. Da clic en el icono **SQL Database**

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoT3O5SjyZOlsW6zcu%2F-LYoUC1L2y1pfPEgpRoX%2Fimage.png?alt=media\&token=c31346c7-da87-42ae-957d-a0ace3321fe3)

&#x20;3\. Da clic en el botón **Crear base de datos sql**

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoT3O5SjyZOlsW6zcu%2F-LYoUzBXw9DMBh71nz38%2Fimage.png?alt=media\&token=ba61f2b4-69aa-47f6-ae23-cf3b414b05da)

4\. Teclea un **nombre** para tu base de datos en mi caso es **CaducaRest**\
5\. Selecciona tu **suscripción** en mi caso tengo una de **Visual Studio Enterprise BizSpark**\
\
Un grupo de recursos te permite agrupar tus servicios de azure para ver por ejemplo cuánto estas pagando de azure por sistema de la empresa. Ejemplo cuánto se gasta de azure de los equipos de ventas, cuanto los equipos de compras, etc.&#x20;

6\. Da clic en crear nuevo y teclea un nombre en mi caso es **cursos** y da clic en Aceptar

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoT3O5SjyZOlsW6zcu%2F-LYoVhFD5mtwrzVApm3w%2Fimage.png?alt=media\&token=38158be1-a6f1-47af-a5f2-12ba4b88794c)

7\. Selecciona en **origen** la opción **Base de datos en blanco**\
8\. En la opción **Servidor** vamos a configurar un servidor gratuito de Sql Server.\
9\. Teclea un nombre para el servidor por ejemplo **caduca**\
10\. En nombre de usuario tecleamos **AdminCaduca**\
11\. En password tecleamos el password \
12\. Selecciona la ubicación mas cercana a tu lugar de origen

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoT3O5SjyZOlsW6zcu%2F-LYoYRJqrlK7kDAfcbDt%2Fimage.png?alt=media\&token=9a644b41-9ffa-4169-84c7-4a565a7e5929)

13\. En plan de tarifa selecciona el básico da clic en **Aplicar** y espera unos minutos en lo que se crea el servidor.

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoT3O5SjyZOlsW6zcu%2F-LYoZ8Zr00RrN8ffOv_Z%2Fimage.png?alt=media\&token=b78a0133-0bd1-4f75-a27a-e005eed4b0f3)

Te llegará una notificación cuando este lista, la opción:

* Ir al recurso: te permite ir a la opción para revisar tu base de datos&#x20;
* Anclar al panel: te permite que se muestre en tu página inicial.&#x20;

14\. Da clic en el botón **Ir al recurso**

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoZImc8XNe50Hf1TLY%2F-LYo_87OlqeWzkOeAbfc%2Fimage.png?alt=media\&token=57074d7d-1607-4676-87af-b0806deea746)

Azure muestra muchos gráficos sobre el uso de tu base de datos.

Se recomienda que por seguridad tu base de datos solo este disponible para las ips de las computadoras de desarrollo y las del servidor de pruebas y de producción.&#x20;

Para configurar la lista de ips permitidas

1. Da clic en la opción **Establecer Firewall del Servidor**

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoZImc8XNe50Hf1TLY%2F-LYobq7O6pCjDztuQTmr%2Fimage.png?alt=media\&token=8048cd7e-4668-4a4b-aae9-76f9477d7d34)

2\. Da clic en Agregar IP de cliente se te agrega automáticamente la ip de tu computadora, cambia el nombre de la regla por uno mas descriptivo como por ejemplo **Desarrollo**

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoZImc8XNe50Hf1TLY%2F-LYocS7da04Tozb23JlC%2Fimage.png?alt=media\&token=cfb9ccb1-1686-47c9-aac5-34ab3ac4c62c)

Desde Azure Data Studio probamos la conexión a nuestro server

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoZImc8XNe50Hf1TLY%2F-LYodyg0TVoXECTx8P5U%2Fimage.png?alt=media\&token=c3ebe09e-231a-4a49-841b-dfe2d2bd9df1)

## Cambiar tu aplicación para que se conecte a azure

Todas las conexiones a Sql Server en Azure están encriptadas, por lo cual debes especificar que la conexión es encriptada, desde el mismo portal de azure puedes copiar los datos de la cadena de conexión, solamente debes cambiar tu usuario y contraseña

1. En la opción Cadenas de Conexión damos clic en el icono copiar para copiar al portapapeles la cadena de conexión

![](https://3731331968-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKmGSg4qhizjqeDPHJC%2F-LYoZImc8XNe50Hf1TLY%2F-LYofh59J94R_k7njO1d%2Fimage.png?alt=media\&token=8be8e74b-d3a6-4ab4-a6ea-2359aab4abd5)

2\. En tu proyecto de .net en tu archivo appsettings.json agrega la cadena de conexión con el nombre AzureSQLConnection&#x20;

{% code title="appsetings.json" %}
```javascript
{
  "ConnectionStrings": {
    "DefaultConnection": "server=localhost;port=3306;database=caduca;user=AdminCaduca;Password=StKRV6MR6A;sslMode=none",
    "SQLServerConnection": "Server=localhost;Database=caduca;User Id=AdminCaduca;Password=StKRV6MR6A;",
    "AzureSQLConnection": "Server=tcp:armhe.database.windows.net,1433;Initial Catalog=CaducaRest;Persist Security Info=False;User ID=AdminCaduca;Password=StKRV6MR6A;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  },
```
{% endcode %}

3\. En el archivo **startup.cs** cambiamos la cadena de conexión para utilizar la de Azure

{% code title="startup.cs" %}
```csharp
public void ConfigureServices(IServiceCollection services)
{
    //Código
    
    //Conexión SQL Server Azure
    services.AddDbContext<CaducaContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("AzureSQLConnection")));

}
```
{% endcode %}

4\. En la consola del administrador de paquetes teclea el comando

```
Update-database
```

Listo ahora tu aplicación esta con una base de datos de Azure.
