Manual SQL Server

Manual SQL Server

  • Conceptos e Instalación Instalación
    • Servicios de SQL Server
    • Instalar SQL – requisitos
    • Instalar SQL Server 2025
    • Instalar SQL Server 2022
    • Instalar SQL Server 2019
    • Instalar SQL Server 2017
    • Instalar SQL Server 2014
    • SQL Server – Versiones del Producto
    • Motor de Base de datos SQL Server
  • Bases de Datos Crear/Modificar
    • Base de datos – Teoría
    • Bases de datos del Sistema
    • Grupos de archivos en SQL Server
    • Tipos de archivos de bases de datos
    • Motor de Base de datos SQL Server
    • Create Database – Sintaxis
    • Create Database – Ejercicios 01
    • Create Database – ejemplos
    • Create Database – Adjuntar Base de datos
    • Create Database – Instantáneas
    • Ver tamaño de las bases de datos SQL Server
    • Alter Database – Grupos de archivos
    • Alter Database – Archivos de base de datos
    • Crear, Modificar y Adjuntar Base de datos
    • Alter Database – Escenario disco duro lleno
  • Esquemas – Tablas Esquemas y Tablas – Administración
    • Esquemas – Crear – Modificar – Eliminar
    • Mover o copiar asegurables entre esquemas
    • Tipos de datos en SQL Server
    • Tipos de datos definidos por el usuario UDT
    • Tipos de datos definidos por el usuario – ejercicio
    • Tipos de datos definidos por el usuario con formato de tabla
    • Tablas – Create Table – Teoría
    • Tablas – Create table Ejercicios
    • Tamaño de tablas en SQL Server
    • Usando restricciones en SQL Server
    • Foreign key en SQL Server
    • Comparando relaciones entre tablas Int vs. nchar
    • Tablas – Datos XML
    • Tablas – campo XML ejemplo
    • Tablas – Claves Foráneas y Campos Calculados
    • Moviendo tablas entre Filegroups en SQL Server
    • Persisted en campos calculados
    • Partición Horizontal de tablas
    • Partición Vertical de Tablas en SQL Server
    • Particionar horizontalmente una tabla existente
    • Particionando una tabla horizontalmente
    • Tablas – Modificación
    • Dynamic Data Masking en SQL Server
    • Tablas – ejercicio modificar – agregar Check
    • Uso de Identity
    • Identity – Caso práctico
    • Tablas Temporales en SQL Server
    • Usando FileStream y FileTables en SQL Server
    • Graph Tables en SQL Server
    • Variables Tipo Tabla en SQL Server
    • Insertar imágenes desde SQL Server Management Studio
  • Índices Filtros y particiones.
    • Índices – Teoría y ejercicios
    • Indices – Modificación
    • Índices – Eliminación
    • Indices – ejercicios
    • Índices particionados en SQL Server
    • Uso de Include en indices SQL Server
    • Índices en vistas SQL Server
    • ColumnStore index en SQL Server
    • Reconstruir índices en SQL Server
  • Registros – Vistas Opciones Registros
    • Insertar Registros
    • Insertar varios registros a la vez SQL Server
    • Insertar imágenes desde SQL Server Management Studio
    • Insertar documentos en formato PDF en una tabla SQL Server
    • Actualizar datos – Update
    • Eliminar registros – Delete
    • Encriptar y desencriptar datos SQL Server
    • Identity en SQL Server – caso
    • Secuencias en SQL Server
    • Vistas en SQL Server
    • Mostrar Vistas SQL Server en Excel
    • Importar datos desde Excel a SQL Server
    • Importar datos de archivo CSV
  • Consultas Extracción de datos
    • Select – Teoría
    • Select – Uso de Alias
    • Operadores en SQL Server
    • Consultas – Filtrado de registros
    • Where filtrado de registros SQL Server
    • Campos calculados en Select de SQL Server
    • Ordenamientos – Order by
    • Uso de Offset y Fetch Next en SQL Server
    • Consultas de varias tablas – Usando Join
    • Comparando Case y Join en SQL Server
    • Consultas – Opciones
    • Uso de Select into en un Filegroup
    • Cláusula UNION en Select
    • Trabajando con fechas en SQL Server
    • Fechas en SQL Server
    • Uso de With Ties en Consultas – Select
    • Select For XML Path SQL Server
    • Agrupamientos – Group By – Filtros Having
    • Grouping Sets en SQL Server
    • Over Partition By en SQL Server
    • Uso de Cube y Rollup para subtotales
    • Common Table Expressions CTE SQL Server
  • Subconsultas
    • Subconsultas en SQL Server
    • Subconsultas – Casos prácticos
    • Subconsultas – Casos prácticos 2
    • Subconsultas – Casos prácticos 3
    • Subconsultas como tabla derivada SQL Server
    • Subconsultas correlacionadas en SQL Server
    • Cross Apply y Outer Apply SQL Server
    • Comparando Joins, Subconsultas y FDU
  • Funciones en SQL Server Funciones nativas de SQL Server
    • Funciones de cadena
    • Funciones de fecha y Hora
    • Funciones Trim, Concat_WS y String_Agg
    • Función String_split SQL Server
    • Funciones First_Value, Last_Value, Lag y Lead
    • Función Row_Number en SQL Server
    • Función count_big de SQL Server
    • Coalesce SQL Server
    • Funciones matemáticas en SQL Server
    • Funciones de agregado
    • Funciones de Conversión de datos
    • Funciones de Configuración
    • Funciones para control de errores SQL Server
    • Funciones de cursor en SQL Server
  • Procedimientos almacenados
    • Procedimientos Almacenados SQL Server
    • Procedimientos Almacenados – Ejercicio
    • Encriptar procedimientos almacenados SQL Server
    • Union en Store procedure
    • Procedimientos Almacenados con parámetros de salida
    • Firmar un SP con certificado SQL Server
  • Funciones definidas por el usuario UDF
    • Funciones definidas por el usuario FDU
    • Funciones definidas por el usuario – Ejercicio
    • Funciones definidas por el usuario con valores de tabla
    • FDU con variables tipo tabla SQL Server
    • Funciones definidas por el usuario – Ejemplo
    • Funciones definidas por el usuario con valores de tabla
    • Inserción de Funciones definidas por el usuario
  • Programación SP, Cursores, FDU, T-SQL
    • Snippets en SQL Server
    • Variables en SQL Server
    • Variables Tipo Tabla en SQL Server
    • UDT con formato tabla – SQL Server
    • Estructura If en SQL Server
    • Estructura repetitiva While SQL Server
    • Variables XML en SQL Server
    • Leer campos XML en SQL Server
    • Estructura Case en SQL Server
    • Usando Case en SQL Server
    • Case, Joins y la función IIF
    • Common Table Expressions CTE SQL Server
    • Construyendo CTE en SQL Server
    • Controlando Errores en SQL Server
    • Transacciones en SQL Server
    • Sinónimos en SQL Server
  • Pivot – Unpivot Pivot – Unpivot – Referencias
    • Pivot SQL Server
    • Pivot en SQL Server – Cursos
    • Pivot y Tabla de referencia cruzada
    • Pivot y procedimientos almacenados
    • UnPivot SQL Server
  • Cursores
    • Cursores en SQL Server
    • Cursores en Store Procedure SQL Server
    • Cursores y Pivot en SQL Server
    • Cursores y Reporte personalizado
    • Cursores – Casos prácticos
    • Cursores con variable tipo tabla y contadores
    • Usando cursor en SQL Server
    • Cursores con variables tipo tabla
    • Cursor en Store Procedure
  • Triggers
    • Triggers DML en SQL Server
    • Triggers DDL en SQL Server
    • Triggers Logon en SQL Server
    • Triggers Instead Of en SQL Server
    • Triggers Activar y desactivar
    • Triggers encriptados SQL Server
    • Triggers Historial de registros eliminados
    • Triggers Historial de cambios en una tabla
  • Merge
    • Merge en SQL Server
    • Usando Merge con Select
    • Comparando Merge vs. SP
    • Merge en Graph Tables
    • Output en Merge SQL Server
  • Seguridad Entidades de seguridad y asegurables
    • Funciones de Servidor en SQL Server
    • Inicios de sesión en SQL Server – Logins
    • Funciones de base de datos en SQL Server
    • Usuarios de base de datos en SQL Server
    • Roles de aplicación en SQL Server
    • Credenciales en SQL Server
    • Credenciales en SQL Server Modificación – Eliminación
    • Certificados en SQL Server
    • Asignar permisos en SQL Server – Grant
    • Denegar permisos – Deny
  • Mantenimiento y Planes
    • Planes de mantenimiento en SQL Server
    • Tipos de copias de seguridad de Base de datos
    • Backup de una Base de datos
    • Restore de una base de datos
    • Encriptado de copias de seguridad
    • Exportar una base de datos a Azure Storage
    • Importar una base de datos de Azure a SQL Server
    • Niveles de compatibilidad SQL Server
  • Comandos DBCC
    • Comandos DBCC Categoría Informativas
    • Comandos DBCC Categoría Mantenimiento
    • Comandos DBCC Categoría Validación
    • Comandos DBCC Categoría Varios

