Anda di halaman 1dari 217

CURSO DE PROGAMADOR DE

APLICACIONES INFORMTICAS

Metodologas de Anlisis
(Administracin y
Programacin en SQL Server)


Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis


Creacin de bases de datos


Creacin de grupos de archivos


Administracin de Bases de Datos

INTRODUCIN
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin de bases de datos
Consideraciones para la creacin de una base de datos

Creacin de una base de datos

Registro de transacciones

Opciones de base de datos

Orgenes de informacin de las bases de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Consideraciones para la creacin de una base de datos
Propsito del almacenamiento de datos
Rendimiento de transacciones
Crecimiento potencial del almacenamiento fsico
de datos
Ubicacin de los archivos
OLAP
OLTP
SQL Server Cliente
Consulta
Resultados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin 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.
Metodologas de Anlisis
CREATE DATABASE baseDeDatos
[ON
{[PRIMARY] (NAME = archivoLgico,FILENAME = 'archivoSO'
[,SIZE = tamao] [, MAXSIZE = {tamaoMxUNLIMITED}]
[,FILEGROWTH = incrementoCrecimiento] )
} [,...n]
]
[LOG ON
{( NAME = archivoLgico, FILENAME = 'archivoSO'
[, SIZE = tamao][, MAXSIZE = {tamaoMxUNLIMITED}]
[, FILEGROWTH = incrementoCrecimiento] )
} [,...n]
]
[COLLATE nombreIntercalacin]
Creacin de una base de datos
PRIMARY: archivos de datos principal
FILENAME: Nombre de ficheros del SO
SIZE: Tamao del fichero de datos o registro
MAX SIZE: Tamao mximo del fichero
FILEGROWTH: incremento del crecimiento del fichero
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Registro de transacciones
Transaccin: nica unidad de trabajo para una base de datos

Atomicidad. Una transaccin es unidad atmica: se completan todas
las operaciones definidas en la transaccin o no se completa ninguna
de ellas.
Coherencia. Una transaccin siempre deja los datos en un estado
coherente.
Aislamiento. Una transaccin se realiza aislada de otras actividades de
bases de datos, otras actividades de la base de datos no tienen ningn
efecto sobre la transaccin.
Durabilidad. Cuando una transaccin se confirma, los resultados se
almacenan en un almacenamiento persistente y sobreviven a un posible
error del sistema.
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Registro de transacciones

Las pginas de datos se
encuentran en, o se leen en,
la cach de bfer y se modifican
2
La modificacin se
graba en el registro de
transacciones en disco
3
El punto de comprobacin escribe
las transacciones confirmadas
en la base de datos
4
La modificacin de datos
la enva la aplicacin
1
Sugerencia: poner el registro en una unidad diferente para mejorar el rendimiento
Disco
Disco
Bfer
Cach
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Opciones de base de datos
Las opciones de base de datos se pueden realizar utilizando:
SQL Server Management Studio
Instruccin ALTER DATABASE
Categora de opcin Propsito
Automtica
Controla los comportamientos automticos como estadsticas, cierre de
base de datos y reduccin
Disponibilidad
Controla si la base de datos tiene o no conexin, quin puede conectar
con ella y si la base de datos es de slo lectura
Cursor Controla el comportamiento y el mbito del cursor
Recuperacin Controla el modelo de recuperacin 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.
Metodologas de Anlisis
Orgenes de informacin de las bases de datos
Origen de informacin Descripcin
SQL Server
Management Studio
Herramienta visual que muestra los
metadatos de la base de datos dentro
del entorno de administracin
Vistas de catlogo
Proporcionan metadatos acerca de
objetos de base de datos que devuelven
filas de informacin
Funciones de metadatos
Devuelven un valor nico de informacin
de metadatos por funcin
Procedimientos almacenados
del sistema
Recuperan metadatos utilizando
procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin 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 especficos en un archivo
especfico.

Cundo crear grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Qu son los grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de varios archivos en un nico grupo de archivos para mejorar el
rendimiento





Uso de varios grupos de archivos para controlar la colocacin fsica de los
datos
Cundo crear grupos de archivos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Administracin 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.
Metodologas de Anlisis
Administracin de bases de datos
Crecimiento de los archivos de datos

Crece la actividad de modificacin de datos

Modificacin con SQL Server Management Studio o Transact-SQL
con el comando ALTER DATABASE.

Cmo controlar el tamao de nuestra base de datos
Configurando de los archivos de base de datos y de registro para que crezcan
automticamente.
Aumentando o disminuyendo manualmente el tamao actual o el tamao
mximo 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.
Metodologas de Anlisis
Administracin de bases de datos
Comando ALTER DATABASE








ALTER DATABASE baseDeDatos
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP nombreGrupoDeArchivos ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE nombreArchivoLgico [ 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 < nombreIntercalacin >
}
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.
Metodologas de Anlisis
Administracin de bases de datos
Crecimiento del registro de transacciones

Crece la actividad de modificacin 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 informacin 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.
Metodologas de Anlisis
Administracin de bases de datos
Reduccin de una base de datos

Existe demasiado espacio asignado o disminuyen los requisitos de
espacio.
Reduccin con SQL Server Management Studio o Transact-SQL con el
comando DBCC SHRINKDATABASE.
SQL Server no reduce un archivo a un tamao 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.
Metodologas de Anlisis
Administracin de bases de datos
Reduccin de un archivo de datos

Reduccin con SQL Server Management Studio o Transact-SQL con el
comando DBCC SHRINKFILE.

Sintaxis



Ejemplo

DBCC SHRINKFILE (archivo | IDarchivo) [, tamaoDestino] [,
{NOTRUNCATE |TRUNCATEONLY|EMPTYFILE}])
DBCC SHRINKDAFILE (Sample, 10)
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Administracin de bases de datos
Eliminacin de una base de datos

Eliminacin 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.
Metodologas de Anlisis
Administracin de bases de datos
Eliminacin de una base de datos

Consideraciones antes de la eliminacin.
Con SQL Server Management Studio, slo podemos eliminar una base de datos a la vez.
Con Transact-SQL, podemos eliminar varias bases de datos a la vez.
Despus de eliminar una base de datos, todos los Id. de inicio de sesin que utilizaban esa
base de datos como base de datos predeterminada ya no tendrn una base de datos
predeterminada.
Restricciones en la eliminacin.
Una base de datos que est en proceso de restauracin.
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 duplicacin
de SQL Server.
Una base de datos de sistema
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin de esquemas
Qu son los esquemas

Cmo funciona la resolucin de nombres de objetos

