SQL Server

Published on May 2016 | Categories: Documents | Downloads: 25 | Comments: 0 | Views: 322
of 217
Download PDF   Embed   Report

Comments

Content






CURSO DE PROGAMADOR DE
APLICACIONES INFORMÁTICAS

Metodologías de Análisis
(Administración y
Programación en SQL Server)


Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis


 Creación de bases de datos


 Creación de grupos de archivos


 Administración de Bases de Datos

INTRODUCIÓN
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Creación de bases de datos
Consideraciones para la creación de una base de datos

Creación de una base de datos

Registro de transacciones

Opciones de base de datos

Orígenes de información de las bases de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Consideraciones para la creación de una base de datos
• Propósito del almacenamiento de datos
• Rendimiento de transacciones
• Crecimiento potencial del almacenamiento físico
de datos
• Ubicación de los archivos
OLAP
OLTP
SQL Server Cliente
Consulta
Resultados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Creación de una base de datos
• Definir nuevas bases de datos con
– SQL Management Studio
– Transact-SQL CREATE DATABASE

• Se almacena en MASTER.sysdatabase

• Duplicado de MODEL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
CREATE DATABASE baseDeDatos
[ON
{[PRIMARY] (NAME = archivoLógico,FILENAME = 'archivoSO'
[,SIZE = tamaño] [, MAXSIZE = {tamañoMáx⏐UNLIMITED}]
[,FILEGROWTH = incrementoCrecimiento] )
} [,...n]
]
[LOG ON
{( NAME = archivoLógico, FILENAME = 'archivoSO'
[, SIZE = tamaño][, MAXSIZE = {tamañoMáx⏐UNLIMITED}]
[, FILEGROWTH = incrementoCrecimiento] )
} [,...n]
]
[COLLATE nombreIntercalación]
Creación de una base de datos
 PRIMARY: archivos de datos principal
 FILENAME: Nombre de ficheros del SO
 SIZE: Tamaño del fichero de datos o registro
 MAX SIZE: Tamaño máximo del fichero
 FILEGROWTH: incremento del crecimiento del fichero
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Registro de transacciones
Transacción: Única unidad de trabajo para una base de datos

 Atomicidad. Una transacción es unidad atómica: se completan todas
las operaciones definidas en la transacción o no se completa ninguna
de ellas.
 Coherencia. Una transacción siempre deja los datos en un estado
coherente.
 Aislamiento. Una transacción se realiza aislada de otras actividades de
bases de datos, otras actividades de la base de datos no tienen ningún
efecto sobre la transacción.
 Durabilidad. Cuando una transacción se confirma, los resultados se
almacenan en un almacenamiento persistente y sobreviven a un posible
error del sistema.
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Registro de transacciones

Las páginas de datos se
encuentran en, o se leen en,
la caché de búfer y se modifican
2
La modificación se
graba en el registro de
transacciones en disco
3
El punto de comprobación escribe
las transacciones confirmadas
en la base de datos
4
La modificación de datos
la envía la aplicación
1
Sugerencia: poner el registro en una unidad diferente para mejorar el rendimiento
Disco
Disco
Búfer
Caché
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Opciones de base de datos
Las opciones de base de datos se pueden realizar utilizando:
 SQL Server Management Studio
 Instrucción ALTER DATABASE
Categoría de opción Propósito
Automática
Controla los comportamientos automáticos como estadísticas, cierre de
base de datos y reducción
Disponibilidad
Controla si la base de datos tiene o no conexión, quién puede conectar
con ella y si la base de datos es de sólo lectura
Cursor Controla el comportamiento y el ámbito del cursor
Recuperación Controla el modelo de recuperación de la base de datos
SQL
Controla las opciones de compatibilidad con ANSI como valores nulos
ANSI y desencadenadores recursivos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Orígenes de información de las bases de datos
Origen de información Descripción
SQL Server
Management Studio
Herramienta visual que muestra los
metadatos de la base de datos dentro
del entorno de administración
Vistas de catálogo
Proporcionan metadatos acerca de
objetos de base de datos que devuelven
filas de información
Funciones de metadatos
Devuelven un valor único de información
de metadatos por función
Procedimientos almacenados
del sistema
Recuperan metadatos utilizando
procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Creación de grupos de archivos
• Qué son los grupos de archivos
•Los grupos de archivos son colecciones de archivos con nombre.

•SQL Server incluye un grupo de archivos como el predeterminado.

•Con los grupos de archivos, puede colocar objetos específicos en un archivo
específico.

• Cuándo crear grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Qué son los grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de varios archivos en un único grupo de archivos para mejorar el
rendimiento





• Uso de varios grupos de archivos para controlar la colocación física de los
datos
Cuándo crear grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos

• Supervisar el crecimiento de una base de datos.
• Ampliar los archivos de una base de datos
• Reducir archivos de bases de datos
• Eliminar bases de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Crecimiento de los archivos de datos

• Crece la actividad de modificación de datos

• Modificación con SQL Server Management Studio o Transact-SQL
con el comando ALTER DATABASE.

• Cómo controlar el tamaño de nuestra base de datos
– Configurando de los archivos de base de datos y de registro para que crezcan
automáticamente.
– Aumentando o disminuyendo manualmente el tamaño actual o el tamaño
máximo de los archivos de base de datos y de registro existentes.
– Agregando manualmente archivos secundarios de base de datos y de registro.
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Comando ALTER DATABASE








ALTER DATABASE baseDeDatos
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP nombreGrupoDeArchivos ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE nombreArchivoLógico [ WITH DELETE ]
| ADD FILEGROUP nombreGrupoDeArchivos
| REMOVE FILEGROUP nombreGrupoDeArchivos
| MODIFY FILE < filespec >
| MODIFY NAME = nuevoNombreBaseDatos
| MODIFY FILEGROUP nombreGrupoDeArchivos
{propiedadGrupoDeArchivos | NAME = nuevoNombreGrupoDeArchivos }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < nombreIntercalación >
}
ALTER DATABASE Sample
ADD FILE (NAME = 'SampleData2' , FILENAME='c:\Archivos de
programa\Microsoft SQL Server\MSSQL\Data\Sample2.ndf',
SIZE=15MB , MAXSIZE=20MB)
ALTER DATABASE Sample
MODIFY FILE ( NAME = 'SampleLog', SIZE = 15MB)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Crecimiento del registro de transacciones

• Crece la actividad de modificación de datos puede aumentar el
registro de transacciones.
• Si el registro de transacciones se queda sin espacio SQL Server no
puede registrar transacciones y no permite hacer cambios en la
base de datos.
• Operaciones frecuentes que provocan el crecimiento
– Cargar información en una tabla que tiene índices.
– Transacciones que realizan muchas modificaciones.
– Agregar o modificar datos de texto o imagen en una tabla.

Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Reducción de una base de datos

• Existe demasiado espacio asignado o disminuyen los requisitos de
espacio.
• Reducción con SQL Server Management Studio o Transact-SQL con el
comando DBCC SHRINKDATABASE.
• SQL Server no reduce un archivo a un tamaño menor que la cantidad de
espacio que ocupan los datos.

Sintaxis



Ejemplo

DBCC SHRINKDATABASE (baseDeDatos [, porcentajeDestino] [,{NOTRUNCATE |TRUNCATEONLY}])
DBCC SHRINKDATABASE (SampleData, 25)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Reducción de un archivo de datos

• Reducción con SQL Server Management Studio o Transact-SQL con el
comando DBCC SHRINKFILE.

Sintaxis



Ejemplo

DBCC SHRINKFILE (archivo | IDarchivo) [, tamañoDestino] [,
{NOTRUNCATE |TRUNCATEONLY|EMPTYFILE}])
DBCC SHRINKDAFILE (Sample, 10)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Eliminación de una base de datos

• Eliminación con SQL Server Management Studio o Transact-SQL con el
comando DROP DATABASE.

Sintaxis



Ejemplo

DROP DATABASE basededatos [,…n]
DROP DATABASE Northwind, pubs
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Administración de bases de datos
Eliminación de una base de datos

• Consideraciones antes de la eliminación.
– Con SQL Server Management Studio, sólo podemos eliminar una base de datos a la vez.
– Con Transact-SQL, podemos eliminar varias bases de datos a la vez.
– Después de eliminar una base de datos, todos los Id. de inicio de sesión que utilizaban esa
base de datos como base de datos predeterminada ya no tendrán una base de datos
predeterminada.
• Restricciones en la eliminación.
– Una base de datos que esté en proceso de restauración.
– Una base de datos que un usuario haya abierto para leer o escribir en ella.
– Una base de datos que esté publicando alguna de sus tablas como parte de la duplicación
de SQL Server.
– Una base de datos de sistema
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Creación de esquemas
• Qué son los esquemas

• Cómo funciona la resolución de nombres de objetos

• Ejercicio: Creación de un esquema
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Qué son los esquemas
Espacios de nombres para los objetos de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Sales
Contact
Person
Cómo funciona la resolución de nombres de objetos
SELECT * FROM Person.Contact
Lance
(Esquema predeterminado = Person)
Anders
(Esquema predeterminado = Sales)
ErrorLog
dbo
SELECT * FROM Contact
SELECT * FROM Contact
SELECT * FROM ErrorLog
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Creación de instantáneas de base de datos
• Qué son las instantáneas de base de datos

• Cómo funcionan las instantáneas de base de datos

• Ejercicio: Creación de instantáneas de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Qué son las instantáneas de base de datos
• Vista coherente de sólo lectura de una base de datos en un punto
especificado del tiempo
• Útil como base de datos de pruebas o de desarrollo, o para elaboración
de informes
• Debe existir en el mismo servidor que la base de datos de origen
Instantánea de las 12:00
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Cómo funcionan las instantáneas de base de datos
BD de origen BD instantánea
Copiar al escribir
SELECT …
SELECT … UPDATE …
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Implementa el estándar ISO del nivel básico de la especificación
ANSI SQL-92

• Se pueden ejecutar desde cualquier producto que cumpla los
requisitos básicos

• Incluye una funcionalidad ampliada
Transact-SQL
El lenguaje de programación Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Instrucciones del Lenguaje de definición de datos (DDL)

• Instrucciones del Lenguaje de control de datos (DCL)

