lunes, 27 de noviembre de 2023

Instancia administrada de Azure SQL

En los retos de migrar Bases de datos usando Azure y SQL Server, frecuentemente hallaremos servicios usados fuera del Data Base Engine. Azure ofrece la instancia administrada de Azure SQL la cual ha sido diseñada para habilitar una solución de migración mediante lift-and-shift para los clientes. 

Pretende incorporar aplicaciones, bases de datos y tecnologías de apoyo a la plataforma como servicio de Azure.






La instancia administrada de SQL Database habilita la migración de bases de datos a un servicio de base de datos totalmente administrado, sin necesidad de rediseñar la aplicación

sábado, 11 de noviembre de 2023

 SQL Server , lista de roles  funcionan de la misma forma en Azure SQL Database y SQL Server.

Rol de base de datosDefinición
db_accessadminPermite a los usuarios crear otros usuarios dentro de la base de datos. Este rol no concede acceso al esquema de ninguna de las tablas, ni concede acceso a los datos de la base de datos.
db_backupoperatorPermite a los usuarios realizar copias de seguridad de una base de datos en una instancia de SQL Server o SQL Managed Instance. El rol db_backupoperator no confiere ningún permiso en una instancia de Azure SQL Database.
db_datareaderPermite a los usuarios leer desde cada tabla y ver dentro de la base de datos.
db_datawriterPermite a los usuarios INSERTUPDATE y DELETE datos desde cada tabla y ver dentro de la base de datos.
db_ddladminPermite a los usuarios crear o modificar objetos dentro de la base de datos. Los miembros de este rol pueden cambiar la definición de cualquier objeto, de cualquier tipo, pero no se concede acceso a los miembros de este rol para leer o escribir datos en las bases de datos.
db_denydatareaderUsuarios que precisan que se les impida la lectura de datos de cualquier objeto de la base de datos, cuando a esos usuarios se les hayan concedido derechos directamente o a través de otros roles.
db_denydatawriterUsuarios que precisan que se les impida la escritura de datos en cualquier objeto de la base de datos, cuando a esos usuarios se les hayan concedido derechos directamente o a través de otros roles.
db_securityadminUsuarios que precisan tener la capacidad de conceder acceso a otros usuarios dentro de la base de datos. A los miembros de este rol no se les concede acceso a los datos de la base de datos; sin embargo, pueden concederse acceso a sí mismos a las tablas de la base de datos. La pertenencia a este rol de base de datos se debe limitar solo a usuarios de confianza.
db_ownerUsuarios que precisan acceso administrativo a la base de datos. Los miembros de este rol pueden realizar cualquier acción en la base de datos de forma predeterminada. Sin embargo, a diferencia del propietario de la base de datos real, que tiene el nombre de usuario dbo, los usuarios del rol db_owner pueden bloquear el acceso a los datos colocándolos en otros roles de base de datos, como db_denydatareader, o al denegar el acceso a los objetos. La pertenencia a este rol de base de datos se debe limitar solo a usuarios de confianza.

Adicional Azure SQL Database tiene dos roles que se definen en la base de datos maestra de Azure SQL Server.

Rol de base de datosDefinición
dbmanagerPermite a sus miembros crear bases de datos adicionales en el entorno de Azure SQL Database. Este rol es el equivalente del rol fijo de servidor dbcreator en una instancia local de Microsoft SQL Server.
loginmanagerPermite a sus miembros crear inicios de sesión adicionales en el nivel de servidor. Este rol es el equivalente del rol fijo de servidor securityadmin en una instancia local de Microsoft SQL Server.


Finalmente además de los roles de base de datos, SQL Server y Azure SQL Managed Instance proporcionan roles fijos de servidor. Estos roles asignan permisos en el ámbito de todo el servidor.

Rol fijo de servidorDefinición
sysadminPermite a sus miembros realizar cualquier actividad en el servidor.
serveradminPermite a sus miembros cambiar las opciones de configuración de todo el servidor (por ejemplo, la memoria de servidor máxima) y pueden apagar el servidor.
securityadminPermite a sus miembros administrar los inicios de sesión y sus propiedades (por ejemplo, cambiar la contraseña de un inicio de sesión). Los miembros también pueden conceder y revocar permisos a nivel de servidor y base de datos. Este rol se debe tratar como equivalente al rol sysadmin.
processadminPermite que sus miembros eliminen los procesos que se ejecutan dentro de SQL Server.
setupadminPermite a sus miembros agregar y quitar servidores vinculados mediante T-SQL.
bulkadminPermite a sus miembros ejecutar la instrucción T-SQL BULK INSERT.
diskadminPermite a sus miembros tener la capacidad de administrar dispositivos de copia de seguridad en SQL Server.
dbcreatorPermite a sus miembros crear, restaurar, modificar y quitar cualquier base de datos.
publicCada inicio de sesión de SQL Server pertenece al rol de usuario público. A diferencia de los demás roles fijos de servidor, los permisos se pueden conceder, denegar o revocar del rol Público.

sábado, 4 de noviembre de 2023

 ¿Sabias que el performance de las consultas en SQL Server puede verse afectado por conversiones de datos en nuestras clausulas SARG?


Aquí una tabla de cuando SQL Server realiza conversiones implícitas, cuando son explicitas y cuando demandan un CAST.

Cuidar este aspecto puede hacer una diferencia significativa en el desempeño de las consultas , en virtud de que las conversiones pueden ser costosas e impactar negativamente.




domingo, 22 de octubre de 2023

Estadisticas en SQL Server - Su importancia

¿Sabías que para la creación y mantenimiento de estadísticas es fundamental para optimizar una Base de Datos?

 

SQL Server construye sus planes de ejecución respecto a la densidad de datos en nuestras tablas o vistas indexadas en una o más columnas de, con lo cual crear y mantener estadísticas es importante

Las estadísticas contienen información sobre la distribución de valores de datos en una columna y el optimizador utiliza esa información para determinar la cardinalidad, que es la cantidad de filas esperada como resultado de nuestra consulta.

Por ultimo el optimizador utiliza las estimaciones para generar el plan de ejecución, si quieres ver las estadísticas definidas por el usuario puedes ejecutar la siguiente consulta

 

SELECT sp.stats_id,       name,       last_updated,       rows,

       rows_sampled FROM sys.stats

     CROSS APPLY sys.dm_db_stats_properties(object_id, stats_id) AS sp

WHERE user_created = 1

 

Típicamente se consideran los siguientes escenarios para la creación de índices

 

  •         El Asistente para la optimización de motor de base de datos sugiere crear las estadísticas
  •         El predicado de consulta contiene varias columnas que aún no están en el mismo índice
  •         La consulta realiza la selección entre un subconjunto de datos
  •         La consulta ha perdido estadísticas


Esta es solo una capsula, el tema es amplio y en otras entradas agregare consultas para determinar estadisticas que faltan, asi como scripts para crear estadisticas.