Ejercicio: Creacin de un esquema
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Qu son los esquemas
Espacios de nombres para los objetos de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Sales
Contact
Person
Cmo funciona la resolucin 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.
Metodologas de Anlisis
Creacin de instantneas de base de datos
Qu son las instantneas de base de datos

Cmo funcionan las instantneas de base de datos

Ejercicio: Creacin de instantneas de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Qu son las instantneas de base de datos
Vista coherente de slo lectura de una base de datos en un punto
especificado del tiempo
til como base de datos de pruebas o de desarrollo, o para elaboracin
de informes
Debe existir en el mismo servidor que la base de datos de origen
Instantnea de las 12:00
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Cmo funcionan las instantneas de base de datos
BD de origen BD instantnea
Copiar al escribir
SELECT
SELECT UPDATE
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Implementa el estndar ISO del nivel bsico de la especificacin
ANSI SQL-92

Se pueden ejecutar desde cualquier producto que cumpla los
requisitos bsicos

Incluye una funcionalidad ampliada
Transact-SQL
El lenguaje de programacin Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Instrucciones del Lenguaje de definicin 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.
Metodologas de Anlisis

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

Instrucciones del Lenguaje de Definicin 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.
Metodologas de Anlisis

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.
Metodologas de Anlisis
Las instrucciones DML se utilizan para cambiar datos o recuperar
informacin
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.
Metodologas de Anlisis
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.
Metodologas de Anlisis

GO
Enva lotes de instrucciones de Transact-SQL a las herramientas y
utilidades
No se trata, realmente, de una instruccin de Transact-SQL

EXEC
Ejecuta una funcin definida por el usuario, un procedimiento de
sistema, un procedimiento almacenado definido por el usuario o un
procedimiento almacenado extendido
Controla la ejecucin 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.
Metodologas de Anlisis

Comentarios de lnea



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 cdigo 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.
Metodologas de Anlisis

Identificadores estndar
El primer carcter debe ser un carcter alfabtico
Otros caracteres pueden incluir letras, nmeros o smbolos
Los identificadores que comienzan con un smbolo 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.
Metodologas de Anlisis

Poner nombres cortos
Utilizar nombres significativos cuando sea posible
Utilizar una convencin de denominacin 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
Denominacin para Identificadores
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Tipos de Datos
Elementos de la sintaxis Transact-SQL
Nmeros
- 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.
Metodologas de Anlisis

Variable definida por el usuario en una instruccin DECALRE @
Valores asignados con una instruccin 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 maysculas ni minsculas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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.
Metodologas de Anlisis

Tipos de operadores
Aritmtico
Comparacin
Concatenacin de cadenas
Lgico

Niveles de precedencia de los operadores
Agrupacin principal
Multiplicativo
Aditivo
Concatenacin de cadenas
Lgicos
Operadores
Elementos de la sintaxis Transact-SQL
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Combinacin de smbolos y operadores

Evaluacin de valores escalares simples

El tipo de datos del resultado depende de los elementos que
forman la expresin
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.
Metodologas de Anlisis
IF ELSE
Nivel de instruccin
Bloques BEGIN END
Bloques IF ELSE
Construcciones WHILE
Nivel de fila

CASE expresin
Control de flujo
Elementos de la sintaxis Transact-SQL
DECLARE @Web varchar(100),
@diminutivo varchar(3)
SET @diminutivo = 'BD'
IF @diminutivo = 'BD'
BEGIN
PRINT 'Formacin bases de
datos'
END
ELSE
BEGIN
PRINT 'Otra formacin'
END
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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 'Fomacin Bases de datos'
WHEN 'ANA' THEN 'Formacin Anlisis de datos'
ELSE 'No es una formacin'
END)
PRINT @Web
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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.
Metodologas de Anlisis
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.
Metodologas de Anlisis


Especifica un conjunto de valores de datos que son vlidos 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, tambin, mediante la restriccin 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.
Metodologas de Anlisis
Integridad de dominio
(columnas)
Tipos de Integridad I
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis


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.
Metodologas de Anlisis
Integridad de dominio
(columnas)
Integridad de entidad (filas)
Tipos de Integridad II
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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 accin 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.
Metodologas de Anlisis
Integridad de dominio
(columnas)
Integridad de entidad (filas)
Integridad referencial
(entre tablas)
Tipos de Integridad III
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Integridad de datos declarativa
Los criterios se definen en la definicin del objeto
Asegurada automticamente 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.
Metodologas de Anlisis
Restricciones de datos
Restricciones de datos
Tipo de Integridad Tipo de Restriccin 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.
Metodologas de Anlisis

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 restriccin de columna
Varias columnas, se llama restriccin de tabla
Creacin de restricciones
Restricciones de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Podemos modificarlas sin volver a crear la tabla

Requieren comprobacin de errores en aplicaciones y
transacciones

SQL Server comprueba los datos existentes cuando se agrega
una restriccin
Consideraciones para el uso de restricciones
Restricciones de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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.
Metodologas de Anlisis
Slo una restriccin PRIMARY KEY por tabla
Los valores deben ser exclusivos
No se permiten valores nulos
Crea un ndice exclusivo en las columnas especificadas
Restriccin PRIMARY KEY
Tipos de Restricciones
USE northwind
ALTER TABLE dbo.Customers
ADD CONSTRAINT PK_Customers PRIMARY KEY (CustomerID)
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Slo se aplica a las instrucciones INSERT
Slo una restriccin 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
Restriccin DEFAULT
Tipos de Restricciones
USE Northwind
ALTER TABLE dbo.Customers
ADD
CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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
Restriccin 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.
Metodologas de Anlisis
Permite un valor nulo
Permite varias restricciones UNIQUE en una tabla
Definidas con una o ms columnas
Exigida con un ndice nico
Restriccin UNIQUE
Tipos de Restricciones
USE northwind
ALTER TABLE dbo.Suppliers
ADD
CONSTRAINT U_CompanyName
UNIQUE NONCLUSTERED (CompanyName)
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Deben hacer referencia a una restriccin PRIMARY KEY o UNIQUE
Proporcionan integridad referencial de una o de varias columnas
No crean ndices automticamente
Los usuarios deben tener permisos SELECT o REFERENCES en las
tablas a las que se hace referencia
Usa slo la clusula REFERENCES en la tabla de ejemplo
Restriccin 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.
Metodologas de Anlisis
Controlada por la clusula CASCADE de la restriccin FOREIGN KEY
Integridad referencial en cascada
Tipos de Restricciones
Opcin de cascada
Comportamiento de
UPDATE
Comportamiento de
DELETE
NO ACTION
(valor predeterminado)
Produce error, deshace operacin
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.
Metodologas de Anlisis
Deshabilitacin de la comprobacin de las restricciones en los datos
existentes

