SQL Server - Bases de Datos

  • Upload
    carmelo

  • View
    243

  • Download
    0

Embed Size (px)

Citation preview

  • 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