Niveles de compatibilidad SQL Server

Secuencias en SQL Server

Firmar un SP con certificado SQL Server

Firmar procedimientos almacenados con certificados en SQL Server

Firmar los procedimientos almacenados usando un certificado es muy útil si se desea asignar permisos para la ejecución del procedimiento almacenado sin conceder explícitamente esos derechos al usuario usando Grant (Ver Permisos con Grant).

Uso de Execute As

El uso de Execute As permite la ejecución de un procedimiento almacenado sin necesidad de haber iniciado la sesión con el usuario que tiene permisos para ejecutar el procedimiento, los certificados de SQL server permiten realizar un seguimiento para buscar al autor de la ejecución original del procedimiento almacenado.
El uso de los procedimientos almacenados firmados permite un alto nivel de auditoría, especialmente durante las operaciones de seguridad o de lenguaje de definición de datos (DDL) que son las instrucciones Create, Alter o Drop.

Niveles de permisos de los certificados

Permisos a nivel de servidor

Si se crea un certificado en la base de datos «master» se permiten permisos de nivel de servidor.

Permisos a nivel de Base de datos de usuario

Si se crea un certificado en la base de datos de usuario se asignan los permisos a nivel de la base de datos.

Pasos para firmar un procedimiento almacenado

Los pasos para firmar los procedimientos almacenados para conseguir mejor nivel de auditoría y seguridad son los que se describen a continuación:

  1. Crear un usuario en base a un login para asignar los permisos.
  2. Crear un certificado de SQL Server.
  3. Crear un procedimiento almacenado y firmarlo con el certificado creado.
  4. Asignar los permisos para ejecutar el SP