Deshabilitacin de la comprobacin de las restricciones al cargar datos
nuevos

Deshabilitacin de restricciones
Deshabilitacin de Restricciones
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Se aplica a las restricciones CHECK y FOREIGN KEY
Utilizar la opcin WITH NOCHECK cuando agregue una restriccin nueva
Utilizar si los datos existentes no cambian
Se pueden cambiar los datos existentes antes de agregar restricciones

Deshabilitacin de restricciones en datos existentes
Deshabilitacin 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.
Metodologas de Anlisis
Se aplica a las restricciones CHECK y FOREIGN KEY

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

Deshabilitacin de restricciones carga de datos nuevos
Deshabilitacin de Restricciones
USE northwind
ALTER TABLE dbo.Employees
NOCHECK
CONSTRAINT FK_Employees_Employees
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Como objetos independientes
Se definen una vez
Puede vincularse a una o ms 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.
Metodologas de Anlisis
Decisin del mtodo de implementacin a utilizar
Decisin del mtodo a implementar
Componente de
integridad de
datos
Funcionalidad
Costos de
rendimiento
Antes o despus
de la transaccin
Restricciones Media Baja Antes
Valores
Predeterminados y
reglas
Baja Baja Antes
Desencadenadores Alta Medio-Alto Despus
Tipos de datos,
NULL / NOT NULL
Baja Baja Antes
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis


Iniciar transacciones
Explcitas
De confirmacin automtica
Implcitas
Finalizar transacciones
Instruccin COMMIT
Instruccin 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.
Metodologas de Anlisis
Insercin de una fila de datos mediante valores

Uso de la instruccin INSERTSELECT

Creacin de una tabla mediante la instruccin SELECT INTO

Insercin de datos parciales

Insercin de datos mediante valores de columna predeterminados
Tipos de inserciones
Insercin de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Debe atenerse a las restricciones de destino o la transaccin INSERT
fallar.
Usar una lista de columnas para especificar las columnas de destino.
Especificar una lista de valores correspondientes.
Insercin de una fila de datos mediante valores
Insercin 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.
Metodologas de Anlisis
Todas las filas que cumplan la instruccin 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 instruccin INSERTSELECT
Insercin 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.
Metodologas de Anlisis
Para crear una tabla e insertar filas en ella en una sola operacin.
Se puede crear una tabla temporal local o global.
En la lista de seleccin, debemos crear alias de columnas o especificar los
nombres de las columnas de la nueva tabla.
Uso de la instruccin SELECT INTO
Insercin 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.
Metodologas de Anlisis
Es posible insertar una fila sin especificar todos sus datos.
Si una fila admite valores NULL o tiene definidos valores predeterminados
Insercin de datos parciales
Insercin 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.
Metodologas de Anlisis
Palabra clave DEFAULT
Inserta valores predeterminados para columnas especficas.
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.
Insercin de datos mediante
valores de columna predeterminados
Insercin de datos
USE northwind
INSERT shippers (companyname, phone)
VALUES ('Kenya Coffee Co.', DEFAULT)
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de la instruccin DELETE

Uso de la instruccin TRUNCATE TABLE

Eliminacin de filas basada en otras tablas
Tipos de eliminacin
Eliminacin de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
La instruccin DELETE quita una o ms filas en una tabla a menos que
utilice una clusula WHERE

Cada fila eliminada se almacena en el registro de transacciones
Uso de la instruccin DELETE
Eliminacin de datos
USE northwind
delete [Order Details]
where OrderID=10248
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
La instruccin TRUNCATE TABLE quita todos los datos de una tabla.

No registra las filas eliminadas.

Uso de la instruccin TRUNCATE TABLE
Eliminacin de datos
USE northwind
TRUNCATE TABLE [order Details]
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de una clusula FROM adicional
La primera clusula FROM indica la tabla que se va a modificar
La segunda clusula FROM especifica los criterios de restriccin para la instruccin DELETE

Especificacin de condiciones en la clusula WHERE
Las subconsultas determinan qu filas eliminar
Eliminacin de filas basadas en otras tablas
Eliminacin 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.
Metodologas de Anlisis
Actualizacin de filas basada en datos de la tabla

Actualizacin de filas basada en otras tablas
Actualizacin de datos
Actualizacin de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
La clusula 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 actualizarn las filas que infrinjan alguna restriccin de integridad
Actualizacin de filas basada en datos de la tabla
Actualizacin de datos
USE northwind
UPDATE products
SET unitprice = (unitprice * 1.1)
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de la instruccin UPDATE
Nunca actualiza la misma fila dos veces
Requiere prefijos de tablas en nombres de columnas ambiguos
Especificacin de filas para actualizar con combinaciones
Utilizar la clusula FROM
Especificacin de filas para actualizar con subconsultas
Correlacionar la subconsulta con la tabla actualizada
Actualizacin de filas basada en datos de otras tablas
Actualizacin 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.
Metodologas de Anlisis
Las modificaciones de datos se producen en una transaccin

Se producen asignaciones de pginas de datos

La modificacin de datos indizados disminuye el rendimiento

Los ndices pueden mejorar los criterios de bsquedas
Actualizacin de filas basada en datos de otras tablas
Consideraciones acerca del rendimiento
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

La lista de seleccin especifica las columnas
La clusula WHERE especifica las filas
La clusula FROM especifica la tabla
Uso de la instruccin SELECT
Recuperacin de datos mediante la instruccin SELECT
SELECT [ ALL | DISTINCT ] <listaSeleccin>
FROM {<tablaOrigen>} [, ...n]
[ WHERE <condicinBsqueda> ]
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Especificacin de columnas
Recuperacin de datos mediante la instruccin SELECT
USE northwind
SELECT employeeid, lastname, firstname, title
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de la clusula WHERE para especificar filas
Recuperacin de datos mediante la instruccin SELECT
USE northwind
SELECT employeeid, lastname, firstname, title
FROM employees
WHERE employeeid = 5
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de los operadores de comparacin

Uso de comparaciones de cadenas

Uso de operadores lgicos

Obtencin de un intervalo de valores

Uso de una lista de valores como criterio de bsqueda

