Base de datos
Utilizamos una base de datos SQL Server desplegada en una piscina elástica (elastic pool) de Azure.
Crear una nueva DB
Los pasos a seguir son los siguientes:
Para crear una nueva base de datos para una nueva aplicación entramos primero por el panel de Azure y asociamos una nueva DB a la elastic pool de
azpool. Normalmente las llamamos con el nombre de la aplicación en mayúscula comoDocsoWebInterna.Autorizamos nuestra IP en el servidor de
azpoolpara poder acceder desde el ordenador.Entramos con
apps-datay la contraseña de producción que no está documentada aquí por seguridad. Podemos usar esta connection string sustituyendo el valor de la contraseña:Server=tcp:azpool.database.windows.net,1433;Initial Catalog=DBNAME_HERE;Persist Security Info=False;User ID=apps-data;Password=ROOT_PASSWORD_HERE;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Autorizamos al usuario de migraciones a ejecutar cambios en producción sobre el schema de esta base de datos:
CREATE USER migrations FOR LOGIN migrations
EXECUTE sys.sp_addrolemember @membername = N'migrations', @rolename = N'db_ddladmin';
EXECUTE sys.sp_addrolemember @membername = N'migrations', @rolename = N'db_datawriter';
EXECUTE sys.sp_addrolemember @membername = N'migrations', @rolename = N'db_datareader';Cerramos la conexión y procedemos al directorio root del código de la aplicación.
Ejecutamos
make migratepara que se manden las migraciones a producción.Desautorizamos nuestra IP para aumentar la seguridad sobre el servidor al terminar.
Crear un nuevo usuario
Esto debemos ejecutarlo entrando a la DB master con el login root de SQL Server. Se puede usar esta connection string sustituyendo el valor de la contraseña que no está documentado aquí por seguridad:
Server=tcp:azpool.database.windows.net,1433;Initial Catalog=DBNAME_HERE;Persist Security Info=False;User ID=apps-data;Password=ROOT_PASSWORD_HERE;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Para crear un nuevo usuario en una base de datos hay que asignarle una identidad con su contraseña para acceder:
CREATE LOGIN my_name WITH PASSWORD = 'MY_PASSWORD'
Una vez hecho esto entramos en la base de datos individual con esta otra connection string:
Server=tcp:azpool.database.windows.net,1433;Initial Catalog=DBNAME_HERE;Persist Security Info=False;User ID=apps-data;Password=ROOT_PASSWORD_HERE;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Y autorizamos los roles necesarios para que ese usuario funcione correctamente:
CREATE USER my_name FOR LOGIN my_name
EXECUTE sys.sp_addrolemember @membername = N'my_name', @rolename = N'db_datawriter';
EXECUTE sys.sp_addrolemember @membername = N'my_name', @rolename = N'db_datareader';
Regular la capacidad
Las aplicaciones utilizan una pisicina elástic de Azure para SQL Server para proveer de la capacidad necesaria para servir las diferentes bases de datos. La capacidad de una elastic pool es regulable desde la consola de Azure.
Para regularlo seguimos los siguientes pasos:
Buscamos
elastic poolen el buscador general para entrar a SQL elastic pools.Entramos al pool correcto, que en este caso es apps-data.
Nos dirigimos al apartado de Configure en el menú lateral.
Si la dirección no cambia debemos encontrarnos en esta página.Ajustamos los eDTUs necesarios para la base de datos. El propio Microsoft no provee de información suficiente para determinar la cuota exacta, sino que recomienda probar hasta encontrar alguno adecuado.
Guardamos la actualización.