Ejercicio

Usando la base de datos Northwind, crear un SP que listará los productos y firmarlo con un certificado.

1. Crear login y usuario (Ver Logins, Ver Usuarios)
use master
go
Create login TrainerSQL with password = ‘123’
go
use Northwind
go
Create user TrainerUserConLogin
from login TrainerSQL
go

2. Crear el certificado
set dateformat dmy
go
Create certificate TrainerCertificado
encryption by password = ‘TSQLCertificadoSP’
with subject = ‘Certificado para prueba de cifrado SP’,
Expiry_date = ’15/05/2025′
go
Para listar los certificados
select * from sys.certificates
go

3. Crear el procedimiento y firmarlo con el certificado
Create procedure spProductosListado
As
Select P.ProductID As ‘Código’,
P.ProductName As ‘Descripción’,
P.UnitPrice As ‘Precio’
from Products As P
— Ver el usuario que lo ejecuta
— No es parte del SP
select principal_id As ‘Código Usuario’,
name As ‘Nombre’
from sys.user_token
go

4. Para asignar el certificado al SP se necesita obviamente
el nombre del certificado y su password

Add signature to spProductosListado
by certificate TrainerCertificado
with password = ‘TSQLCertificadoSP’
go

5. Crear el usuario a partir del certificado
Create user TrainerUserConCertificado
from certificate TrainerCertificado
go

Existen dos usuarios, TrainerUserConLogin que no ha sido creado en base al certificado y TrainerUserConCertificado que ha sido creado en base al certificado. Si todo funciona correctamente TrainerUserConLogin no podrá ejecutar el procedimiento almacenado y TrainerUserConCertificado si.

Para ver los Logins que inician con el nombre Trainer
Select * from sys.database_principals where name like ‘Trainer%’
go

Asignar el permiso al usuario TrainerUserConLogin para ejecutar el procedimiento almacenado (Ver Permisos con Grant)
Grant Execute
on object::spProductosListado
to TrainerUserConLogin
go

Asignar el permiso al usuario TrainerUserConCertificado para ejecutar el procedimiento almacenado
Grant Execute
on object::spProductosListado
to TrainerUserConCertificado
go

Ejecutar el procedimiento como el usuario TrainerUserConCertificado, se sugiere en este paso conectarse nuevamente a SQL Server con el usuario para realizar la prueba. Otra forma es cambiar el entorno de ejecución usando Execute As.

execute as login = ‘TrainerSQL’
go

Ahora ejecutar el procedimiento almacenado
Execute spProductosListado
go

Para restablecer el entorno de ejecución
Revert

Importante




Categorías

  • Bases de Datos
  • Comandos DBCC
  • Conceptos e Instalación
  • Consultas
  • Cursores
  • Esquemas – Tablas
  • Funciones definidas por el usuario UDF
  • Funciones en SQL Server
  • Índices
  • Mantenimiento
  • Merge
  • Procedimientos almacenados
  • Programación
  • Registros – Vistas
  • Seguridad
  • Subconsultas
  • Triggers

Trainer SQL Server
Derechos reservados 2020

Hecho con por Graphene Themes.