Obtencin de valores desconocidos
Modos para filtrar datos
Filtros de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de los operadores de comparacin
Filtro de datos
USE northwind
SELECT lastname, city
FROM employees
WHERE country = 'USA'
GO
Operador Descripcin
= Igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No igual a
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso comparaciones de cadenas
Filtro de datos
Comodn Descripcin
% Cualquier cadena de cero o ms caracteres.
_ Cualquier carcter individual.
[] Cualquier carcter individual contenido en el intervalo o
conjunto especificado.
[^] Cualquier carcter individual no contenido en el intervalo
o conjunto especificado.
USE northwind
SELECT companyname
FROM customers
WHERE companyname LIKE '%Restaurant%'
GO
Uso de la clusula LIKE en combinacin con caracteres comodn para
comparar cadenas de caracteres
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de operadores lgicos
Filtro de datos
Operador Descripcin
AND Obtener filas que cumplen todos los criterios de la bsqueda
OR Obtener filas que cumplen algn criterio de la bsqueda
NOT Para negar la expresin especificada a continuacin
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.
Metodologas de Anlisis
Obtencin de un intervalo de valores
Filtro de datos
Operador Descripcin
BETWEEN Obtener filas en un intervalo especfico
NOT BETWEEN Obtener filas fuera de un intervalo especfico
USE northwind
SELECT productname, unitprice
FROM products
WHERE unitprice BETWEEN 10 AND 20
GO
Condicin de bsqueda BETWEEN en la clusula WHERE

Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de una lista de valores como criterio de bsqueda
Filtro de datos
USE northwind
SELECT companyname, country
FROM suppliers
WHERE country IN ('Japan', 'Italy')
GO
Condicin de bsqueda IN en la clusula WHERE
Es equivalente a utilizar expresiones de comparacin concatenadas con
OR

Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Obtencin de valores desconocidos
Filtro de datos
Recuperar columnas sin un valor especificado
Condicin de bsqueda 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.
Metodologas de Anlisis
Ordenacin de los datos

Eliminacin 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.
Metodologas de Anlisis
Ordenacin de los datos
Dar formato a un conjunto de resultados
Uso de la clusula ORDER BY, para ordenar los resultados de forma
ascendente o descendente
De forma predeterminada ORDER BY realiza una ordenacin ascendente
USE northwind
SELECT productid, productname, categoryid, unitprice
FROM products
ORDER BY categoryid, unitprice DESC
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Eliminacin de filas duplicadas
Dar formato a un conjunto de resultados
Uso de la clusula 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.
Metodologas de Anlisis
Cambio del nombre de las columnas
Dar formato a un conjunto de resultados
En ocasiones es necesario para tener nombres de columnas ms legibles

Usamos la clusula 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.
Metodologas de Anlisis
Uso de literales
Dar formato a un conjunto de resultados
Usamos lo literales para haces ms legible el conjunto de resultados.
USE northwind
SELECT firstname, lastname ,'Nmero de identificacin:', employeeid
FROM employees
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Procesamiento de consultas
Cmo se procesan las consultas
Consultas que no estn almacenada en cach




Consultas almacenadas en cach
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Consideraciones acerca del rendimiento
Cmo se procesan las consultas
Las condiciones de bsqueda negativas pueden hacer que la recuperacin
de datos sea ms lenta

La obtencin de datos con LIKE puede resultar ms lenta

Las coincidencias exactas o intervalos hacen que la obtencin de datos
sea ms rpida

La clusula ORDER BY puede ralentizar la obtencin de datos

Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Clusula TOP n o TOP n PERCENT
Presenta slo las n primeras filas de un conjunto de resultados
Especifica el intervalo de valores con la clusula ORDER BY
Devuelve las filas iguales si se utiliza WITH TIES
Presentacin de los primeros n valores
Presentacin 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.
Metodologas de Anlisis
Funciones de agregado
Uso de funciones de agregado
Operador Descripcin
AVG Promedio de valores en una expresin numrica
COUNT Nmero de valores en una expresin
COUNT (*) Nmero de filas seleccionadas
MAX Valor ms alto en la expresin
MIN Valor ms bajo en la expresin
SUM Valores totales en una expresin numrica
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.
Metodologas de Anlisis
Uso de las funciones de agregado con valores nulos
Uso de funciones de agregado
La mayora de las funciones de agregado pasan por alto los valores
nulos
La funcin 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.
Metodologas de Anlisis
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 ordenacin de los datos, es necesario
utilizar ORDER BY
GROUP BY
Fundamentos de GROUP BY
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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.
Metodologas de Anlisis
GROUP BY con la clusula HAVING
Fundamentos de GROUP BY
HAVING establece condiciones en los grupos incluidos en un
conjunto de resultados

Interacta como la clusula WHERE con la instruccin SELECT

Solo utilizar con la clusula GROUP BY
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de GROUP BY con la clusula 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.
Metodologas de Anlisis
Generacin de valores de agregado dentro de los conjuntos de resultados
Uso de la clusula GROUP BY con el operador ROLLUP

Uso de la clusula GROUP BY con el operador CUBE

Uso de la funcin GROUPING
Generacin de valores de agregado dentro
de los conjuntos de resultados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Generacin de valores de agregado dentro de los conjuntos de resultados
Uso de ROLLUP para resumir valores de grupos
- Mximo 10 expresiones de agrupacin

Uso de CUBE para resumir todas las combinaciones posibles de los
grupos en funcin de la clusula 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.
Metodologas de Anlisis
Generacin 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
Descripcin
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.
Metodologas de Anlisis
Generacin de valores de agregado dentro de los conjuntos de resultados
Uso de GROUP BY con el operador CUBE
Descripcin
Total General
Resume todas las filas para orderid 1
Resume todas las filas para orderid 2
Resume slo las filas para productid 1
Detalla el valor para productid 1, orderid 1
Detalla el valor para productid 1, orderid 2
Resume slo las filas para productid 2
Detalla el valor para productid 2, orderid 1
Detalla el valor para productid 2, orderid 1
Resume slo 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
resmenes ms de
valores que el
operador ROLLUP
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Generacin 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 clusula
GROUP BY
GROUPING
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Generacin de valores de agregado dentro de los conjuntos de resultados
Uso de la funcin 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.
Metodologas de Anlisis
Generacin 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 estndar ANSI

Los resultados no estn adaptados para que pueden tratarlos otras
aplicaciones

No es la herramienta ms adecuada, Cristal Reports, Analisys Server, etc
ofrecen caractersticas ms completas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Generacin de valores de agregado dentro de los conjuntos de resultados
Uso de las clusulas 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.
Metodologas de Anlisis
Recomendaciones de uso
Recomendaciones
Indexar con frecuencia las columnas de agregacin

Evitar el uso de funciones de agregado con valores nulos

