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

Insertar imágenes desde SQL Server Management Studio

Controlando Errores en SQL Server

Denegar permisos – Deny

Denegar Permisos en SQL Server

  • Sobre los objetos de base de datos se pueden administrar los permisos de forma explícita para que los usuarios accedan a ellos. (Ver Logins) (Ver Usuarios de base de datos)
  • Cada asegurable tiene permisos que se pueden otorgar a una entidad de seguridad mediante la instrucción de permiso Grant (Ver Asignar permisos con Grant) y para quitar los permisos se debe utilizar Deny.

Los siguientes párrafos corresponden a la explicación del artículo donde se asignan los permisos con Grant. (Ver Permisos Grant)

Principio de los privilegios mínimos

  • Existe el enfoque basado en cuenta de usuario de privilegios mínimos (LUA) para el desarrollar de aplicaciones lo que constituye una parte importante de una estrategia de defensa contra las amenazas a la seguridad.
  • El enfoque LUA garantiza que los usuarios de base de datos siguen el principio de los privilegios mínimos e inician sesión con cuentas de usuario limitadas ya sea en base a roles o de manera individual (por usuario).
  • Se pueden utilizar roles fijos del servidor o roles flexibles de servidor (desde SQL Server 2012). (Ver Roles de Servidor)
  • Considere el uso del rol fijo del servidor sysadmin muy restringido.
  • Cuando conceda permisos a usuarios de base de datos, siga siempre el principio de los privilegios mínimos.
  • Otorgue a usuarios y roles los mínimos permisos necesarios para que puedan realizar una tarea concreta.

Permisos basados en roles

  • Administrar los permisos usando roles en lugar de a usuarios hace mas sencilla la administración de la seguridad en SQL Server.
  • Los permisos asignados a roles se heredan por todos los miembros del rol.
  • Es más sencillo agregar o quitar usuarios de base de datis de un rol que volver a crear conjuntos de permisos distintos para cada usuario.
  • Se pueden anidar los roles, tenga cuidado con crear mucho niveles de anidamiento puede reducir el rendimiento.
  • Se pueden usar los roles fijos tanto de servidor como de base de datos para simplificar los permisos de asignación.
  • Es una buena práctica asignar los permisos a nivel de esquema. Los usuarios heredan automáticamente los permisos en todos los objetos nuevos creados en el esquema; no es necesario otorgar permisos cuando se crean objetos nuevos.

Permisos a mediante código basado en procedimiento

  • El encapsulamiento del acceso a los datos a través de módulos tales como procedimientos almacenados y funciones definidas por el usuario brinda un nivel de protección adicional a la aplicación.
  • Se puede evitar que los usuarios interactúen directamente con objetos de la base de datos otorgando permisos solo a procedimientos almacenados o funciones, y denegando permisos a objetos subyacentes tales como tablas.
  • SQL Server lo consigue mediante encadenamiento de propiedad. Por ejemplo, se puede restringir los permisos de lectura de todos los objetos de la base de datos y dar permisos de ejecución de los procedimientos almacenados. Si el usuario logra conectarse a SQL Server no verá ningún objeto
    pero si podrá ejecutar los procedimientos almacenados a los que se le ha asignado permiso de ejecución.

Denegar permisos

Instrucción Deny

Deniega permisos de un asegurable a un principal. Evita que la entidad de seguridad herede permisos por su pertenencia a grupos o roles.
Sintaxis:

Deny { ALL [ PRIVILEGES ] }
| Permisos [ ON [ clase :: ] asegurable ] TO principal [ ,…n ]

Donde
All Opción que se mantienen por compatibilidad con versiones anteriores.
Se incluye Privileges para compatibilidad con ISO.
Si el asegurable es base de datos, ALL asigna BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE y CREATE VIEW.
Si el asegurable es función escalar, ALL asigna EXECUTE y REFERENCES.
Si el asegurable es función que retorna una tabla, ALL asigna DELETE, INSERT, REFERENCES, SELECT y UPDATE.
Si el asegurable es procedimiento almacenado, ALL asigna EXECUTE.
Si el asegurable es tabla, ALL asigna DELETE, INSERT, REFERENCES, SELECT y UPDATE.
Si el asegurable es Vista, ALL asigna DELETE, INSERT, REFERENCES, SELECT y UPDATE.

Permisos: la lista de permisos a denegar sobre el asegurable.
Clase: especifica el tipo de objeto.
asegurable: es el nombre del objeto asegurable.
To principal: el principal que se le denegarán los permisos.