• Instrucciones del Lenguaje de tratamiento de datos (DML)
Tipos de instrucciones Transact-SQL
Tipos de instrucciones Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Definen los objetos de la base de datos
– CREATE nombreObjeto
– ALTER nombreObjeto
– DROP nombreObjeto
• Deben tener los permisos adecuados

Instrucciones del Lenguaje de Definición de Datos (DDL)
Tipos de instrucciones Transact-SQL
USE northwind
CREATE TABLE customer
(cust_id int,company varchar(40),
contact varchar(30),phone char(12)
)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Establecer o cambiar los permisos
– GRANT
– DENY
– REVOKE
• Deben tener los permisos adecuados


Instrucciones del Lenguaje de Control de Datos (DCL)
Tipos de instrucciones Transact-SQL
USE northwind
GRANT SELECT ON products TO public
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las instrucciones DML se utilizan para cambiar datos o recuperar
información
– SELECT
– INSERT
– UPDATE
– DELETE
• Deben tener los permisos adecuados
Instrucciones del Lenguaje de Tratamiento de Datos (DML)
Tipos de instrucciones Transact-SQL
USE northwind
SELECT categoryid, productname, productid, unitprice
FROM products
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Instrucciones del Lenguaje de Tratamiento de Datos (DML)
Elementos de la sintaxis Transact-SQL
• Directivas de proceso por lotes

• Comentarios

• Identificadores

• Tipos de datos

• Variables



• Funciones del sistema

• Operadores

• Expresiones

• Elementos del lenguaje de
control de flujo

• Palabras clave reservadas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• GO
– Envía lotes de instrucciones de Transact-SQL a las herramientas y
utilidades
– No se trata, realmente, de una instrucción de Transact-SQL

• EXEC
– Ejecuta una función definida por el usuario, un procedimiento de
sistema, un procedimiento almacenado definido por el usuario o un
procedimiento almacenado extendido
– Controla la ejecución de una cadena de caracteres dentro de un lote de
Transact-SQL
Directivas de proceso por lotes
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Comentarios de línea



• Comentarios de bloque
Comentarios
Elementos de la sintaxis Transact-SQL
-- Muestra todas las files de las tabla Address.
SELECT * FROM Person.Address
ORDER BY PostalCode ASC; -- No necesitamos especificar ASC por que
-- es el valor por defecto
GO
/*
Este código devuelve todas las filas de la tabla products y muestra el precio
por unidad, el precio aumentado en un 10 por ciento y el nombre del producto.
*/
USE northwind
SELECT unitprice, (unitprice * 1.1), productname
FROM products
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Identificadores estándar
– El primer carácter debe ser un carácter alfabético
– Otros caracteres pueden incluir letras, números o símbolos
– Los identificadores que comienzan con un símbolo tienen usos
especiales

• Identificadores delimitados
– Se utilizan cuando los nombres contienen espacios incrustados
– Se utilizan cuando partes de los nombres incluyen palabras reservadas
– Deben encerrarse entre corchetes ([ ]) o dobles comillas (" “)
Identificadores
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Poner nombres cortos
• Utilizar nombres significativos cuando sea posible
• Utilizar una convención de denominación clara y sencilla
• Utilizar un identificador que distinga el tipo de objeto
– Vistas
– Procedimientos almacenados

• Hacer que los nombres de los objetos y de los usuarios sean
únicos
Denominación para Identificadores
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Tipos de Datos
Elementos de la sintaxis Transact-SQL
• Números
- Bit, Int, Decimal, Real, …

• Fechas
- DataTime, SmallDatatime, …

• Caracteres
- Char(n), Varchar(n), …

• Binario
- Binary, Varbinary, …

• Identificadores únicos (GUID)
- Uniqueidentifier



• Variaciones de SQL

• Texto e imagen

• Tablas

• Cursores

• Tipos de datos definidos por el
usuario
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Variable definida por el usuario en una instrucción DECALRE @
• Valores asignados con una instrucción SET o SELECT
• Las variables tiene el ámbito Local o Global
Variables
Elementos de la sintaxis Transact-SQL
declare @nombre varchar(50)
-- declare declara una variable
-- @nombre es el identificador de la
-- variable de tipo varcharset
@nombre = 'Formacion' -- El signo = es un operador -
- formacion es un literal
print @Nombre -- Imprime por pantalla el valor de @nombre.
-- No diferencia mayúsculas ni minúsculas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Funciones de agregado


• Funciones escalares


• Funciones de conjuto de filas
Funciones del sistema
Elementos de la sintaxis Transact-SQL
SELECT *
FROM OPENQUERY (OracleSvr, 'SELECT name, id FROM owner.titles')
SELECT AVG(unitprice) AS AvgPrice
SELECT DBNAME() AS 'database' GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Tipos de operadores
– Aritmético
– Comparación
– Concatenación de cadenas
– Lógico

• Niveles de precedencia de los operadores
– Agrupación principal
– Multiplicativo
– Aditivo
– Concatenación de cadenas
– Lógicos
Operadores
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Combinación de símbolos y operadores

• Evaluación de valores escalares simples

• El tipo de datos del resultado depende de los elementos que
forman la expresión
Expresiones
Elementos de la sintaxis Transact-SQL
SELECT OrderID, ProductID,(UnitPrice * Quantity) as ExtendedAmount
FROM [Order Details]
WHERE (UnitPrice * Quantity) > 10000
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
IF … ELSE
• Nivel de instrucción
– Bloques BEGIN … END
– Bloques IF … ELSE
– Construcciones WHILE
– Nivel de fila

• CASE expresión
Control de flujo
Elementos de la sintaxis Transact-SQL
DECLARE @Web varchar(100),
@diminutivo varchar(3)
SET @diminutivo = 'BD'
IF @diminutivo = 'BD'
BEGIN
PRINT 'Formación bases de
datos'
END
ELSE
BEGIN
PRINT 'Otra formación'
END
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

IF …ELSE WHILE
WHILE CASE
Elementos de la sintaxis Transact-SQL
DECLARE @contador int
SET @contador = 0
WHILE (@contador < 100)
BEGIN
SET @contador = @contador + 1
IF (@contador % 2 = 0)
PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)
END
DECLARE @Web varchar(100),
@diminutivo varchar(3)
SET @diminutivo = 'BD'
SET @Web = (CASE @diminutivo
WHEN 'DB' THEN 'Fomación Bases de datos'
WHEN 'ANA' THEN 'Formación Análisis de datos'
ELSE 'No es una formación'
END)
PRINT @Web
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Nombres de identificadores que tienen un significado
especial
– Palabras clave de Transact-SQL
– Palabras clave ANSI SQL-92
– Palabras clave reservadas de ODBC

• No utilizar palabras clave reservadas para nombres de
identificadores

Palabras clave reservadas
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Tipos de Integridad
Exigir integridad de datos
Integridad de Dominio
(columnas)
Integridad de entidad (filas)
Integridad referencial
(Entre tablas o columnas de una misma tabla
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis


Especifica un conjunto de valores de datos que son válidos para una columna
y determina si se permiten valores nulos.

La integridad de dominio se suele implementar mediante el uso de
comprobaciones de validez y, también, mediante la restricción del tipo de
datos, el formato o el intervalo de los valores posibles permitidos en una
columna
Tipos de Integridad I
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Integridad de dominio
(columnas)
Tipos de Integridad I
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis


La integridad de entidad (o tabla) requiere que todas las filas de una tabla
tengan un identificador exclusivo, conocido como clave principal.

El que se pueda modificar el valor de la clave principal o eliminar la fila entera
depende del nivel de integridad requerido entre la clave principal y cualquier
otra tabla.
Tipos de Integridad II
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Integridad de dominio
(columnas)
Integridad de entidad (filas)
Tipos de Integridad II
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

La integridad referencial asegura que siempre se mantienen las relaciones
entre las claves principales (en la tabla a la que se hace referencia) y las
claves externas (en las tablas que hacen referencia).

No se puede eliminar una fila de una tabla a la que se hace referencia, ni se
puede modificar la clave principal, si una clave externa hace referencia a la
fila, salvo que se permita la acción en cascada.

Puede definir relaciones de integridad referencial dentro de la misma tabla o
entre tablas diferentes.
Tipos de Integridad III
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Integridad de dominio
(columnas)
Integridad de entidad (filas)
Integridad referencial
(entre tablas)
Tipos de Integridad III
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Integridad de datos declarativa
– Los criterios se definen en la definición del objeto
– Asegurada automáticamente por SQL Server
– Implementada mediante restricciones, valores predeterminados y reglas

• Integridad de datos procedimental
– Los criterios se definen en una secuencia de comandos
– Asegurada mediante secuencia de comandos
– Implementada mediante desencadenadores y procedimientos
almacenados

Exigir Integridad de datos
Exigir integridad de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Restricciones de datos
Restricciones de datos
Tipo de Integridad Tipo de Restricción Destino
Dominio
DEFAULT Columna
CHECK Columna
NULL Columna
Entidad
PRIMARY KEY Tabla
UNIQUE Columna
Referencial
FOREIGN KEY Tabla
CHECK Columna
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Utilizar CREATE TABLE o ALTER TABLE

• Puede agregar restricciones a una tabla con datos existentes

• Podemos aplicar restricciones a una sola columna o a varias
columnas
– Una sola columna, se llama restricción de columna
– Varias columnas, se llama restricción de tabla
Creación de restricciones
Restricciones de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Podemos modificarlas sin volver a crear la tabla

• Requieren comprobación de errores en aplicaciones y
transacciones

• SQL Server comprueba los datos existentes cuando se agrega
una restricción
Consideraciones para el uso de restricciones
Restricciones de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Restricciones DEFAULT
• Restricciones CHECK
• Restricciones PRIMARY KEY
• Restricciones UNIQUE
• Restricciones FOREIGN KEY
• Integridad referencial en cascada
Tipos de restricciones
Tipos de restricciones
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Sólo una restricción PRIMARY KEY por tabla
• Los valores deben ser exclusivos
• No se permiten valores nulos
• Crea un índice exclusivo en las columnas especificadas
Restricción PRIMARY KEY
Tipos de Restricciones
USE northwind
ALTER TABLE dbo.Customers
ADD CONSTRAINT PK_Customers PRIMARY KEY (CustomerID)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Sólo se aplica a las instrucciones INSERT
• Sólo una restricción DEFAULT por columna
• No se puede utilizar con la propiedad IDENTITY o el tipo de datos
rowversion
• Permite que se especifiquen algunos valores proporcionados por el
sistema
Restricción DEFAULT
Tipos de Restricciones
USE Northwind
ALTER TABLE dbo.Customers
ADD
CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se utilizan con las instrucciones INSERT y UPDATE
• Pueden hacer referencia a otras columnas en la misma tabla
• No pueden:
– Utilizarse con el tipo de datos rowversion
– Contener subconsultas
Restricción CHECK
Tipos de Restricciones
USE Northwind
ALTER TABLE dbo.Employees
ADD
CONSTRAINT CK_birthdate
CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate())
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Permite un valor nulo
• Permite varias restricciones UNIQUE en una tabla
• Definidas con una o más columnas
• Exigida con un índice único
Restricción UNIQUE
Tipos de Restricciones
USE northwind
ALTER TABLE dbo.Suppliers
ADD
CONSTRAINT U_CompanyName
UNIQUE NONCLUSTERED (CompanyName)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Deben hacer referencia a una restricción PRIMARY KEY o UNIQUE
• Proporcionan integridad referencial de una o de varias columnas
• No crean índices automáticamente
• Los usuarios deben tener permisos SELECT o REFERENCES en las
tablas a las que se hace referencia
• Usa sólo la cláusula REFERENCES en la tabla de ejemplo
Restricción FOREIGN KEY
Tipos de Restricciones
USE northwind
ALTER TABLE dbo.Orders
ADD CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerID)
REFERENCES dbo.Customers(CustomerID)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Controlada por la cláusula CASCADE de la restricción FOREIGN KEY
Integridad referencial en cascada
Tipos de Restricciones
Opción de cascada
Comportamiento de
UPDATE
Comportamiento de
DELETE
NO ACTION
(valor predeterminado)
Produce error, deshace operación
CASCADE
Actualizar claves externas en
las tablas referenciadas
Eliminar filas en las tablas
referenciadas
SET NULL
Establecer en NULL las claves externas en las tablas de
referencia
SET DEFAULT
Establecer valores predeterminados las claves externas en
las tablas de referencia
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Deshabilitación de la comprobación de las restricciones en los datos
existentes