Usar la clusula ORDER BY para garantizar un orden de clasificacin

Utilizar el operador ROLLUP en lugar de CUBE

Evitar utilizar la clusula COMPUTE o COMPUTE BY
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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.
Metodologas de Anlisis
Combinacin de datos de varias tablas
Combinacin de datos de varias tablas
Introduccin a las combinaciones

Uso de combinaciones internas

Uso de las combinaciones externas

Uso de las combinaciones cruzadas

Combinacin de ms de dos tablas

Combinacin de una tabla consigo misma
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Introduccin a las combinaciones
Seleccin de columnas especficas de varias tablas
o La palabra clave JOIN especifica qu tablas se van a combinar y cmo
o La palabra clave ON especifica la condicin de combinacin

Consultas de dos o ms tablas para producir un conjunto de resultados
o Usar claves principales y externas como condiciones de combinacin
o Para combinar tablas, utilizamos columnas comunes a las tablas
especificadas

Combinacin de datos de varias tablas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Combinan tablas mediante la comparacin de los valores de las
columnas que son comunes en ambas tablas.
Slo devuelve las filas que cumplen la condicin de la combinacin
Utilizaremos la clusula INNER JOIN, se puede abreviar por JOIN.
Uso de combinaciones internas
Combinacin 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.
Metodologas de Anlisis
Combinan dos tablas que cumplen una condicin de combinacin, ms
las filas de la tabla derecha o izquierda que no la cumplen.
Utilizaremos la clusula LEFT OUTNER JOIN o RIGHT OUTER JOINo
su abreviatura LEFT JOIN y RIGHT JOIN.
Uso de combinaciones externas
Combinacin 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.
Metodologas de Anlisis
Representa todas las combinaciones de todas las filas de las tablas
asociadas.
Este tipo de combinacin no requiere una columna comn.
No suelen utilizarse en bases de datos normalizadas.

Uso de combinaciones cruzadas
Combinacin de datos de varias tablas
USE joindb
SELECT buyer_name, qty
FROM buyers
CROSS JOIN sales
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Combinacin de ms de dos tablas
Combinacin 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.
Metodologas de Anlisis
Combinacin de ms de dos tablas
Combinacin 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.
Metodologas de Anlisis
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 nmero de columnas
El mismo orden de las columnas en la lista de seleccin

Combinacin de varios conjuntos de resultados
Combinacin 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.
Metodologas de Anlisis
Realizar la combinacin de tablas por las columnas que son clave
primaria o clave externa.

Referenciar todas las columnas de una clave primaria compuesta en la
clusula ON cuando la clave compuesta est en la tabla relacionada.

Limitar el nmero de tablas que participan en una unin, ya que cuanto
ms tablas intentemos unir ms tiempo requerir SQL Server para
procesar la consulta.
Recomendaciones
Recomendaciones
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Por qu utilizar subconsultas
Para dividir una consulta compleja en varios pasos lgicos
Para responder una consulta que depende de los resultados de
otra consulta

Por qu utilizar combinaciones en lugar de subconsultas
SQL Server ejecuta combinaciones ms rpidas que la subconsultas

Cmo utilizar subconsultas
Introduccin a las subconsultas
Introduccin a las subconsultas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Es un conjunto de registros dentro de una consulta que funciona
como una tabla
Ocupa el lugar de la tabla en la clusual 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.
Metodologas de Anlisis
Se evala y trata como una expresin
Se ejecuta una vez para la instruccin entera
Uso de una subconsulta como una expresin
Uso de una subconsulta como una expresin
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.
Metodologas de Anlisis
Se puede utilizar como una expresin dinmica que cambia en cada fila
de una consulta externa
Divide consultas complejas en dos o ms consultas simples relacionadas
Simulacin de una clusula JOIN
Simulacin de una clusula HAVING
Uso de una subconsulta para correlacionar datos
Uso de una subconsulta para correlacionar datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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
Simulacin de una clusula HAVING
Evaluacin 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.
Metodologas de Anlisis
Las subconsultas correlacionadas pueden producir el mismo
resultado que una clusula JOIN
Las combinaciones permiten al optimizador de consultas determinar
la manera de correlacionar los datos de la forma ms eficiente
Simulacin de una clusula 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.
Metodologas de Anlisis
Subconsulta con el mismo resultado que una clusual HAVING



Uso de una clusula HAVING sin una subconsulta
Simulacin de una clusula 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.
Metodologas de Anlisis
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 ningn datos
Uso de las clusulas EXISTS y NO EXISTS
Uso de las clusulas 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.
Metodologas de Anlisis
Qu son las vistas
Introduccin a las vistas
USE Northwind
GO
CREATE VIEW dbo.EmployeeView
AS
SELECT LastName, Firstname
FROM employees
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Centrar el inters en los datos de los usuarios
Centrarse slo en los datos importantes o adecuados
Limitar el acceso a los datos confidenciales

Enmascarar la complejidad de la base de datos
Ocultar el diseo de la base de datos compleja
Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos
heterogneos

Simplificar la administracin de los permisos de usuario

Mejorar el rendimiento

Organizar los datos para exportarse a otras aplicaciones
Ventajas de las vistas
Introduccin a las vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin de vistas
Ejemplo: Vista de tablas combinadas
Modificacin y eliminacin de vistas
Evitar la interrupcin de las cadenas de pertenencia
Ubicacin de la informacin de definicin de vistas
Ocultacin de la definicin de las vistas
Definicin de vistas
Definicin de vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin de una vista



Restricciones en las definiciones de vistas
Debemos tener permiso de SELECT en todas las tablas base
No se puede incluir la clusula ORDER BY
No se puede incluir la clave INTO
Creacin de vistas
Definicin 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.
Metodologas de Anlisis
Ejemplo: Vista de tablas combinadas
Definicin 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.
Metodologas de Anlisis
ALTER VIEW
Conserva los permisos asignados
Hace que la instruccin SELECT y las opciones reemplacen la definicin existente
Si utilizamos opciones WITH CHECK OPTION, WITH ENCRYTION, WITH
SCHEMABINDING o WITH VIEW_METADA al crear la vista, es necesario incluirla en
la alteracin




Modificacin de vistas
Definicin de vistas
USE Northwind
GO
ALTER VIEW dbo.EmployeeView
AS
SELECT LastName, FirstName, Extension
FROM employees
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
DROP VIEW
Al eliminar una vista eliminamos su definicin 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
automticamente
Eliminacin de vistas
Definicin de vistas
DROP VIEW dbo.ShipStatusView
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Objetos dependientes con propietarios distintos
Ejemplo
Maria Ejecuta:


Pierre ejecuta:
Evitar la interrupcin de las cadenas de pertenencia
Definicin de vistas
GRANT select ON view2 TO pierre
SELECT * FROM maria.view2
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Ubicacin de las definiciones de vistas
No disponible si la vista fue creada con la opcin WITH ENCRYPTION



Ubicacin de las dependencias de una vista
Muestra los objetos de los que depende una vista
Muestra los objetos que dependen de una vista
Ubicacin de la informacin de definicin de vistas
Definicin de vistas
Vistas de esquema de informacin o
tablas del sistema
Informacin 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 Definicin de vistas
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE o syscolumns Columnas definidas en una vista
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Uso de la opcin WITH ENCRYPTION
No eliminar las entradas de la tabla syscomments
Ocultacin de la definicin de las vistas
Definicin 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.
Metodologas de Anlisis
No pueden afectar a ms 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
Modificacin de datos mediante vistas
Modificacin de datos mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Consideraciones acerca del rendimiento
Uso de vistas indizadas
Uso de vistas para dividir datos
Optimizacin del rendimiento mediante vistas
Optimizacin del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Consideraciones acerca del rendimiento
Optimizacin 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.
Metodologas de Anlisis
Las vistas indizadas almacenan el conjunto de resultados en la base
de datos
Creacin de una vista indizada
Recomendaciones para la creacin 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 creacin de vistas indizadas
Uso de vistas indizadas
Optimizacin del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Podemos utilizar las vistas para dividir los datos en varios servidores
o instancias de SQL Server
Cmo utiliza SQL Server las vistas para dividir datos
Cmo las vistas divididas mejoran el rendimiento




Uso de vistas indizadas para dividir datos
Optimizacin del rendimiento mediante vistas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Usar una convencin de nomenclatura estndar
Comprobar las dependencias de los objetos antes de quitarlos
No eliminar nunca las entradas de la tabla de sistema syscomments
Evaluar cuidadosamente la creacin de vistas basadas en otras
vistas



Recomendaciones
Procedimientos recomentados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Definicin de procedimientos almacenados

Procesamiento inicial de los procedimientos almacenados

Procesamientos posteriores de los procedimientos almacenados

Ventajas de los procedimientos almacenados
Introduccin a los procedimientos almacenados
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Colecciones de instrucciones Transact-SQL con nombre

Encapsulado de tareas repetitivas

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

Aceptan parmetros de entrada y devuelven valores

Devuelven valores de estado para indicar que se ha ejecutado
satisfactoriamente o se ha producido algn error
Definicin de procedimiento almacenado
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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 slo para la sesin de usuario
Globales, disponibles para todas las sesiones de todos los usuarios
Procedimientos almacenados remotos
Son una caracterstica anterior de SQL Server
Procedimientos almacenados extendidos
Se implementan como bibliotecas de vnculos dinmicos
Se ejecutan fuera del entorno de SQL Server, identificados con el prefijo xp_
Tipos de procedimientos almacenados
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Procesamiento inicial de los procedimientos almacenados
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Procesamientos posteriores de los procedimientos almacenados
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Compartir la lgica de la aplicacin

Evitar la exposicin de los detalles de las tablas de la base de datos

Proporcionar mecanismos de seguridad

Mejorar el rendimiento

Reducir el trfico de red
Ventajas de los procedimientos almacenados
Introduccin a los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Utilizar la instruccin CREATE PROCEDURE para crearlos en la base
de datos activa
Podemos anidar hasta 32 niveles
Usar sp_help para mostrar informacin
Creacin de procedimientos almacenados
Creacin 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.
Metodologas de Anlisis
Para mostrar una lista de procedimientos almacenados y sus
propietarios
Sp_stored_procedures

Mostrar informacin adicional
sp_help
sp_helptext
sp_depends
Ver informacin de procedimientos almacenados
Creacin de procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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 configuracin de conexin para todos los
procedimientos almacenados
Reducir al mnimo la utilizacin de procedimientos almacenados
temporales
Recomendaciones para la creacin de
procedimientos almacenados
Creacin de procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Ejecucin de un procedimiento almacenado por separado


Ejecucin de un procedimiento almacenado en una instruccin INSERT
La tabla debe existir
Los tipos de datos deben coincidir
Ejecucin de un procedimiento almacenado
Ejecucin de un procedimiento almacenado
EXEC OverdueOrders
INSERT INTO Customers
EXEC EmployeeCustomer
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Modificacin 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



Modificacin de procedimientos almacenados
Modificacin y eliminacin 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.
Metodologas de Anlisis
Eliminacin de procedimientos almacenados
Ejecutar el procedimiento almacenado sp_depends para determinar si los objetos
dependen del procedimiento almacenado
Eliminacin de procedimientos almacenados
Modificacin y elimancin de procedimientos almacenados
USE Northwind
GO
DROP PROC dbo.OverdueOrders
GO
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Utilizacin de parmetros de entrada

Ejecucin de procedimientos almacenados con parmetros de entrada

Devolucin de valores mediante parmetros de salida

Volver a compilar explcitamente procedimientos almacenados
Utilizacin de parmetros en los
procedimientos almacenados
Utilizacin de parmetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Validar primero todos los valores de los parmetros de entrada
Proporcionar los valores predeterminados apropiados e incluir las
comprobaciones de Null
Utilizacin de parmetros de entrada
Utilizacin de parmetros 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.
Metodologas de Anlisis
Paso de valores por el nombre del parmetro






Paso de valores por posicin
Ejecucin de procedimientos almacenados
con parmetros de entrada
Utilizacin de parmetros 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.
Metodologas de Anlisis
Devolucin de valores mediante parmetros de salida
Utilizacin de parmetros en los procedimientos almacenados
Para usar parmetro 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.
Metodologas de Anlisis
Devolucin de valores mediante parmetros de salida
Utilizacin de parmetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

El procedimiento almacenado devuelve conjuntos de resultados que
varan considerablemente

Se agrega un nuevo ndice a una tabla subyacente

El valor del parmetro es atpico
Volver a compilar explcitamente procedimientos
almacenados
Utilizacin de parmetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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 ejecucin
Lo utilizaremos si el parmetro que estamos pasando vara mucho de los que
normalmente se pasan a este SP