Para hacer los ejercicios se incluirá sintaxis separadas

1. Deny con Base de datos
Deny Permisos to Principal

2. Deny con Procedimientos Almacenados
Deny Execute on Object::NombreProcedimiento to Principal

3. Deny con Vista, Tabla, Sinónimo o función definida por el usuario
Deny Permisos on Object::[NombreEsquema.]NombreObjeto to Principal

4. Deny en un esquema
Deny Permisos on Schema::NombreEsquema to Principal

5. Deny con Tipos definidos por el usuario
Deny Permisos on Type::[NombreEsquema.]NombreTipo to Principal
Nota: Los permisos pueden ser References o View Definition

Ejemplos

Ejercicio 1
Crear en AdventureWorks un usuario AsistenteRH en base a un login del mismo
nombre que tenga permisos de lectura y escritura en el esquema Person.
Denegar el los permisos para insertar, modificar y eliminar.

use master
go
create login AsistenteRH with password = ‘123’
go
use AdventureWorks
go
create user AsistenteRH from login AsistenteRH
go
— Permisos
Grant Select, Update on Schema::Person to AsistenteRH
Deny Insert, Delete on Schema::Person to AsistenteRH
go

Ejercicio 2
Crear un inicio para Northwind llamado Capataz en base al mismo login
Asignar permisos de Lectura, Inserción y Actualización en toda la BD
Denegar el permiso de Eliminación.

use master
go
Create login Capataz with password = ‘123’
go
use Northwind
go
Create user Capataz from login Capataz
go
grant select, Insert, Update to Capataz
Deny delete to Capataz
go

Ejercicio 3
Crear un usuario Auditor, asignar permiso de lectura en la BD y hacerlo miembro de db_backupoperator
Al login hacerlo miembro de [processadmin]. Denegar el permiso de insertar, eliminar y modificar.

use master
go
create login Auditor with password = ‘123’
go
Alter server role processadmin add member Auditor
go
use Northwind
go
create user Auditor from login Auditor
go
Grant Select to Auditor
Deny Insert, Delete, Update to Auditor
go
Alter role db_backupoperator add member Auditor
go

Ejercicio 4
Crear un usuario AsistenteVentas usando un login con el mismo nombre en AdventureWorks que tengo permisos de Lectura, modificación, inserción en el esquema Sales (Ventas)
Denegar Eliminación.

use master
go
create login AsistenteVentas with password = ‘123’
go
use AdventureWorks
go
Create user AsistenteVentas from login AsistenteVentas
go
Grant Select, Update, Insert on Schema::Sales to AsistenteVentas
Deny Delete on Schema::Sales to AsistenteVentas
go

Incluir para AsistenteVentas la lectura de la tabla [HumanResources].[Employee]

use AdventureWorks
go
Grant Select on Object::HumanResources.Employee to AsistenteVentas
Deny Insert, Update, Delete on Object::HumanResources.Employee to AsistenteVentas
go

Ejercicio 5
Usando Northwind
use Northwind
go

Crear un SP que liste sólo Id, Descripción, Precio y Stock de Productos, luego crear un usuario Reportes que tenga permiso únicamente al SP creado.
Denegar los permisos en la tabla productos de listado, inserción, modificación y eliminación.
Permiso en un SP es: EXECUTE

Create procedure spProductosListado
As
SELECT ProductID, ProductName, UnitPrice,
UnitsInStock from Products
go

use master
go
Create login Reportes with password = ‘123’
go
use Northwind
create user Reportes from login Reportes
go
Deny Select, insert, Update, Delete to Reportes
Grant Execute on object::dbo.spProductosListado to Reportes
go

Ejercicio 6
Usando AdventureWorks.
Crear un usuario llamado Contable que tenga acceso sólo a los esquemas Person y HumanResorces, asegurar que no pueda ver los otros esquemas y que en los esquemas que tiene permisos no pueda modificar ni eliminar los registros.

use master
go
Create login Contable with password = ‘123’
go
use AdventureWorks
go
Create user Contable from login Contable
go
Grant select, insert on schema::Person to Contable
Grant select, insert on schema::HumanResources to Contable
Deny update, delete on schema::HumanResources to Contable
Deny update, delete on schema::Person to Contable
Deny select, insert, update, delete on schema::Production to Contable
Deny select, insert, update, delete on schema::Purchasing to Contable
Deny select, insert, update, delete on schema::Sales to Contable
Deny select, insert, update, delete on schema::dbo to Contable
go

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.