• Deshabilitación de la comprobación de las restricciones al cargar datos
nuevos

Deshabilitación de restricciones
Deshabilitación de Restricciones
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se aplica a las restricciones CHECK y FOREIGN KEY
• Utilizar la opción WITH NOCHECK cuando agregue una restricción nueva
• Utilizar si los datos existentes no cambian
• Se pueden cambiar los datos existentes antes de agregar restricciones

Deshabilitación de restricciones en datos existentes
Deshabilitación de Restricciones
USE northwind
ALTER TABLE dbo.Employees
WITH NOCHECK
ADD CONSTRAINT FK_Employees_Employees
FOREIGN KEY (ReportsTo)
REFERENCES dbo.Employees(EmployeeID)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se aplica a las restricciones CHECK y FOREIGN KEY

• Utilizar si:
– Los datos cumplen las restricciones
– Carga datos nuevos que no cumplen las restricciones

Deshabilitación de restricciones carga de datos nuevos
Deshabilitación de Restricciones
USE northwind
ALTER TABLE dbo.Employees
NOCHECK
CONSTRAINT FK_Employees_Employees
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Como objetos independientes
– Se definen una vez
– Puede vincularse a una o más columnas y a tipos de datos definidos por el usuario
Uso de valores predeterminados y reglas
Uso de valores predeterminados y Reglas
CREATE DEFAULT phone_no_default
AS '(000)000-0000'
GO
EXEC sp_bindefault phone_no_default, 'Customers.Phone'
CREATE RULE regioncode_rule
AS @regioncode IN ('IA', 'IL', 'KS', 'MO')
GO
EXEC sp_bindrule regioncode_rule, 'Customers.Region'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Decisión del método de implementación a utilizar
Decisión del método a implementar
Componente de
integridad de
datos
Funcionalidad
Costos de
rendimiento
Antes o después
de la transacción
Restricciones Media Baja Antes
Valores
Predeterminados y
reglas
Baja Baja Antes
Desencadenadores Alta Medio-Alto Después
Tipos de datos,
NULL / NOT NULL
Baja Baja Antes
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis


• Iniciar transacciones
– Explícitas
– De confirmación automática
– Implícitas
• Finalizar transacciones
– Instrucción COMMIT
– Instrucción ROLLBACK

Uso de Transacciones
Uso de transacciones
BEGIN TRANSACTION
UPDATE savings
SET balance = balance - 100
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR
('Error, transaction not completed!', 16, -1)
ROLLBACK TRANSACTION
END
UPDATE checking
SET balance = balance +100
WHERE custid = 78910
IF @@ERROR <> 0
BEGIN
RAISERROR
('Error, transaction not completed!', 16, -1)
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Inserción de una fila de datos mediante valores

• Uso de la instrucción INSERT…SELECT

• Creación de una tabla mediante la instrucción SELECT INTO

• Inserción de datos parciales

• Inserción de datos mediante valores de columna predeterminados
Tipos de inserciones
Inserción de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Debe atenerse a las restricciones de destino o la transacción INSERT
fallará.
• Usar una lista de columnas para especificar las columnas de destino.
• Especificar una lista de valores correspondientes.
Inserción de una fila de datos mediante valores
Inserción de datos
USE northwind
INSERT customers
(customerid, companyname, contactname, contacttitle, address,
city, region, postalcode, country, phone,fax)
VALUES
('PECOF', 'Pecos Coffee Company','Michael Dunn','Owner',
'1900 Oak Street', 'Vancouver', 'BC', 'V3F 2K1', 'Canada',
'(604) 555-3392','(604) 555-7293')
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Todas las filas que cumplan la instrucción select se insertan.
• Debemos comprobar que existe la tabla que recibe las nuevas filas.
• Tipos de datos compatibles entre tablas.
• Determinar si existe un valor predeterminado o si se permiten valores
NULL.
Uso de la instrucción INSERT…SELECT
Inserción de datos
USE northwind
INSERT customers
SELECT substring (firstname, 1, 3)
+ substring (lastname, 1, 2)
,lastname, firstname, title, address, city
,region, postalcode, country, homephone, NULL FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Para crear una tabla e insertar filas en ella en una sola operación.
• Se puede crear una tabla temporal local o global.
• En la lista de selección, debemos crear alias de columnas o especificar los
nombres de las columnas de la nueva tabla.
Uso de la instrucción SELECT INTO
Inserción de datos
SELECT productname AS products
,unitprice AS price
,(unitprice * 1.1) AS tax
INTO #pricetable
FROM products
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Es posible insertar una fila sin especificar todos sus datos.
• Si una fila admite valores NULL o tiene definidos valores predeterminados
Inserción de datos parciales
Inserción de datos
USE northwind
INSERT shippers (companyname) VALUES ('Fitch & Mather')
GO
USE northwind
SELECT * FROM shippers WHERE companyname = 'Fitch & Mather'
GO
Resultado shipperid companyname phone
4 Fitch & Mather NULL
(1 fila afectada)
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Palabra clave DEFAULT
– Inserta valores predeterminados para columnas específicas.
– Las columnas deben tener un valor predeterminado o permitir valores nulos.

• Palabra clave DEFAULT VALUES
– Inserta valores predeterminados para todas las columnas.
– Las columnas deben tener un valor predeterminado o permitir valores nulos.
Inserción de datos mediante
valores de columna predeterminados
Inserción de datos
USE northwind
INSERT shippers (companyname, phone)
VALUES ('Kenya Coffee Co.', DEFAULT)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de la instrucción DELETE

• Uso de la instrucción TRUNCATE TABLE

• Eliminación de filas basada en otras tablas
Tipos de eliminación
Eliminación de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• La instrucción DELETE quita una o más filas en una tabla a menos que
utilice una cláusula WHERE

• Cada fila eliminada se almacena en el registro de transacciones
Uso de la instrucción DELETE
Eliminación de datos
USE northwind
delete [Order Details]
where OrderID=10248
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• La instrucción TRUNCATE TABLE quita todos los datos de una tabla.

• No registra las filas eliminadas.

Uso de la instrucción TRUNCATE TABLE
Eliminación de datos
USE northwind
TRUNCATE TABLE [order Details]
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de una cláusula FROM adicional
– La primera cláusula FROM indica la tabla que se va a modificar
– La segunda cláusula FROM especifica los criterios de restricción para la instrucción DELETE

• Especificación de condiciones en la cláusula WHERE
– Las subconsultas determinan qué filas eliminar
Eliminación de filas basadas en otras tablas
Eliminación de datos
USE northwind
DELETE FROM [order details] WHERE orderid IN
( SELECT orderid FROM orders WHERE orderdate = '14/4/1998' )
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Actualización de filas basada en datos de la tabla

• Actualización de filas basada en otras tablas
Actualización de datos
Actualización de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• La cláusula WHERE especifica las filas que se van a cambiar
• La palabra SET especifica los datos nuevos
• Los valores de entrada deben tener los mismos tipos de datos que las
columnas
• No se actualizarán las filas que infrinjan alguna restricción de integridad
Actualización de filas basada en datos de la tabla
Actualización de datos
USE northwind
UPDATE products
SET unitprice = (unitprice * 1.1)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de la instrucción UPDATE
– Nunca actualiza la misma fila dos veces
– Requiere prefijos de tablas en nombres de columnas ambiguos
• Especificación de filas para actualizar con combinaciones
– Utilizar la cláusula FROM
• Especificación de filas para actualizar con subconsultas
– Correlacionar la subconsulta con la tabla actualizada
Actualización de filas basada en datos de otras tablas
Actualización de datos
USE northwind
UPDATE products SET unitprice = unitprice + 2 WHERE supplierid IN
( SELECT supplierid FROM suppliers WHERE country = 'USA' )
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las modificaciones de datos se producen en una transacción

• Se producen asignaciones de páginas de datos

• La modificación de datos indizados disminuye el rendimiento