SP_RECOMPILE
Se compila en la prxima ejecucin
Lo usaremos cuando se aada un ndice a una tabla subyacente
Volver a compilar explcitamente procedimientos
almacenados
Utilizacin de parmetros en los procedimientos almacenados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Se programan con la API Servicios abiertos de datos
Pueden incluir caractersticas de C y C++
Pueden contener mltiples funciones
Se pueden llamar desde un cliente o desde SQL Server
Se pueden agregar slo a la base de datos Master
Ejecucin de procedimientos almacenados extendidos
Ejecucin de procedimientos almacenados extendidos
EXEC master..xp_cmdshell 'dir c:\'
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
La instruccin RETURN sale incondicionalmente de una consulta o
procedimiento

sp_addmessage crea mensajes de error personalizados

@@error contiene el nmero de error de la instruccin ejecutada ms
recientemente

Instruccin 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.
Metodologas de Anlisis
Monitor de sistema de Windows 2003/2008
Objeto: SQL Server: Administrador de cach
Objeto: Estadsticas de SQL

Analizador de SQL
Puede supervisar eventos
Puede probar cada instruccin en un procedimiento almacenado






Consideraciones acerca del rendimiento
Rendimiento
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Las BD necesitan mantenimiento

Mantener un rendimiento estable del sistema

Las tareas se realizan en horario no laboral
Por qu son necesarias?
Introduccin automatizacin de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Reduccin de la carga administrativa

Reduccin del riesgo de que se omitan tareas de mantenimiento
fundamentales

Reduccin del riesgo de error humano

Administracin proactiva
Ventajas de la automatizacin
Introduccin automatizacin de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Realizacin regular de tareas programadas
Hacer copia de seguridad de bases de datos
Importar y exportar datos

Reconocimiento de los posibles problemas y su solucin
Supervisar espacio de la base de datos y del registro
Supervisar el rendimiento
Tipos de tareas
Introduccin automatizacin de tareas administrativas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Componente de SQL Server responsable de la automatizacin

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?
Configuracin de SQL Agent
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Modo de inicio del servicio SQLAgent
El servicio SQLAgent no esta configurado para iniciarse automticamente de manera
predeterminada.

Cuenta del servicio SQLAgent
Cuenta integrada del sistema
Sistema local, servicio local o servicio de red
Autentificacin Windows con usuario local o del dominio
Requiere el derecho de usuario iniciar sesin como un servicio

Dependencia del servicio SQLAgent
Servicio SQL Server
Servicio Messenger para notificaciones de envo de red
Configurar Agente SQL Server
Configuracin de SQL Agent
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Series especficas de operaciones que el Agente SQL Server realiza
secuencialmente

Puede incluir pasos de secuencias de comandos Transact-SQL,
aplicaciones de lnea de comandos y de ActiveX

Permite su programacin para ejecutarse una vez, repeteridamente o
para iniciarse manualmente
Qu es un trabajo?
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Asegurarse de que el trabajo est habilitado

Especificar el propietario responsable de realizar el trabajo

Determinar dnde se ejecutar el trabajo

Creacin de una categora de trabajos

SQL Server Management Studio nos proporciona un asistente para la
creacin de trabajos
Creacin de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Ejecucin de trabajos de Transact-SQL
Ejecutar en el contexto del propietario del trabajo o del usuario especfico

Ejecucin de comandos del sistema operativo o de trabajos de
secuencias de comandos ActiveX
Los miembros de la funcin sysadmin usan la cuenta de inicio de sesin de SQL
Server Agent
Los propietarios de trabajos que no sean miembros de la funcin sysadmin usan una
cuenta de usuario de dominio definida denominada cuenta proxy
Comprobacin de permisos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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 cdigo de salida del proceso que indica que el comando se ejecut
correctamente
Incluir la ruta completa de la aplicacin ejecutable

Uso de secuencias de comandos de ActiveX
Lenguajes como Microsoft Visual Basic o Microsoft Jscript.
Instalar bibliotecas para otros lenguajes
Definicin de pasos de trabajo
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Lgica de flujo de acciones para cada paso de trabajo
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Al iniciarse SQL Server Agent.
A una hora especfica
Una sola una vez
De forma peridica
diaria, semanal o mensualmente.
Cuando la CPU est inactiva
El usuario de SQLAgent debe ser
administrador local del servidor
Programacin de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Revisin del historial de un trabajo individual
Resultado del paso de trabajo: correcto o errneo
Duracin de ejecucin
Errores y mensajes

Configuracin del tamao del historial de trabajos
Conservar informacin acerca de cada trabajo
Sobrescribir historial cuando se alcance el tamao mximo
Revisin y configuracin del historial de trabajos
Trabajos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
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 electrnico, localizador o mensajes
de envo de red
Se puede especificar un operador a pruebas de errores
Qu es un operador?
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Utilizar alias de grupos de correo
para notificar a varias personas

Probar cada mtodo de
notificacin

Especificar una programacin de
notificacin para cada operador

Creacin de operadores
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Se le enva notificacin cuando las alertas enviadas a los operadores definidos
fallen si:
Ningn operador a los que se debe enviar el mensaje por localizador est de servicio
Hay definido un operador a prueba de fallos

Asignacin de un operador a prueba de errores
Operadores
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Respuesta predefinida a un evento

Activada mediante trabajos, condiciones de rendimiento o eventos en el
registro de la aplicacin

Puede notificar a un operador o iniciar un trabajo especificado
Qu es una alerta?
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Situacin de ejemplo
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Errores de SQL Server con nivel de gravedad comprendido entre 19 y 25

Procedimientos almacenados del sistema sp_addmessage o
sp_altermessage

Instruccin RAISERROR WITH LOG

Procedimiento almacenado extendido xp_logevent

Escritura de sucesos en el registro de aplicacin
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Definicin de alertas para nmeros de error de SQL Server
Deben escribirse en el registro de aplicacin de Windows
Suministrado por el sistema o definido por el usuario

Definicin de alertas para niveles de gravedad de errores
Los niveles de seguridad entre 19 y 25 se escriben automticamente
Configuracin del reenvo de sucesos
Creacin de alertas para responder a errores SQL Server
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Creacin del mensaje de error
El nmero de error debe ser mayor que 50000
Pueden utilizarse parmetros

Generacin del error desde la aplicacin de base de datos
Use la instruccin RAISERROR
Declare variables para los parmetros

Definicin de una alerta para el mensaje de error
Escribir el mensaje en el registro de aplicacin de Windows

Creacin de alertas para un error definido por el usuario
Alertas
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Respuesta a las alertas de condiciones de rendimiento
Alertas

Objetos sobre los que crear alertas

Mtodos de acceso
Administrador de bfer
Administrador de cach
Bases de datos
Bloqueos
Estadsticas de SQL
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Prcticas recomendadas
Prcticas 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.
Metodologas de Anlisis

