8/9/2019 SQL Server - Bases de Datos
1/65
Sql Server
Bases de Datos
8/9/2019 SQL Server - Bases de Datos
2/65
Qu es una Base de Datos
Serie de archivos en el disco duro.
estos archivos son espacio que se ha asignado
previamente en el disco duro para almacenarotros objetos de Sql Server (tablas, vistas)
archivos principales
archivos de datos secundarios
archivos de registro de transacciones
8/9/2019 SQL Server - Bases de Datos
3/65
Archivo de datos principal
MDF es el primer archivo que se crea en la BD
se emplea para almacenar objetos de usuario
tablas, vistas, procedimientos almacenados
similares que se emplean para modifiar o almacenar info que haintroducido el usuario
objetos de sistema deben estar en fichero de datos principal
contienen info que Sql Server necesita para el funcionamiento de laBD
nombres de tabla ubicaciones de ndices
cuentas de usuario de la BD
info sobre otros objetos de sistema
8/9/2019 SQL Server - Bases de Datos
4/65
Archivo de datos secundario
cuando se acaba el espacio del disdo duro que
contiene el fichero de datos principal
NDF en otro disco duro
permite almacenar datos como tablas, ndices
y vistas
NO objetos del sistema
8/9/2019 SQL Server - Bases de Datos
5/65
Archivo de registro de transacciones
actua como una copia de seguridad en lnea
que almacena tansacciones
una transaccin es un grupo de comandos demodificacin de datos
insert, update, delete
contenido enun bloque begin tran.commit
y se ejecuta como una unidad
o se aplican todos los comandos de la transaccin a la
BD o no se aplica ninguno
8/9/2019 SQL Server - Bases de Datos
6/65
Transacciones
Sql Server dispone de dos tipos de
transacciones
implicitas cuando se envia un comando de modificacin de datos
a Sql Server sin incluirlo explicitamente enun bloque
begin trancommint
Sql Server aade el bloque por s mismo
explicitas
cuando se escriben las instrucciones begin tran y
commit al comienzo y final del bloque de instrucciones
8/9/2019 SQL Server - Bases de Datos
7/65
Ejemplo de transaccin explcita
begin tran
insert record
delete record commit tran
8/9/2019 SQL Server - Bases de Datos
8/65
las transacciones NO se escriben directamente en elarchivo de BD
cuando unususario quiere modificar un registro enunBD Sql Server localiza la pagina de datos en la BD que contiene
el registro que se va a cambiar
la carga en memoria (RAM) cache de datos
Sql Server utiliza para almacenar los datos que se van a modificar
es unas 100 veces ms rpido que el disco duro esta memoria es volatil
su contenido se elimina cada vez que el equipo pierde potencia
Sql Server escribe al mismo tiempo en el registro de transacciones loscambios realizados en la cache de datos
8/9/2019 SQL Server - Bases de Datos
9/65
Archivo de reigstro de transacciones
LDF
debera colocarse enun disco duro fsicodistinto que el archivo de datos
debe tener entre un 10% 25% del tamao
del fichero de datos para alojar transacciones durante una jornada
8/9/2019 SQL Server - Bases de Datos
10/65
Planificacin de la capacidad
Calcular tamao de un registro de la tabla sumando eltamao de cada columna de la tabla
dividir 8092 por el tamao de la fila y redondear el
resultado 8092 es la cantidad exacta de datos que puede contener
una sola pgina
se redondea pq la fila puede repartirse en varias pginas
dividir el nmero de filas que esperamos tener entre elresultado anterior
as sabremos cuantas pginas de datos se emplearan paracada tabla
8/9/2019 SQL Server - Bases de Datos
11/65
multiplicar el resultado por 8192
el tamao de una pgina en bytes
as sabremos exactamen
te los bytes qu
e ocu
parla tabla en el disco duro.
8/9/2019 SQL Server - Bases de Datos
12/65
Ejemplo
una tabla con los siguientes campos
codigo cliente int (son 4 bytes)
nombre
nvarchar (20) so
n40 bytes
apellidos nvarchar(20)
direccin nvarchar(50)
ciudad nvarchar(20)
pais char(2)
codigo postal char (9)
8/9/2019 SQL Server - Bases de Datos
13/65
esta tabla son 235 bytes por fila
dividimos 8092 / 235 = 34 34 filas que nos caben enuna sola pgina de datos
Supongamos que estimamos que tendremos10.000 filas 10.000/34 = 294
294 pginas necesitamos para guardar 10.000registros de esta tabla
294*8192 2.408.448 bytes
necesitamos 2,4 MB de disco duro
8/9/2019 SQL Server - Bases de Datos
14/65
Creacin de BD
Para empezar a trabajar con la base de datos
crear el fichero de datos principal
fichero de registro de tran
saccion
es
Podemos hacerlo de dos maneras
Grficamen
te Sql Server Management Studio
Mediante cdigo Transact-SQL
8/9/2019 SQL Server - Bases de Datos
15/65
Base de datos model
las BD nuevas son copias de la base de datosModel
Model tiene todos los objetos del sistema quenecesita cualquier BD para funcionar
Si queremos algn objeto estndar en todaslas bases de datos (una cuenta de usuario de
BD, por ejemplo) aadiendo este objeto a BD Model
existir automticamente en todas las BD nuevas
8/9/2019 SQL Server - Bases de Datos
16/65
Crear BD con Management Studio
Inicio Programas Sql Server 2005
Management Studio
panel de Explorador de Objetos Bases de datos
boton derecho nueva base de datos
Nombre BD : Tienda
Propietario : sa
Archivos de base de datos dos filas
cambiamos el tamao inicial del fichero de datos a 10
8/9/2019 SQL Server - Bases de Datos
17/65
Clic en boton de puntos de la columna
Crecimiento automatico para el fichero de
datos
en la ventana, activa la opcin Limitar el
crecimiento de archivos
cambia el tamao maximo a 20
crecimiento de archivos en % 10
si lo dejamos en No limitar
puede llenar el disco duro
8/9/2019 SQL Server - Bases de Datos
18/65
Lo mismo para el fichero de registro
activas habilitar crecimiento automtico
en
Crecimien
to de archivo en % 10
En tamao maximo
limitar a 2
8/9/2019 SQL Server - Bases de Datos
19/65
Casilla Usar indizacin de texto
Activada
nos permite agilizar la bsqueda en la BD
8/9/2019 SQL Server - Bases de Datos
20/65
Pgina Opciones
Intercalacin : servidor predeterminado
Modelo de recuperacin : Compelta
8/9/2019 SQL Server - Bases de Datos
21/65
Ya est
listo para llenar la BD de objetos
pero qu ha pasado en realidad?? lo podemos ver mejor conT-Sql
8/9/2019 SQL Server - Bases de Datos
22/65
Crear BD conTransact-SQL
Management Studio
Conectados utilizando Autentificacin de
Windows menuArchivo Nuevo Nueva consulta con
conexin actual
8/9/2019 SQL Server - Bases de Datos
23/65
Teora sintaxis T-SqlCR
EATE
TA
BLE
[ database_name . [ schema_name ] . | schema_name . ] table_name
( { |
| }
[ ] [ ,...n ] )
[ ON { partition_scheme_name ( partition_column_name ) | filegroup
| "default" } ]
[ { TEXTIMAGE_ON { filegroup | "default" } ]
[ FILESTREAM_ON { partition_scheme_name | filegroup
| "default" } ]
[ WITH ( [ ,...n ] ) ]
[ ; ]
::=
column_name
[ FILESTREAM ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
[
[ CONSTRAINT constraint_name ] DEFAULT constant_expression ]
| [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ]
]
[ ROWGUIDCOL ] [ [ ...n ] ]
[ SPARSE ]
::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max |
[ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]
::=
8/9/2019 SQL Server - Bases de Datos
24/65
database_name
Es el nombre de la base de datos en que se crea latabla. database_name debe especificar el nombre
de una base de datos existente. Si no seespecifica,database_name utiliza de manerapredeterminada la base de datos actual. El iniciode sesin de la conexin actual debe estar
asociado aun
iden
tificador deu
su
ario existen
teen la base de datos especificadapor database_name, y ese identificador deusuario debe tener permisos CREATETABLE.
8/9/2019 SQL Server - Bases de Datos
25/65
schema_name
Es el nombre del esquema al que pertenece la nuevatabla.
table_name Es el nombre de la nueva tabla. Los nombres de tablas
deben seguir las reglas delos identificadores. table_name puede contener un
mximo de 128 caracteres, excepto para losn
ombresde tablas temporales locales (nombres precedidos deunnico signo de nmero #), que no pueden superarlos 116 caracteres.
8/9/2019 SQL Server - Bases de Datos
26/65
ON { | filegroup | "default" } Especifica el esquema de particin o el grupo de archivos
en que se almacena la tabla. Si se especifica, la tabla ser una tabla con
particiones cuyas particiones se almacenan enun conjuntode uno o ms grupos de archivos especificados en. Si se especifica filegroup, la tabla sealmacena en el grupo de archivos connombre. El grupo dearchivos debe existir en la base de datos. Si seespecifica "default" o si ON no se especifica enninguna
parte, la tabla se almacena en el grupo de archivospredeterminado. El mecanismo de almacenamiento deuna tabla segn se especifica en CREATETABLEno sepuede modificar posteriormente.
8/9/2019 SQL Server - Bases de Datos
27/65
Ejemplo
CREATE DATABASETienda2
ON PRIMARY
(name = Tienda2, filename =c:\Archivos de programa\Microsoft SQL
Server\MSSQL.1\MSSQL\data\Tienda2.mdf,
size=10MB, maxsize=15MB,
filegrowth=1MB)
LOG ON
(name = Tienda2_log, filename =c:\Archivos de programa\Microsoft SQL
Server\MSSQL.1\MSSQL\data\Tienda2.ldf, size=2MB,
maxsize=3MB,
filegrowth=10%)
8/9/2019 SQL Server - Bases de Datos
28/65
en el panel de resultados
parte inferior de la ventana de consulta
mensaje si est ok o error
Explorador objetos Bases de datos
debemos ver Tienda2
8/9/2019 SQL Server - Bases de Datos
29/65
Modificacin de BD
Al ser copia de Model
tienen opciones estndar que controlan su
comportamiento
se pueden cambiar
tb cambiar el tamao de la BD para expandir o
reducirla
expandirla incluso a otro disco duro archivos secundarios
8/9/2019 SQL Server - Bases de Datos
30/65
Configuracin opciones de BD
Configuramos algunas opciones que traen las
BD como extras
boton
derecho en
BD P
ropiedades P
gin
aOpciones
8/9/2019 SQL Server - Bases de Datos
31/65
Nivel de compatibilidad
permite que la BD se comporte como una
versin anterior de Sql Server
8/9/2019 SQL Server - Bases de Datos
32/65
Actualizar estadsticas
automticamente
en true actualiza cada cierto tiempo
false debemos actualizar a mano
podemos desactivar esta opcin si no haymuchos recursos de sistema
Ram o tiempo en Cpu
lu
ego creamosun
plan
de man
ten
imin
eto deBD para que haga esta tarea con cierta
programacin
8/9/2019 SQL Server - Bases de Datos
33/65
Cerrar automticamente
cuando unusuario se conecta a una Bd debe
estar abierta
al salir elu
ltimou
su
ario, se cierra En aplicaciones de escritorio true
as se cierra cuando no est enuso
en
otras version
es, podemos dejarlo en
false para que no tengan que estar abriendo y cerrando
8/9/2019 SQL Server - Bases de Datos
34/65
Cerrar estadisticas automticamente
si hacemos una consulta y va a al servidor
intercepta y optimizador de consultas
encontrar la manera ms rpida de devolver los resultados
True crea automticamente estadisticas paracualquier columna
False debemos crear nuestras propias
estadisticas ahora mejor true hasta que manejes Sql Server con el
optimizador de consultas
8/9/2019 SQL Server - Bases de Datos
35/65
Reducir automticamente
si la BD tiene ms de 25% de espacio libre
Sql Server la recorre y la reduce (si es True)
Podemos dejarlo en False y luego reducimos las
BD a mano
8/9/2019 SQL Server - Bases de Datos
36/65
Cierre del curso al confirmar habilitado
cursor subconjunto de un conjunto de resultados
devuelven filas individuales cada vez
aceleran
la obten
cin
de datos si los conjun
tos deresultados son grandes
True se cierran cuando se confirman las transacciones
mejor dejarlo en False estarn abiertos hasta que se completen las modificaiones
de datos
el cursor se puede cerrar despus a mano
8/9/2019 SQL Server - Bases de Datos
37/65
Cursor predeterminado
Local
cualquier curso que se cree ser local para el
procedimiento que lo haya llamdo
Global
cualquier otro procedimiento empleado por la
misma conexin puede usar el cursor creado
8/9/2019 SQL Server - Bases de Datos
38/65
BD de solo lectura
no se puede escribir en ella
Efectos se omiten durante la recuperacin automtica
proceso del inicio del sistema que verifica que todas las
transacciones confirmadas se han escrito en todas las bases dedatos
Sql Server impone bloqueos a los datos que se leen enunaBD estandar para que usuarios no modifiquen datos que otros leen
si es solo lectura no hay ningun bloqueo
acelera el acceso a los datos
las BD que no cambien a menudo pueden ser de sololectura
8/9/2019 SQL Server - Bases de Datos
39/65
Estado de BD
No se puede editar
muestra el estado de la BD emergency
se ha puesto en este estado para solucionar problemas
BD solo lectura registro est deshabilitado
acceso est limitado solo a administradores
normal funciona sin problemas
offline se ha cerrado correctamente y NO se puede modificar
suspect hay un problema en BD
se debe comprobar y restaurarla a partir de una copia de seguridad
8/9/2019 SQL Server - Bases de Datos
40/65
Restringir acceso
Controla usuarios que pueden acceder a BD Multiple
permite a todos los usuarios con permiso acceder
Single
soloun
u
su
ario al mismo tiempo el usuario puede ser cualquiera
Restricted hay un grupo db_owner
estos miembros tienenun control administrativo de su BD
Db_creator
Sysadmin
control administrativo sobre todas las bases de datos del servidor
solo miembros de estos tres grupos tienen acceso
se usa al principio o cuando hay que cambiar la estructura de objetosde BD (aadir una columna a una tabla)
8/9/2019 SQL Server - Bases de Datos
41/65
Verificacin de pginas
si algo falla Sql Server No puede escribir datos en disco
error E/S disco
esta opcin permite recuperar Checksum
ordena a Sql Server crear un valor de suma de comprobacin para toda lapgina de datos
cuando la pagina se lee despues, se compara
si coinciden la pagina est bien
esta opcin detecta la mayora de errores de pgina
es la opcin
recomen
dada TornPageDetection
igual que escribe un bit
None
8/9/2019 SQL Server - Bases de Datos
42/65
Advertencias ANSI habilitadas
si haces operaciones no validas
dividir algo por cero
error
con False NO da error
si true muestra una advertencia
false predeterminado
8/9/2019 SQL Server - Bases de Datos
43/65
Anulacin aritmtica habilitada
True
n error de desbordamiento o de divisin por cero
terminar la consulta o proceso por lotes.
Si el error se produce enuna transaccin, sta se
revierte.
False
aparece un mensaje de advertencia
pero la consulta, proceso por lotes o transaccin
contina como si no ocurriera ningn error.
8/9/2019 SQL Server - Bases de Datos
44/65
Anulacin exacta numrica
cmo se gestionan los errores de redondeo
True
error cu
an
do se produ
ceun
a p
rida de precisin
enuna expresin
False
no mensajes de error
el valor se redondea con la precisin de la
columna o variable que contiene el resultado
8/9/2019 SQL Server - Bases de Datos
45/65
Concatenar valores Null produce Null
cuando + dos cadenas
hola + juan
hola juan
hola + null
true
null
false
hola
false predeterminada
8/9/2019 SQL Server - Bases de Datos
46/65
Desencadenadores recursivos
habilitados
Desencadenador
guardin de la tabla
se pueden definir para activarse cuando insertar,
actualiza, elimina datos
True
un desencadenador puede activar a otro
ejemplo cambio datos en clientes que afectan a pedidos
es complejo
solo usarlo cuando se entienda bien
8/9/2019 SQL Server - Bases de Datos
47/65
Identificadores entre comillas
habilitados
entre corchetes []
nombre de tabla con espacios
usar palabras clave reservadas
check, public
True
tb podemos usar comillas dobles
8/9/2019 SQL Server - Bases de Datos
48/65
Null ANSI predeterminado
al crear tablas
podemos especificar si columnas pueden estar
vacias
condicin conocida como valor nulo
True: pueden contener valores nulos
8/9/2019 SQL Server - Bases de Datos
49/65
Relleno ANSI habilitado
cmo se llena el contenido de una columna
con valores pequeos
8/9/2019 SQL Server - Bases de Datos
50/65
Valores NULL ANSI habilitados
True
comparacin conun valor nulo
nulo
False
comparacin con datos que no seanunicode con
valores nulos
False
Predeterminado False
8/9/2019 SQL Server - Bases de Datos
51/65
Unicode
sistema que asigna el mismo nmero para
cada carcter o letra.
los datos unicode almacenan caracteres que
usan 2 bytes (16 bits) en lugar de un byte (8
bits) que es lo normal.
8/9/2019 SQL Server - Bases de Datos
52/65
Cambio de tamao de una BD
ya en produccin
se va llenando
variar tamao de BD ms grande o ms pequea
8/9/2019 SQL Server - Bases de Datos
53/65
Expandir archivo de datos original
permitir crecimento automtico
maxsize
filegrowth
si alcanza restriccin establecida
y necesitamos expandirla ms
dos opciones
aumentar el tamao del fichero existente
aadiendo ficheros de datos secundarios
8/9/2019 SQL Server - Bases de Datos
54/65
Aumentar tamao de BD
Bases de datos boton drecho Propiedades
en la columna Seleccionar una pgina
Archivos
en columna tamao inicial
cambiamos a 15 y 3
clic en boton de crecimiento automatico
en log
pasamos a Tamao maximo del archivo a 4
8/9/2019 SQL Server - Bases de Datos
55/65
Aadir fichero de datos secundarios y
registro de transacciones
si el disco est muy lleno
hacemos un fichero secundario en otro disco
enArchivo agregar
fichero2
otra vez agregar
ficherolog2
Aceptar
8/9/2019 SQL Server - Bases de Datos
56/65
Adicin de grupos de archivos
podemos agrupar lgicamente cada grupo de
archivos para administrar la asignacin de
espacio en disco
por defecto
archivos de datos se colocan en grupo Primary
8/9/2019 SQL Server - Bases de Datos
57/65
Ejemplo
Tenemos una BD con varias tablas
unas para lectura
otras para escritura
si creamos un fichero secundario y los ponemosen diferentes discos
controlas dnde se crean cada objeto
el primer fichero de datos secundario enun grupo llamadolectura
el segundo fichero de datos secundario enun grupo llamadoescritura
8/9/2019 SQL Server - Bases de Datos
58/65
Crear fichero de datos secundario en
un grupo llamado lectura
Bases de datos boton derecho
Propiedades pagina grupos de archivo
agregar
nombre lectura
en la pagina Archivos
columna grupo de archivo - lectura
8/9/2019 SQL Server - Bases de Datos
59/65
Reducir ficheros de datos
Base de datos boton derecho Tareas
Reducir Base de datos
se pueden aceptar las opciones
predeterminadas de la ventana
Aceptar
8/9/2019 SQL Server - Bases de Datos
60/65
Eliminar una BD
Boton derecho en BD Eliminar
en ventana
activamos las opciones de eliminar copia
libera espacio de la base de datos msdb
se almacena el historial
Cerrar conexiones
desconectar a los usuarios de la BD
la eliminacin es una accin permanente
8/9/2019 SQL Server - Bases de Datos
61/65
Instantneas de BD
imagen de BD enun punto de tiempo concreto.
se puede hacer tb conuna copia de seguridad y luegorecuperar pero consume ms recursos
al crear instantanea
conjunto de punteros a las pginas de BD original
Modificaciones en BD original
antes de modificacin datos de pgina se copian en al archivo de instantanea
la pagina original sigue existiendo
8/9/2019 SQL Server - Bases de Datos
62/65
Utilidad
archivar datos historicos a los que debamos teneracceso
instantanea de base de datos financiera cada
trimestre para volver a una copia anterior de una BD en
caso de error o prdidas de datos
aumentar el rendimiento cuando se emplean
para generar informes mientras se leen datos de instantanea se puede seguir
escribiendo en la BD original
8/9/2019 SQL Server - Bases de Datos
63/65
Creacin instantanea
Management Studio
menu archivo nueva consulta con conexin
actual
8/9/2019 SQL Server - Bases de Datos
64/65
Sintaxis
CREATE DATABASE Instantanea_1
ON
( name = Ventas,
filename=c:\Archivos. \data\Instantanea_1.mdf
)
as snapshot ofTienda
8/9/2019 SQL Server - Bases de Datos
65/65
en el panel de resultados debe salir mensaje
OK
en el Explorador de objetos
Instantaneas de bases de datos