• Los índices pueden mejorar los criterios de búsquedas
Actualización de filas basada en datos de otras tablas
Consideraciones acerca del rendimiento
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• La lista de selección especifica las columnas
• La cláusula WHERE especifica las filas
• La cláusula FROM especifica la tabla
Uso de la instrucción SELECT
Recuperación de datos mediante la instrucción SELECT
SELECT [ ALL | DISTINCT ] <listaSelección>
FROM {<tablaOrigen>} [, ...n]
[ WHERE <condiciónBúsqueda> ]
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Especificación de columnas
Recuperación de datos mediante la instrucción SELECT
USE northwind
SELECT employeeid, lastname, firstname, title
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de la cláusula WHERE para especificar filas
Recuperación de datos mediante la instrucción SELECT
USE northwind
SELECT employeeid, lastname, firstname, title
FROM employees
WHERE employeeid = 5
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de los operadores de comparación

• Uso de comparaciones de cadenas

• Uso de operadores lógicos

• Obtención de un intervalo de valores

• Uso de una lista de valores como criterio de búsqueda

• Obtención de valores desconocidos
Modos para filtrar datos
Filtros de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de los operadores de comparación
Filtro de datos
USE northwind
SELECT lastname, city
FROM employees
WHERE country = 'USA'
GO
Operador Descripción
= Igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No igual a
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso comparaciones de cadenas
Filtro de datos
Comodín Descripción
% Cualquier cadena de cero o más caracteres.
_ Cualquier carácter individual.
[] Cualquier carácter individual contenido en el intervalo o
conjunto especificado.
[^] Cualquier carácter individual no contenido en el intervalo
o conjunto especificado.
USE northwind
SELECT companyname
FROM customers
WHERE companyname LIKE '%Restaurant%'
GO
• Uso de la cláusula LIKE en combinación con caracteres comodín para
comparar cadenas de caracteres
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de operadores lógicos
Filtro de datos
Operador Descripción
AND Obtener filas que cumplen todos los criterios de la búsqueda
OR Obtener filas que cumplen algún criterio de la búsqueda
NOT Para negar la expresión especificada a continuación
USE northwind
SELECT productid, productname, supplierid, unitprice
FROM products
WHERE (productname LIKE 'T%' OR productid = 46)
AND (unitprice > 16.00)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Obtención de un intervalo de valores
Filtro de datos
Operador Descripción
BETWEEN Obtener filas en un intervalo específico
NOT BETWEEN Obtener filas fuera de un intervalo específico
USE northwind
SELECT productname, unitprice
FROM products
WHERE unitprice BETWEEN 10 AND 20
GO
• Condición de búsqueda BETWEEN en la cláusula WHERE

Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de una lista de valores como criterio de búsqueda
Filtro de datos
USE northwind
SELECT companyname, country
FROM suppliers
WHERE country IN ('Japan', 'Italy')
GO
• Condición de búsqueda IN en la cláusula WHERE
• Es equivalente a utilizar expresiones de comparación concatenadas con
OR

Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Obtención de valores desconocidos
Filtro de datos
• Recuperar columnas sin un valor especificado
• Condición de búsqueda IS NULL
• Un valor NULL no es lo mismo que un valor cero o en blanco
• Podemos utilizar IS NOT NUL para obtener las filas con valores conocidos
USE northwind
SELECT companyname, fax
FROM suppliers
WHERE fax IS NULL
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Ordenación de los datos

• Eliminación de filas duplicadas

• Cambio del nombre de las columnas

• Uso de literales
Dar formato a los resultados
Dar formato a un conjunto de resultados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Ordenación de los datos
Dar formato a un conjunto de resultados
• Uso de la cláusula ORDER BY, para ordenar los resultados de forma
ascendente o descendente
• De forma predeterminada ORDER BY realiza una ordenación ascendente
USE northwind
SELECT productid, productname, categoryid, unitprice
FROM products
ORDER BY categoryid, unitprice DESC
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Eliminación de filas duplicadas
Dar formato a un conjunto de resultados
• Uso de la cláusula DISTINCT, para eliminar filas duplicadas del conjunto
de resultados

USE northwind
SELECT DISTINCT country
FROM suppliers ORDER BY country
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Cambio del nombre de las columnas
Dar formato a un conjunto de resultados
• En ocasiones es necesario para tener nombres de columnas más legibles

• Usamos la cláusula AS para definir el nuevo nombre de la columna

USE northwind
SELECT firstname AS First, lastname AS Last,
employeeid AS 'Employee ID:'
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de literales
Dar formato a un conjunto de resultados
• Usamos lo literales para haces más legible el conjunto de resultados.
USE northwind
SELECT firstname, lastname ,'Número de identificación:', employeeid
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Procesamiento de consultas
Cómo se procesan las consultas
• Consultas que no están almacenada en caché




• Consultas almacenadas en caché
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Consideraciones acerca del rendimiento
Cómo se procesan las consultas
• Las condiciones de búsqueda negativas pueden hacer que la recuperación
de datos sea más lenta

• La obtención de datos con LIKE puede resultar más lenta

• Las coincidencias exactas o intervalos hacen que la obtención de datos
sea más rápida

• La cláusula ORDER BY puede ralentizar la obtención de datos

Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Cláusula TOP n o TOP n PERCENT
– Presenta sólo las n primeras filas de un conjunto de resultados
– Especifica el intervalo de valores con la cláusula ORDER BY
– Devuelve las filas iguales si se utiliza WITH TIES
Presentación de los primeros n valores
Presentación de los primeros n valores
USE northwind
SELECT TOP 5 orderid, productid, quantity
FROM [order details]
ORDER BY quantity DESC
GO
USE northwind
SELECT TOP 5 WITH TIES orderid, productid, quantity
FROM [order details]
ORDER BY quantity DESC
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Funciones de agregado
Uso de funciones de agregado
Operador Descripción
AVG Promedio de valores en una expresión numérica
COUNT Número de valores en una expresión
COUNT (*) Número de filas seleccionadas
MAX Valor más alto en la expresión
MIN Valor más bajo en la expresión
SUM Valores totales en una expresión numérica
• Resume los valores de toda una tabla o un grupo de columnas y produce
un valor para cada conjunto de filas.
USE northwind
SELECT AVG(unitprice)
FROM products
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de las funciones de agregado con valores nulos
Uso de funciones de agregado
• La mayoría de las funciones de agregado pasan por alto los valores
nulos
• La función COUNT(*) cuentas las filas con valores nulos

USE northwind
SELECT COUNT(*)
FROM employees
GO
USE northwind
SELECT COUNT(reportsto)
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las funciones de agregado generan un solo valor para todos los datos
de una columna

• Con GROUP BY podemos obtener varios valores de resumen para
distintos datos de una columna

• GROUP BY no garantiza la ordenación de los datos, es necesario
utilizar ORDER BY
GROUP BY
Fundamentos de GROUP BY
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de GROUP BY
Fundamentos de GROUP BY
USE northwind
SELECT productid, orderid, quantity
FROM orderhist
GO
USE northwind
SELECT productid, SUM(quantity) AS total_quantity
FROM orderhist
GROUP BY productid
GO
USE northwind
SELECT productid, SUM(quantity) AS total_quantity
FROM orderhist
WHERE productid = 2
GROUP BY productid
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
GROUP BY con la cláusula HAVING
Fundamentos de GROUP BY
• HAVING establece condiciones en los grupos incluidos en un
conjunto de resultados

• Interactúa como la cláusula WHERE con la instrucción SELECT

• Solo utilizar con la cláusula GROUP BY
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Uso de GROUP BY con la cláusula HAVING
Fundamentos de GROUP BY
USE northwind
SELECT productid, orderid, quantity
FROM orderhist
GO
USE northwind
SELECT productid, SUM(quantity) AS total_quantity
FROM orderhist
GROUP BY productid
HAVING SUM(quantity) >=30
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
• Uso de la cláusula GROUP BY con el operador ROLLUP

• Uso de la cláusula GROUP BY con el operador CUBE

• Uso de la función GROUPING
Generación de valores de agregado dentro
de los conjuntos de resultados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
• Uso de ROLLUP para resumir valores de grupos
- Máximo 10 expresiones de agrupación

• Uso de CUBE para resumir todas las combinaciones posibles de los
grupos en función de la cláusula GROUP BY
- Si tiene n columnas devuelve las 2n-1 combinaciones de resultados
- El valor NULL indica que dichas filas son el resultado del operador CUBE

ROLLUP y CUBE
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
Uso de GROUP BY con el operador ROLLUP
USE northwind
SELECT productid, orderid, SUM(quantity) AS total_quantity
FROM orderhist
GROUP BY productid, orderid
WITH ROLLUP
ORDER BY productid, orderid
GO
Descripción
Total General
Resume solo las filas para producid 1
Detalla el valor para productid 1, orderid 1
Detalla el valor para productid 1, orderid 2
Resume solo las filas para producid 2
Detalla el valor para productid 2, orderid 1
Resume solo las filas para producid 3
Detalla el valor para productid 3, orderid 1
Detalla el valor para productid 3, orderid 2
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
Uso de GROUP BY con el operador CUBE
Descripción
Total General
Resume todas las filas para orderid 1
Resume todas las filas para orderid 2
Resume sólo las filas para productid 1
Detalla el valor para productid 1, orderid 1
Detalla el valor para productid 1, orderid 2
Resume sólo las filas para productid 2
Detalla el valor para productid 2, orderid 1
Detalla el valor para productid 2, orderid 1
Resume sólo las filas para productid 3
Detalla el valor para productid 3, orderid 1
Detalla el valor para productid 3, orderid 2
USE northwind
SELECT productid, orderid, SUM(quantity) AS total_quantity
FROM orderhist
GROUP BY productid, orderid
WITH CUBE
ORDER BY productid, orderid
GO
El operador CUBE
produce dos
resúmenes más de
valores que el
operador ROLLUP
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados

• Uso de GROUPING con ROLLUP y CUBE para distinguir los valores de
detalle y de resumen de un conjunto de resultados

• Nos ayuda a distinguir si el valor NULL de una fila pertenece al conjunto
de resultados o ha sido generado por ROOLUP o CUBE
- Valor 1 indica valores de resumen de ROLLUP o CUBE
- Valor 0 indica valores de detalle del conjunto de resultados