Qu son las entidades de seguridad?

Qu son los protegibles?

Permisos de SQL Server 2008

Descripcin general de la seguridad en SQL Server
Descripcin general de la seguridad de SQL Server
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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?
Descripcin 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 sesin de SQL Server
Funcin de SQL Server
Base de datos
Usuario de la base de datos
Funcin de la base de datos
Funcin de aplicacin
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Objetos cuyo acceso est regulado por el sistema de autorizacin de
SQL Server
Podemos diferenciar tres mbitos
Qu son los protegibles?
Descripcin general de la seguridad de SQL Server
mbito Protegible
De servidor
Inicios de sesin
Bases de datos
De base de datos
Usuarios
Funciones de aplicacin
Certificados
Eventos DDL
Esquema

De esquema
Tablas
Vistas
Funciones
Procedimientos

Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

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 automticamente se propaga

Permisos efectivos

Permisos de SQL Server
Descripcin general de la seguridad de SQL Server
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Qu son los modos de autenticacin de SQL Server?
Cmo funcionan las directivas de contraseas
Cmo administrar inicios de sesin de SQL Server
Qu son las funciones fijas de servidor?
Requisitos para la delegacin
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.
Metodologas de Anlisis

Modo de autenticacin Windows
Se vincula un usuario del sistema operativo a un inicio de sesin de SQL Server
Permite agregar a grupos de usuarios con una nica cuenta de inicio de sesin
La autenticacin Windows requiere menos sobre carga administrativa
Modo de autenticacin Windows y SQL Server
Usuarios del sistema operativo vinculados a inicios de sesin
Usuario locales de SQL Server con su propio nombre de usuario y contrasea
Se hace el sistema ms vulnerable ya que aumenta la superficie del sistema de SQL Server

Qu son los modos de autenticacin de SQL Server?
Proteger el mbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Se definen en Directivas de grupo en Windows 2003/2008
Garantizan la seguridad y complejidad de contraseas en el sistema
Diseada para evitar ataque de fuerza bruta
Podemos definir la complejidad de las contraseas y su caducidad

Cmo funcionan las directivas de contraseas
Proteger el mbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis

Usando el Explorador de objetos de SQL Management Studio

Instruccin CREATE LOGIN
Para inicio de sesin de Windows
Para inicio de sesin de SQL
Cmo administrar inicios de sesin 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.
Metodologas de Anlisis

Modificar inicios de sesin
Instruccin ALTER LOGIN




Eliminar inicios de sesin
Instruccin DROP LOGIN

Cmo administrar inicios de sesin 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.
Metodologas de Anlisis

SQL proporciona funciones de servidor predefinidas para funciones
administrativas comunes
Son una agrupacin de privilegios administrativos a nivel de servidor que
sern necesarios para realizar distintas tareas
Qu son las funciones fijas de servidor?
Proteger el mbito de servidor
Funcin Descripcin
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 sesin del servidor
processadmin Administrar procesos de SQL Server
bulkadmin Ejecutar instrucciones BULK INSERT
setupadmin Configurar servidores de rplica y servidores vinculados
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Adems de las funciones anteriores cada instancia tiene una funcin fija
de servidor denominada Pblica

Todos los inicios de sesin pertenecen por defecto a la funcin Pblica
Tiene el permiso VIEW ANY DATABASE

Con el procedimiento almacenado sp_addsrvrolemember podemos
aadir una cuenta de inicio de sesin como miembro de una funcin fija
de servidor

Las funciones fijas de servidor
No se pueden modifica, eliminar o agregar nuevas funciones
Cualquier miembro de una funcin fija de servidor puede agregar otras cuentas de inicio de sesin a la
funcin

Funciones fijas de servidor
Proteger el mbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Conexin 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 delegacin
La cuenta es confidencial y no se puede delegar. No debemos seleccionar esta opcin para
el usuario que solicita la delegacin.
La cuenta es de confianza para la delegacin. Debemos seleccin esta opcin para la
cuenta de servicio de SQL Server.
El equipo es de confianza para la delegacin. Debemos seleccionar esta opcin para el
equipo que ejecuta SQL Server.
Configurar SQL Server para la delegacin

Delegacin
Proteger el mbito de servidor
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Alternativa a un inicio de sesin que contiene la informacin de
autenticacin necesaria para conectarse a un recurso fuera de SQL
Server.
Se puede crear desde SQL Server Management Studio o con la
instruccin 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.
Metodologas de Anlisis
Permisos en el nivel del servidor


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

Login ALTER Modifica el inicio de sesin.
IMPERSONATE Suplantar el inicio de sesin.

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.
Metodologas de Anlisis
Otorgar mediante la instruccin GRANT

La sintaxis de GRANT vara 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.
Metodologas de Anlisis

Cmo administrar usuarios
Usuarios especiales
Qu son las funciones de base de datos?
Qu son las funciones de aplicacin?
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.
Metodologas de Anlisis
Los usuarios son creados en cada base de datos
Es necesario vincularlos a un inicio de sesin
Se puede realizar por SQL Server Management Studio o con la
instruccin CREATE USER
Cmo administrar usuarios
Proteger el mbito de base de datos
-- Crear un usuario para un inicio de sesin con el mismo nombre
CREATE USER Bernardo

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

--Crear un usuario con un esquema predeterminado explcitamente definido
CREATE USER SalesUser FOR LOGIN [DBSERVER1\SalesUSers]
WITH DEFAULT_SCHEMA = 'Sales'
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Usuario dbo
Cuenta predeterminada en todas las bases de datos
Cuenta sa y miembros de la funcin 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 sesin 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.
Metodologas de Anlisis
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 instruccin CREATE ROLE
Asignamos usuarios con el procedimiento almacenado sp_addrolemember

Funcin pblica
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.
Metodologas de Anlisis
Permiten cumplir con la seguridad para una aplicacin determinada

El contexto de seguridad alternativo para un usuario slo existe
mientras la aplicacin esta activa

Podemos crearla mediante SQL Server Management Studio o la
instruccin CREATE APPLICATION ROLE

No tienen miembros se activan cuando los usuarios ejecutan una
aplicacin
Funciones de aplicacin I
Proteger el mbito de base de datos
Curso FPO de Programador de Aplicaciones.
Metodologas de Anlisis
Podemos crearla mediante SQL Server Management Studio o la
instruccin CREATE APPLICATION ROLE




Para activar la funcin usaremos el procedimiento almacenado
sp_setapprole
Funciones de aplicacin 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.
Metodologas de Anlisis
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.
Metodologas de Anlisis
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

Anda mungkin juga menyukai