• Solo se puede utilizar GROUPING en las columnas de la cláusula
GROUP BY
GROUPING
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
Uso de la función GROUPING
1 representa los valores de resumen en la
columna precedente
0 representa los valores de detalle en la
columna precedente
USE northwind
SELECT productid, GROUPING (productid),
orderid, GROUPING (orderid),
SUM(quantity) AS total_quantity
FROM orderhist
GROUP BY productid, orderid
WITH CUBE
ORDER BY productid, orderid
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
COMPUTE y COMPUTE BY
• Generan filas de resumen adicionales en un formato no relacional

• No adaptan el estándar ANSI

• Los resultados no están adaptados para que pueden tratarlos otras
aplicaciones

• No es la herramienta más adecuada, Cristal Reports, Analisys Server, etc
ofrecen características más completas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Generación de valores de agregado dentro de los conjuntos de resultados
Uso de las cláusulas COMPUTE y COMPUTE BY
USE northwind
SELECT productid, orderid, quantity
FROM orderhist
ORDER BY productid, orderid
COMPUTE SUM(quantity)
GO
USE northwind
SELECT productid, orderid, quantity
FROM orderhist
ORDER BY productid, orderid
COMPUTE SUM(quantity) BY productid
COMPUTE SUM(quantity)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Recomendaciones de uso
Recomendaciones
• Indexar con frecuencia las columnas de agregación

• Evitar el uso de funciones de agregado con valores nulos

• Usar la cláusula ORDER BY para garantizar un orden de clasificación

• Utilizar el operador ROLLUP en lugar de CUBE

• Evitar utilizar la cláusula COMPUTE o COMPUTE BY
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Mejora la legibilidad de las secuencias de comandos
• Facilita la escritura de combinaciones complejas
• Simplifica el mantenimiento
Uso de alias en los nombres de tablas
Uso de alias en los nombres de tablas
USE joindb
SELECT buyer_name, sales.buyer_id, qty
FROM buyers
INNER JOIN sales
ON buyers.buyer_id = sales.buyer_id
USE joindb
SELECT buyer_name, s.buyer_id, qty
FROM buyers AS b
INNER JOIN sales AS s
ON b.buyer_id = s.buyer_id
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Combinación de datos de varias tablas
Combinación de datos de varias tablas
• Introducción a las combinaciones

• Uso de combinaciones internas

• Uso de las combinaciones externas

• Uso de las combinaciones cruzadas

• Combinación de más de dos tablas

• Combinación de una tabla consigo misma
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Introducción a las combinaciones
• Selección de columnas específicas de varias tablas
o La palabra clave JOIN especifica qué tablas se van a combinar y cómo
o La palabra clave ON especifica la condición de combinación

• Consultas de dos o más tablas para producir un conjunto de resultados
o Usar claves principales y externas como condiciones de combinación
o Para combinar tablas, utilizamos columnas comunes a las tablas
especificadas

Combinación de datos de varias tablas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Combinan tablas mediante la comparación de los valores de las
columnas que son comunes en ambas tablas.
• Sólo devuelve las filas que cumplen la condición de la combinación
• Utilizaremos la cláusula INNER JOIN, se puede abreviar por JOIN.
Uso de combinaciones internas
Combinación de datos de varias tablas
USE joindb
SELECT buyer_name, sales.buyer_id, qty
FROM buyers
INNER JOIN sales
ON buyers.buyer_id = sales.buyer_id
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Combinan dos tablas que cumplen una condición de combinación, más
las filas de la tabla derecha o izquierda que no la cumplen.
• Utilizaremos la cláusula LEFT OUTNER JOIN o RIGHT OUTER JOINo
su abreviatura LEFT JOIN y RIGHT JOIN.
Uso de combinaciones externas
Combinación de datos de varias tablas
USE joindb
SELECT buyer_name, sales.buyer_id, qty
FROM buyers
LEFT OUTER JOIN sales
ON buyers.buyer_id = sales.buyer_id
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Representa todas las combinaciones de todas las filas de las tablas
asociadas.
• Este tipo de combinación no requiere una columna común.
• No suelen utilizarse en bases de datos normalizadas.

Uso de combinaciones cruzadas
Combinación de datos de varias tablas
USE joindb
SELECT buyer_name, qty
FROM buyers
CROSS JOIN sales
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Combinación de más de dos tablas
Combinación de datos de varias tablas
USE joindb
SELECT buyer_name, prod_name, qty
FROM buyers
INNER JOIN sales
ON buyers.buyer_id = sales.buyer_id
INNER JOIN produce
ON sales.prod_id = produce.prod_id
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Combinación de más de dos tablas
Combinación de datos de varias tablas
USE joindb
SELECT a.buyer_id AS buyer1, a.prod_id, b.buyer_id AS buyer2
FROM sales AS a
INNER JOIN sales AS b
ON a.prod_id = b.prod_id
WHERE a.buyer_id <> b.buyer_id
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Usar el operador UNION para crear un conjunto de resultados único a
partir de varias consultas.
• Cada consulta debe tener:
– Tipos de datos similares
– El mismo número de columnas
– El mismo orden de las columnas en la lista de selección

Combinación de varios conjuntos de resultados
Combinación de varios conjuntos de resultados
USE northwind
SELECT (firstname + ' ' + lastname) AS name, city, postalcode
FROM employees
UNION
SELECT companyname, city, postalcode
FROM customers
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Realizar la combinación de tablas por las columnas que son clave
primaria o clave externa.

• Referenciar todas las columnas de una clave primaria compuesta en la
cláusula ON cuando la clave compuesta está en la tabla relacionada.

• Limitar el número de tablas que participan en una unión, ya que cuanto
más tablas intentemos unir más tiempo requerirá SQL Server para
procesar la consulta.
Recomendaciones
Recomendaciones
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Por qué utilizar subconsultas
– Para dividir una consulta compleja en varios pasos lógicos
– Para responder una consulta que depende de los resultados de
otra consulta

• Por qué utilizar combinaciones en lugar de subconsultas
– SQL Server ejecuta combinaciones más rápidas que la subconsultas

• Cómo utilizar subconsultas
Introducción a las subconsultas
Introducción a las subconsultas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Es un conjunto de registros dentro de una consulta que funciona
como una tabla
• Ocupa el lugar de la tabla en la cláusual FROM
• Se optimiza con el resto de la consulta
Uso de una subconsulta como una tabla derivada
Uso de una subconsulta como una tabla derivada
USE northwind
SELECT T.orderid, T.customerid
FROM ( SELECT orderid, customerid
FROM orders ) AS T
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se evalúa y trata como una expresión
• Se ejecuta una vez para la instrucción entera
Uso de una subconsulta como una expresión
Uso de una subconsulta como una expresión
USE northwind
SELECT productid, unitprice
,(SELECT AVG(unitprice) FROM products) AS average
,unitprice-(SELECT AVG(unitprice) FROM products) AS difference
FROM products
WHERE productname='Chang'
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se puede utilizar como una expresión dinámica que cambia en cada fila
de una consulta externa
• Divide consultas complejas en dos o más consultas simples relacionadas
• Simulación de una cláusula JOIN
• Simulación de una cláusula HAVING
Uso de una subconsulta para correlacionar datos
Uso de una subconsulta para correlacionar datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
1. La consulta externa pasa un valor de columna a la consulta interna
2. La consulta interna utiliza los valores que pasa la consulta externa
3. La consulta interna devuelve un valor a la consulta externa
4. Este proceso se repite para la fila siguiente de la consulta externa
• Simulación de una cláusula HAVING
Evaluación de una subconsulta correlacionada
Uso de una subconsulta para correlacionar datos
USE northwind
SELECT orderid, customerid
FROM orders AS or1
WHERE 20 < (SELECT quantity
FROM [order details] AS od
WHERE or1.orderid = od.orderid AND od.productid = 23)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las subconsultas correlacionadas pueden producir el mismo
resultado que una cláusula JOIN
• Las combinaciones permiten al optimizador de consultas determinar
la manera de correlacionar los datos de la forma más eficiente
Simulación de una cláusula JOIN
Uso de una subconsulta para correlacionar datos
USE pubs
SELECT DISTINCT t1.type
FROM titles AS t1
WHERE t1.type IN
(SELECT t2.type
FROM titles AS t2
WHERE t1.pub_id <> t2.pub_id)
GO
USE pubs
SELECT DISTINCT t1.type
FROM titles AS t1
INNER JOIN titles AS t2
ON t1.type = t2.type
WHERE t1.pub_id <> t2.pub_id
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Subconsulta con el mismo resultado que una cláusual HAVING



• Uso de una cláusula HAVING sin una subconsulta
Simulación de una cláusula HAVING
Uso de una subconsulta para correlacionar datos
USE pubs
SELECT t1.type, t1.title, t1.price
FROM titles AS t1
WHERE t1.price > ( SELECT AVG(t2.price) FROM titles AS t2
WHERE t1.type = t2.type )
GO
USE pubs
SELECT t1.type, t1.title, t1.price
FROM titles AS t1
INNER JOIN titles AS t2
ON t1.type = t2.type
GROUP BY t1.type, t1.title, t1.price
HAVING t1.price > AVG(t2.price)
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de consultas correlacionadas
• Determinar si hay datos en la lista de valores
• Proceso de SQL Server
– La consulta externa prueba la existencia de las filas
– La consulta interna devuelve TRUE o FALSE
– No se produce ningún datos
Uso de las cláusulas EXISTS y NO EXISTS
Uso de las cláusulas EXISTS y NO EXITS
USE northwind
SELECT lastname, employeeid
FROM employees AS e
WHERE EXISTS ( SELECT * FROM orders AS o
WHERE e.employeeid = o.employeeid
AND o.orderdate = '5/9/1997' )
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Qué son las vistas
Introducción a las vistas
USE Northwind
GO
CREATE VIEW dbo.EmployeeView
AS
SELECT LastName, Firstname
FROM employees
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Centrar el interés en los datos de los usuarios
– Centrarse sólo en los datos importantes o adecuados
– Limitar el acceso a los datos confidenciales

• Enmascarar la complejidad de la base de datos
– Ocultar el diseño de la base de datos compleja
– Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos
heterogéneos

• Simplificar la administración de los permisos de usuario

• Mejorar el rendimiento

• Organizar los datos para exportarse a otras aplicaciones
Ventajas de las vistas
Introducción a las vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Creación de vistas
• Ejemplo: Vista de tablas combinadas
• Modificación y eliminación de vistas
• Evitar la interrupción de las cadenas de pertenencia
• Ubicación de la información de definición de vistas
• Ocultación de la definición de las vistas
Definición de vistas
Definición de vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Creación de una vista



• Restricciones en las definiciones de vistas
– Debemos tener permiso de SELECT en todas las tablas base
– No se puede incluir la cláusula ORDER BY
– No se puede incluir la clave INTO
Creación de vistas
Definición de vistas
CREATE VIEW dbo.OrderSubtotalsView (OrderID, Subtotal) AS
SELECT OD.OrderID,
SUM(CONVERT (money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)
FROM [Order Details] OD
GROUP BY OD.OrderID
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Ejemplo: Vista de tablas combinadas
Definición de vistas
USE Northwind
GO
CREATE VIEW dbo.ShipStatusView
AS
SELECT OrderID, ShippedDate, ContactName
FROM Customers c INNER JOIN Orders o
ON c.CustomerID = O.CustomerID
WHERE RequiredDate < ShippedDate
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• ALTER VIEW
– Conserva los permisos asignados
– Hace que la instrucción SELECT y las opciones reemplacen la definición existente
– Si utilizamos opciones WITH CHECK OPTION, WITH ENCRYTION, WITH
SCHEMABINDING o WITH VIEW_METADA al crear la vista, es necesario incluirla en
la alteración




Modificación de vistas
Definición de vistas
USE Northwind
GO
ALTER VIEW dbo.EmployeeView
AS
SELECT LastName, FirstName, Extension
FROM employees
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• DROP VIEW
– Al eliminar una vista eliminamos su definición y todos los permisos asociados
– Se consultamos una vista que hace referencia a la vista eliminada obtendremos un
mensaje de error
– Al quitar una tabla que hace referencia a una vista, la vista no se elimina
automáticamente
Eliminación de vistas
Definición de vistas
DROP VIEW dbo.ShipStatusView
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Objetos dependientes con propietarios distintos
• Ejemplo
– Maria Ejecuta:


– Pierre ejecuta:
Evitar la interrupción de las cadenas de pertenencia
Definición de vistas
GRANT select ON view2 TO pierre
SELECT * FROM maria.view2
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Ubicación de las definiciones de vistas
– No disponible si la vista fue creada con la opción WITH ENCRYPTION



• Ubicación de las dependencias de una vista
– Muestra los objetos de los que depende una vista
– Muestra los objetos que dependen de una vista
Ubicación de la información de definición de vistas
Definición de vistas
Vistas de esquema de información o
tablas del sistema
Información que muestra
INFORMATION_SCHEMA.TABLES o sysobjects Nombres de tablas
INFORMATION_SCHEMA.VIEW_TABLE_USAGE o sysdepends Nombres de objetos base
INFORMATION_SCHEMA.VIEWS o syscomments Definición de vistas
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE o syscolumns Columnas definidas en una vista
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de la opción WITH ENCRYPTION
• No eliminar las entradas de la tabla syscomments
Ocultación de la definición de las vistas
Definición de vistas
USE Northwind
GO
CREATE VIEW dbo.[Order Subtotals] WITH ENCRYPTION
AS
SELECT OrderID,
Sum(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)AS Subtotal
FROM [Order Details]
GROUP BY OrderID
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• No pueden afectar a más de una tabla subyacente
• No pueden afectar a ciertas columnas
• Pueden provocar errores si afectan a columnas a las que la vista no
hace referencia
• Se comprueba si se ha especificado WITH CHECK OPTION
Modificación de datos mediante vistas
Modificación de datos mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Consideraciones acerca del rendimiento
• Uso de vistas indizadas
• Uso de vistas para dividir datos
Optimización del rendimiento mediante vistas
Optimización del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Consideraciones acerca del rendimiento
Optimización del rendimiento mediante vistas
USE Northwind
GO
CREATE VIEW dbo.TopSalesView
AS
SELECT *
FROM dbo.TotalPurchaseView
WHERE Subtotal > 50000
SELECT *
FROM dbo.TopSalesView
WHERE CompanyName = 'Ernst Handel'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las vistas indizadas almacenan el conjunto de resultados en la base
de datos
• Creación de una vista indizada
• Recomendaciones para la creación de vistas indizadas
– Utilizar si:
• El rendimiento mejora el costo del incremento en el mantenimiento
• Los datos subyacentes no se actualizan con frecuencia
• Las consultas realizan una gran cantidad de combinaciones y operaciones de agregado
• Restricciones en la creación de vistas indizadas
Uso de vistas indizadas
Optimización del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Podemos utilizar las vistas para dividir los datos en varios servidores
o instancias de SQL Server
• Cómo utiliza SQL Server las vistas para dividir datos
• Cómo las vistas divididas mejoran el rendimiento




Uso de vistas indizadas para dividir datos
Optimización del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Usar una convención de nomenclatura estándar
• Comprobar las dependencias de los objetos antes de quitarlos
• No eliminar nunca las entradas de la tabla de sistema syscomments
• Evaluar cuidadosamente la creación de vistas basadas en otras
vistas



Recomendaciones
Procedimientos recomentados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Definición de procedimientos almacenados

• Procesamiento inicial de los procedimientos almacenados

• Procesamientos posteriores de los procedimientos almacenados

• Ventajas de los procedimientos almacenados
Introducción a los procedimientos almacenados
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Colecciones de instrucciones Transact-SQL con nombre

• Encapsulado de tareas repetitivas

• SQL admiten cinco tipos (del sistema, locales, temporales, remotos y
extendidos)

• Aceptan parámetros de entrada y devuelven valores

• Devuelven valores de estado para indicar que se ha ejecutado
satisfactoriamente o se ha producido algún error
Definición de procedimiento almacenado
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Procedimientos almacenados del sistema
– Almacenados en la base de datos master
– Identificados mediante el prefijo sp_
• Procedimientos almacenados locales
– Se crean en las bases de datos de los usuarios
• Procedimientos almacenados temporales
– Locales, disponibles sólo para la sesión de usuario
– Globales, disponibles para todas las sesiones de todos los usuarios
• Procedimientos almacenados remotos
– Son una característica anterior de SQL Server
• Procedimientos almacenados extendidos
– Se implementan como bibliotecas de vínculos dinámicos
– Se ejecutan fuera del entorno de SQL Server, identificados con el prefijo xp_
Tipos de procedimientos almacenados
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Procesamiento inicial de los procedimientos almacenados
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Procesamientos posteriores de los procedimientos almacenados
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Compartir la lógica de la aplicación

• Evitar la exposición de los detalles de las tablas de la base de datos

• Proporcionar mecanismos de seguridad

• Mejorar el rendimiento

• Reducir el tráfico de red
Ventajas de los procedimientos almacenados
Introducción a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Utilizar la instrucción CREATE PROCEDURE para crearlos en la base
de datos activa
• Podemos anidar hasta 32 niveles
• Usar sp_help para mostrar información
Creación de procedimientos almacenados
Creación de procedimientos almacenados
USE Northwind
GO
CREATE PROC dbo.OverdueOrders AS
SELECT *
FROM dbo.Orders
WHERE RequiredDate < GETDATE() AND ShippedDate IS Null
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Para mostrar una lista de procedimientos almacenados y sus
propietarios
Sp_stored_procedures

• Mostrar información adicional
sp_help
sp_helptext
sp_depends
Ver información de procedimientos almacenados
Creación de procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• El usuario dbo debe ser el propietario de todos los procedimientos
almacenados
• Un procedimiento almacenado por tarea
• Crear, probar y solucionar problemas en el servidor antes de pasar a
cliente
• Evitar sp_Prefix en los nombres de procedimientos almacenados locales
• Utilizar la misma configuración de conexión para todos los
procedimientos almacenados
• Reducir al mínimo la utilización de procedimientos almacenados
temporales
Recomendaciones para la creación de
procedimientos almacenados
Creación de procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Ejecución de un procedimiento almacenado por separado


• Ejecución de un procedimiento almacenado en una instrucción INSERT
– La tabla debe existir
– Los tipos de datos deben coincidir
Ejecución de un procedimiento almacenado
Ejecución de un procedimiento almacenado
EXEC OverdueOrders
INSERT INTO Customers
EXEC EmployeeCustomer
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Modificación de procedimientos almacenados
– No modificar procedimientos almacenados del sistema, copiarlos y modificar copia
– Incluir cualquiera de las opciones en ALTER PROCEDURE
– No afecta a los procedimientos almacenados anidados



Modificación de procedimientos almacenados
Modificación y eliminación de procedimientos almacenados
USE Northwind
GO
ALTER PROC dbo.OverdueOrders
AS
SELECT CONVERT(char(8), RequiredDate, 1) RequiredDate,
CONVERT(char(8), OrderDate, 1) OrderDate,
OrderID, CustomerID, EmployeeID
FROM Orders
WHERE RequiredDate < GETDATE() AND ShippedDate IS Null
ORDER BY RequiredDate
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Eliminación de procedimientos almacenados
– Ejecutar el procedimiento almacenado sp_depends para determinar si los objetos
dependen del procedimiento almacenado
Eliminación de procedimientos almacenados
Modificación y elimanción de procedimientos almacenados
USE Northwind
GO
DROP PROC dbo.OverdueOrders
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Utilización de parámetros de entrada

• Ejecución de procedimientos almacenados con parámetros de entrada

• Devolución de valores mediante parámetros de salida

• Volver a compilar explícitamente procedimientos almacenados
Utilización de parámetros en los
procedimientos almacenados
Utilización de parámetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Validar primero todos los valores de los parámetros de entrada
• Proporcionar los valores predeterminados apropiados e incluir las
comprobaciones de Null
Utilización de parámetros de entrada
Utilización de parámetros en los procedimientos almacenados
CREATE PROCEDURE dbo.[Year to Year Sales]
@BeginningDate DateTime,
@EndingDate DateTime
AS
IF @BeginningDate IS NULL OR @EndingDate IS NULL
BEGIN
RAISERROR('NULL values are not allowed', 14, 1)
RETURN
END
SELECT O.ShippedDate, O.OrderID, OS.Subtotal,
DATENAME(yy,ShippedDate) AS Year
FROM ORDERS O INNER JOIN [Order Subtotals] OS ON O.OrderID = OS.OrderID
WHERE O.ShippedDate BETWEEN @BeginningDate AND @EndingDate
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Paso de valores por el nombre del parámetro






• Paso de valores por posición
Ejecución de procedimientos almacenados
con parámetros de entrada
Utilización de parámetros en los procedimientos almacenados
EXEC AddCustomer
@CustomerID = 'ALFKI',
@ContactName = 'Maria Anders',
@CompanyName = 'Alfreds Futterkiste',
@ContactTitle = 'Sales Representative',
@Address = 'Obere Str. 57',
@City = 'Berlin',
@PostalCode = '12209',
@Country = 'Germany',
@Phone = '030-0074321'
EXEC AddCustomer 'ALFKI2', 'Alfreds, utterkiste', 'Maria Anders', 'Sales
Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-
0074321'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Devolución de valores mediante parámetros de salida
Utilización de parámetros en los procedimientos almacenados
• Para usar parámetro de salida debemos especificar la clave OUTPUT

• En la llamada al SP debemos tener una variable para recibir el valor
devuelto

• La variable se puede usar posteriormente en instrucciones adicionales
del proceso por lotes
DECLARE @answer smallint
EXECUTE MathTutor 5,6, @answer OUTPUT
SELECT 'The result is: ', @answer
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Devolución de valores mediante parámetros de salida
Utilización de parámetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• El procedimiento almacenado devuelve conjuntos de resultados que
varían considerablemente

• Se agrega un nuevo índice a una tabla subyacente

• El valor del parámetro es atípico
Volver a compilar explícitamente procedimientos
almacenados
Utilización de parámetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• CREATE PROCEDURE [WITH RECOMPILE]
– No almacena en la caché un plan para el SP, se compila cada vez que se ejecute

• EXECUTE [WITH RECOMPILE]
– Se recompila para esta ejecución
– Lo utilizaremos si el parámetro que estamos pasando varía mucho de los que
normalmente se pasan a este SP

• SP_RECOMPILE
– Se compila en la próxima ejecución
– Lo usaremos cuando se añada un índice a una tabla subyacente
Volver a compilar explícitamente procedimientos
almacenados
Utilización de parámetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se programan con la API Servicios abiertos de datos
• Pueden incluir características de C y C++
• Pueden contener múltiples funciones
• Se pueden llamar desde un cliente o desde SQL Server
• Se pueden agregar sólo a la base de datos Master
Ejecución de procedimientos almacenados extendidos
Ejecución de procedimientos almacenados extendidos
EXEC master..xp_cmdshell 'dir c:\'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• La instrucción RETURN sale incondicionalmente de una consulta o
procedimiento

• sp_addmessage crea mensajes de error personalizados

• @@error contiene el número de error de la instrucción ejecutada más
recientemente

• Instrucción RAISERROR
– Devuelve un mensaje de error del sistema definido por el usuario
– Establece un indicador del sistema para registrar un error

Control de mensajes de error
Control de mensajes de error
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Monitor de sistema de Windows 2003/2008
– Objeto: SQL Server: Administrador de caché
– Objeto: Estadísticas de SQL

• Analizador de SQL
– Puede supervisar eventos
– Puede probar cada instrucción en un procedimiento almacenado






Consideraciones acerca del rendimiento
Rendimiento
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Las BD necesitan mantenimiento

• Mantener un rendimiento estable del sistema

• Las tareas se realizan en horario no laboral
¿Por qué son necesarias?
Introducción automatización de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Reducción de la carga administrativa

• Reducción del riesgo de que se omitan tareas de mantenimiento
fundamentales

• Reducción del riesgo de error humano

• Administración proactiva
Ventajas de la automatización
Introducción automatización de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Realización regular de tareas programadas
– Hacer copia de seguridad de bases de datos
– Importar y exportar datos

• Reconocimiento de los posibles problemas y su solución
– Supervisar espacio de la base de datos y del registro
– Supervisar el rendimiento
Tipos de tareas
Introducción automatización de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Componente de SQL Server responsable de la automatización

• Se ejecuta como un servicio de Windows
– SQLSERVERAGENT para la instancia predeterminada
– SQLAGENT$nombre_instancia, para instancias con nombre

• Debe esta en funcionamiento para ejecutar trabajos, activar alertas y
ponerse en contacto con operadores
– Hacer copia de seguridad de bases de datos
– Importar y exportar datos
¿Qué es el Agente SQL Server?
Configuración de SQL Agent
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Modo de inicio del servicio SQLAgent
– El servicio SQLAgent no esta configurado para iniciarse automáticamente de manera
predeterminada.

• Cuenta del servicio SQLAgent
– Cuenta integrada del sistema
• Sistema local, servicio local o servicio de red
– Autentificación Windows con usuario local o del dominio
• Requiere el derecho de usuario iniciar sesión como un servicio

• Dependencia del servicio SQLAgent
– Servicio SQL Server
– Servicio Messenger para notificaciones de envío de red
Configurar Agente SQL Server
Configuración de SQL Agent
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Series específicas de operaciones que el Agente SQL Server realiza
secuencialmente

• Puede incluir pasos de secuencias de comandos Transact-SQL,
aplicaciones de línea de comandos y de ActiveX

• Permite su programación para ejecutarse una vez, repeteridamente o
para iniciarse manualmente
¿Qué es un trabajo?
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Asegurarse de que el trabajo está habilitado

• Especificar el propietario responsable de realizar el trabajo

• Determinar dónde se ejecutará el trabajo

• Creación de una categoría de trabajos

• SQL Server Management Studio nos proporciona un asistente para la
creación de trabajos
Creación de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Ejecución de trabajos de Transact-SQL
– Ejecutar en el contexto del propietario del trabajo o del usuario específico

• Ejecución de comandos del sistema operativo o de trabajos de
secuencias de comandos ActiveX
– Los miembros de la función sysadmin usan la cuenta de inicio de sesión de SQL
Server Agent
– Los propietarios de trabajos que no sean miembros de la función sysadmin usan una
cuenta de usuario de dominio definida denominada cuenta proxy
Comprobación de permisos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Uso de instrucciones Transact-SQL
– Identificar la base de datos que se va a utilizar
– Obtener resultados en un fichero de salida

• Uso de comandos del sistema operativo
– Identificar el código de salida del proceso que indica que el comando se ejecutó
correctamente
– Incluir la ruta completa de la aplicación ejecutable

• Uso de secuencias de comandos de ActiveX
– Lenguajes como Microsoft Visual Basic o Microsoft Jscript.
– Instalar bibliotecas para otros lenguajes
Definición de pasos de trabajo
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Lógica de flujo de acciones para cada paso de trabajo
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Al iniciarse SQL Server Agent.
• A una hora específica
– Una sola una vez
• De forma periódica
– diaria, semanal o mensualmente.
• Cuando la CPU esté inactiva
– El usuario de SQLAgent debe ser
administrador local del servidor
Programación de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Revisión del historial de un trabajo individual
– Resultado del paso de trabajo: correcto o erróneo
– Duración de ejecución
– Errores y mensajes

• Configuración del tamaño del historial de trabajos
– Conservar información acerca de cada trabajo
– Sobrescribir historial cuando se alcance el tamaño máximo
Revisión y configuración del historial de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Persona o grupo de personas que pueden recibir notificaciones
– Las notificaciones pueden ser de un trabajo, de un paso de trabajo o de una alerta
• Se puede notificar mediante correo electrónico, localizador o mensajes
de envío de red
• Se puede especificar un operador a pruebas de errores
¿Qué es un operador?
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Utilizar alias de grupos de correo
para notificar a varias personas

• Probar cada método de
notificación

• Especificar una programación de
notificación para cada operador

Creación de operadores
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Se le envía notificación cuando las alertas enviadas a los operadores definidos
fallen si:
– Ningún operador a los que se debe enviar el mensaje por localizador está de servicio
– Hay definido un operador a prueba de fallos

Asignación de un operador a prueba de errores
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Respuesta predefinida a un evento

• Activada mediante trabajos, condiciones de rendimiento o eventos en el
registro de la aplicación

• Puede notificar a un operador o iniciar un trabajo especificado
¿Qué es una alerta?
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Situación de ejemplo
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Errores de SQL Server con nivel de gravedad comprendido entre 19 y 25

• Procedimientos almacenados del sistema sp_addmessage o
sp_altermessage

• Instrucción RAISERROR WITH LOG

• Procedimiento almacenado extendido xp_logevent

Escritura de sucesos en el registro de aplicación
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Definición de alertas para números de error de SQL Server
– Deben escribirse en el registro de aplicación de Windows
– Suministrado por el sistema o definido por el usuario

• Definición de alertas para niveles de gravedad de errores
– Los niveles de seguridad entre 19 y 25 se escriben automáticamente
– Configuración del reenvío de sucesos
Creación de alertas para responder a errores SQL Server
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Creación del mensaje de error
– El número de error debe ser mayor que 50000
– Pueden utilizarse parámetros

• Generación del error desde la aplicación de base de datos
– Use la instrucción RAISERROR
– Declare variables para los parámetros

• Definición de una alerta para el mensaje de error
– Escribir el mensaje en el registro de aplicación de Windows

Creación de alertas para un error definido por el usuario
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Respuesta a las alertas de condiciones de rendimiento
Alertas

Objetos sobre los que crear alertas

• Métodos de acceso
• Administrador de búfer
• Administrador de caché
• Bases de datos
• Bloqueos
• Estadísticas de SQL
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
Prácticas recomendadas
Prácticas Recomendadas

• Usar cuenta de dominio que sea miembro del grupo local de
administradores
• Enviar alertar a grupos de mail, mejor que a personas concretas
• Definir un operador al que se notifique cuando se produzca un error falta
• Crear un operador a prueba de errores
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• ¿Qué son las entidades de seguridad?

• ¿Qué son los protegibles?

• Permisos de SQL Server 2008

Descripción general de la seguridad en SQL Server
Descripción general de la seguridad de SQL Server
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Identidades autenticadas en un sistema SQL Server.
– Se les puede conceder permisos para tener acceso a un objeto de la base de datos

• Existen tres niveles

¿Qué son las entidades de seguridad?
Descripción general de la seguridad de SQL Server
Nivel Entidad de seguridad
Windows
Cuenta de usuario local de Windows
Cuenta de usuario de domino Windows
Grupo de Windows
SQL Server
Inicio de sesión de SQL Server
Función de SQL Server
Base de datos
Usuario de la base de datos
Función de la base de datos
Función de aplicación
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Objetos cuyo acceso está regulado por el sistema de autorización de
SQL Server
• Podemos diferenciar tres ámbitos
¿Qué son los protegibles?
Descripción general de la seguridad de SQL Server
Ámbito Protegible
De servidor
Inicios de sesión
Bases de datos
De base de datos
Usuarios
Funciones de aplicación
Certificados
Eventos DDL
Esquema

De esquema
Tablas
Vistas
Funciones
Procedimientos

Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Controlar el acceso a los protegibles por parte de las entidades de
seguridad.

• Podemos otorgar, revocar o denegar permisos.

• Permisos heredados
– Se otorgan a un nivel superior automáticamente se propaga

• Permisos efectivos

Permisos de SQL Server
Descripción general de la seguridad de SQL Server
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• ¿Qué son los modos de autenticación de SQL Server?
• Cómo funcionan las directivas de contraseñas
• Cómo administrar inicios de sesión de SQL Server
• ¿Qué son las funciones fijas de servidor?
• Requisitos para la delegación
• ¿Qué son las credenciales?
• Permisos de ámbito de servidor

Proteger el ámbito de servidor
Proteger el ámbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Modo de autenticación Windows
– Se vincula un usuario del sistema operativo a un inicio de sesión de SQL Server
– Permite agregar a grupos de usuarios con una única cuenta de inicio de sesión
– La autenticación Windows requiere menos sobre carga administrativa
• Modo de autenticación Windows y SQL Server
– Usuarios del sistema operativo vinculados a inicios de sesión
– Usuario locales de SQL Server con su propio nombre de usuario y contraseña
– Se hace el sistema más vulnerable ya que aumenta la superficie del sistema de SQL Server

¿Qué son los modos de autenticación de SQL Server?
Proteger el ámbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Se definen en Directivas de grupo en Windows 2003/2008
• Garantizan la seguridad y complejidad de contraseñas en el sistema
• Diseñada para evitar ataque de fuerza bruta
• Podemos definir la complejidad de las contraseñas y su caducidad

Cómo funcionan las directivas de contraseñas
Proteger el ámbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Usando el Explorador de objetos de SQL Management Studio

• Instrucción CREATE LOGIN
– Para inicio de sesión de Windows
– Para inicio de sesión de SQL
Cómo administrar inicios de sesión de SQL Server I
Proteger el ámbito de servidor
CREATE LOGIN [SERVERX\SalesDBUsers]
FROM WINDOWS
WITH DEFAULT_DATABASE = Northwind
CREATE LOGIN Alicia
WITH PASSWORD = 'Pa$$w0rd'
DEFAULT_DATABASE = Northwind
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Modificar inicios de sesión
– Instrucción ALTER LOGIN




• Eliminar inicios de sesión
– Instrucción DROP LOGIN

Cómo administrar inicios de sesión de SQL Server II
Proteger el ámbito de servidor
ALTER LOGIN ALICIA WITH PASSWORD = ' NewPa$$w0rd' UNLOCK
DROP LOGIN ALICIA
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• SQL proporciona funciones de servidor predefinidas para funciones
administrativas comunes
• Son una agrupación de privilegios administrativos a nivel de servidor que
serán necesarios para realizar distintas tareas
¿Qué son las funciones fijas de servidor?
Proteger el ámbito de servidor
Función Descripción
sysadmin Realizar cualquier actividad
dbcreator Crear o modificar bases de datos
diskadmin Administrar archivos de disco
serveradmin Configurar opciones para todos los servidores
securityadmin Administrar y auditar inicios de sesión del servidor
processadmin Administrar procesos de SQL Server
bulkadmin Ejecutar instrucciones BULK INSERT
setupadmin Configurar servidores de réplica y servidores vinculados
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Además de las funciones anteriores cada instancia tiene una función fija
de servidor denominada Pública

• Todos los inicios de sesión pertenecen por defecto a la función Pública
– Tiene el permiso VIEW ANY DATABASE

• Con el procedimiento almacenado sp_addsrvrolemember podemos
añadir una cuenta de inicio de sesión como miembro de una función fija
de servidor

• Las funciones fijas de servidor
– No se pueden modifica, eliminar o agregar nuevas funciones
– Cualquier miembro de una función fija de servidor puede agregar otras cuentas de inicio de sesión a la
función

Funciones fijas de servidor
Proteger el ámbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Conexión de usuarios a distintas instancias de SQL con el mismo contexto
de usuario de Windows autenticado
• Es necesario tener habilitado el soporte de Kerberos en Active Directory
• Configurar AD para la delegación
– La cuenta es confidencial y no se puede delegar. No debemos seleccionar esta opción para
el usuario que solicita la delegación.
– La cuenta es de confianza para la delegación. Debemos selección esta opción para la
cuenta de servicio de SQL Server.
– El equipo es de confianza para la delegación. Debemos seleccionar esta opción para el
equipo que ejecuta SQL Server.
• Configurar SQL Server para la delegación

Delegación
Proteger el ámbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Alternativa a un inicio de sesión que contiene la información de
autenticación necesaria para conectarse a un recurso fuera de SQL
Server.
• Se puede crear desde SQL Server Management Studio o con la
instrucción CREATE CREDENTIAL

¿Qué son las credenciales?
Proteger el ámbito de servidor
CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'SQLSRV\Elena',
SECRET = 'Pa$$w0rd'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Permisos en el nivel del servidor


Permiso de ámbito de servidor I
Proteger el ámbito de servidor
Protegible Permiso Descripción
Servidor CONNECT_SQL Conectar al servidor.
CREATE LOGIN Crear un inicio de sesión.
ALTER ANY LOGIN Modificar cualquier inicio de sesión en el
ámbito de servidor.
CONTROLSERVER Control administrativo de todo el sistema.

Login ALTER Modifica el inicio de sesión.
IMPERSONATE Suplantar el inicio de sesión.

Base de datos CREATE TABLE Crear una tabla en la base de datos.
ALTER ANY USER Modificar cualquier usuario de la base de
datos.
CONTROL Control completo de la base de datos.
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Otorgar mediante la instrucción GRANT

• La sintaxis de GRANT varía dependiendo del tipo de protegibles que
estemos modificando


Permiso de ámbito de servidor II
Proteger el ámbito de servidor
USE master
GRANT ALTER ANY DATABASE
TO [ NORTHWIND\Elena]

GRANT ALTER
ON LOGIN :: AWWebApp
TO [ NORTHWIND\Elena]
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis

• Cómo administrar usuarios
• Usuarios especiales
• ¿Qué son las funciones de base de datos?
• ¿Qué son las funciones de aplicación?
• Permisos de ámbito de base de datos
• Permisos de ámbito de esquema
Proteger el ámbito de base de datos
Proteger el ámbito de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Los usuarios son creados en cada base de datos
• Es necesario vincularlos a un inicio de sesión
• Se puede realizar por SQL Server Management Studio o con la
instrucción CREATE USER
Cómo administrar usuarios
Proteger el ámbito de base de datos
-- Crear un usuario para un inicio de sesión con el mismo nombre
CREATE USER Bernardo

--Crear un usuario con un nombre diferente a partir del inicio de sesión asignado
CREATE USER Juan FOR LOGIN [NORTHWIND\Juan]

--Crear un usuario con un esquema predeterminado explícitamente definido
CREATE USER SalesUser FOR LOGIN [DBSERVER1\SalesUSers]
WITH DEFAULT_SCHEMA = 'Sales'
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Usuario dbo
– Cuenta predeterminada en todas las bases de datos
– Cuenta sa y miembros de la función sysadmin asignados a dbo
– Todo objeto que se crea por un administrador pertenece a dbo
– No se puede eliminar

• Usuario invitado (guest)
– Está predeterminado en todas las bases de datos
– Deshabilitado de forma predeterminada
– Permite inicios de sesión sin cuenta de usuario para obtener acceso a la base de
datos
Usuarios especiales
Proteger el ámbito de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Funciones fijas de base de datos
– Permisos concedidos para tareas de base de datos comunes

• Funciones de base de datos definidas por el usuario
– Agrupa a los usuarios con requisitos de permisos similares
– Se crea con la instrucción CREATE ROLE
– Asignamos usuarios con el procedimiento almacenado sp_addrolemember

• Función pública
– Contiene todos los usuarios en la base de datos
– No se puede eliminar
Funciones de base de datos
Proteger el ámbito de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Permiten cumplir con la seguridad para una aplicación determinada

• El contexto de seguridad alternativo para un usuario sólo existe
mientras la aplicación esta activa

• Podemos crearla mediante SQL Server Management Studio o la
instrucción CREATE APPLICATION ROLE

• No tienen miembros se activan cuando los usuarios ejecutan una
aplicación
Funciones de aplicación I
Proteger el ámbito de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Podemos crearla mediante SQL Server Management Studio o la
instrucción CREATE APPLICATION ROLE




• Para activar la función usaremos el procedimiento almacenado
sp_setapprole
Funciones de aplicación II
Proteger el ámbito de base de datos
CREATE APPLICATION ROLE weekly_receipts
WITH PASSWORD = '987Gbv876sPYY5m23'
GO
EXEC sp_setapprole 'weekly_receipts', '987Gbv876sPYY5m23'
GO
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Permisos para que una entidad de seguridad puede ejecutar tareas
dentro de la base de datos



• Se aplican a protegibles en el ámbito de la base de datos
– Usuarios
– Esquemas
– Funciones

Permisos de ámbito de base de datos
Proteger el ámbito de base de datos
USE Northwind
GRANT ALTER ANY USER
TO HRManager
USE Northwind
GRANT SELECT
ON SCHEMA :: sales
TO SalesUser
Curso FPO de Programador de Aplicaciones.
Metodologías de Análisis
• Incluyen objetos como tablas, vistas, procedimientos almacenados y
tipos
• Distinta sintaxis para para tipos definidos por el usuario que para
otros protegibles del ámbito del esquema




Permisos de ámbito de esquema
Proteger el ámbito de base de datos
USE Northwind
GRANT SELECT
ON sales.orders
TO SalesUser
USE Northwind
GRANT EXECUTE
ON TYPE :: Person.addressType
TO SalesUser

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close