Top Banner
PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA CURSO: Creando Bases de Datos. (SQL Server 2012) DURACION: 24 HORAS Programa de Formación Profesional para la Productividad y Competitividad.
142

PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

May 13, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

CURSO:

Creando Bases de Datos.

(SQL Server 2012)

DURACION:

24 HORAS

Programa de Formación Profesional para la Productividad y Competitividad.

Page 2: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 1

1. ESTRUCTURA SQL SERVER 2012

Objetivo:

Al finalizar el tema, el participante será capaz de describir los elementos básicos que

componen SQL Server así como también de describir las Bases de Datos del Sistema.

Arquitectura cliente-servidor

Microsoft® SQL Server™ está diseñado para operar de forma eficiente en varios

entornos:

Como sistema de base de datos cliente-servidor de dos estratos o de

varios estratos

Como sistema de base de datos de escritorio

Sistemas de bases de datos cliente-servidor

Los sistemas cliente-servidor están construidos de tal modo que la base de datos

puede residir en un equipo central, llamado servidor y ser compartida entre varios

usuarios. Los usuarios tienen acceso al servidor a través de una aplicación de cliente o

de servidor:

En un sistema cliente-servidor de dos estratos, los usuarios ejecutan una aplicación en

su equipo local, llamado cliente, que se conecta a través de la red con el servidor que

ejecuta SQL Server. La aplicación de cliente ejecuta las reglas de la compañía y el

código necesario para presentar el resultado al usuario; también se conoce como

cliente amplio.

Page 3: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 2

Sistemas de bases de datos de escritorio

Aunque SQL Server funciona muy eficientemente como servidor, también se puede

utilizar en aplicaciones que necesiten bases de datos independientes almacenadas de

forma local en el cliente. SQL Server se puede autoconfigurar dinámicamente para que

se ejecute más eficientemente con los recursos disponibles en el cliente, sin tener que

dedicar un administrador de bases de datos a cada cliente. Los fabricantes de

aplicaciones también pueden incrustar SQL Server como componente de

almacenamiento de datos en sus aplicaciones.

Cuando los clientes utilizan bases de datos SQL Server locales, una copia del motor de

bases de datos de SQL Server se ejecuta en el cliente y administra todas las bases de

datos de SQL Server de dicho cliente. Las aplicaciones conectan con el motor de la

base de datos casi de la misma forma en que se conectan a través de la red con un

motor de base de datos que se ejecuta en un servidor remoto.

Page 4: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 3

Arquitectura SOA:

SOA prestadores de servicios, consumidores, y otros componentes de manejo de datos

como una característica natural de sus funciones en una aplicación SOA. Una

aplicación SOA todavía utiliza habitualmente las bases de datos central para almacenar

y proteger los datos, pero es probable que muchas de esas grandes bases de datos

que mantienen las clases de datos, como el almacenamiento por separado de las

ventas, fabricación, y las operaciones de datos y subconjuntos de cada especializados.

Cada proveedor de servicios y de los consumidores puede tener un localizados

necesidad de caché de datos o de su propio almacén de datos especializados. Y, de

los mensajes que viajan entre las distantes partes de la solicitud son a menudo los

datos que se vale de archivo para diversos usos.

Los datos pueden ser la partición sobre la base de sus características en el sistema

general en cuatro formas:

Datos de referencia se utiliza para crear solicitudes de servicio, como por

ejemplo un catálogo de productos. Debe ser en un formato que sea utilizable por

todas las partes, y que se identifica de una forma que no cambia con el tiempo,

como un catálogo de la fecha.

Page 5: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 4

Datos de actividad es efímero datos utilizados para realizar una actividad

específica, como una lista de selección que se utiliza para recuperar comprado

artículos de inventario. Dado que se trata de privados al servicio, el formato no

tiene que ser entendido por las otras partes.

Datos sobre los recursos es de larga vida datos que se utiliza internamente por

un servicio, los datos de los clientes, y datos de la cuenta.

Interacción de servicios de datos se utiliza para la comunicación entre servicios.

Debe ser en un formato que sea entendido por todas las partes, y debe seguir

siendo constante en el tiempo. Por ejemplo, un formulario de pedido se

comunica entre los servicios. Si el objeto se pierde, hay que ser capaces de

regenerar en la misma forma que el original y se transmiten de nuevo.

Este diagrama muestra algunos de los criterios de valoración que puedan hacer un

poco acoplamiento aplicación que se construye utilizando los principios de SOA. Un

servicio de los consumidores-que podría ser una aplicación cliente, un servidor de

Page 6: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 5

aplicación, como un servidor Web, o cualquier otro tipo de aplicación-envía un

mensaje a un proveedor de servicios. En los sistemas complejos, un mensaje router

inicialmente podrían recibir el mensaje y aplicar algunas ruta lógica a la petición de

que el proveedor de servicios adecuados. El proveedor de servicios recibe el

mensaje, tal vez desempaqueta y que cambiará, ¿sea cual sea el trabajo es

necesario y, a continuación, podría enviar una respuesta de vuelta al servicio del

consumidor.

Cuando se estudian los conceptos de SOA, rápidamente que cada uno de los

componentes en el sistema general es recibir, procesar y transmitir la información

como una de sus funciones primordiales. Incluso si un proveedor de servicios de la

respuesta a un mensaje enviado desde un servicio a los consumidores es

simplemente voltear un poco a su vez algo encendido o apagado, sin interactuar

con una base de datos, el prestador debe procesar los datos en el mensaje a fin de

determinar la labor Que se ha de hacer. Pero modernas aplicaciones empresariales

tratan ampliamente en los datos, por lo que es común para un componente SOA a

tener acceso ya sea a una base de datos centralizada o local, o con frecuencia

ambos.

Requerimientos para un proveedor de servicios de SOA

Para SQL SERVER 2012 o de cualquier motor de base de datos de asumir un papel

como único programa de servicios de SOA, es necesario aplicar varias funciones

más allá de su capacidad de gestionar nativos datos:

Punto Final de Apoyo. SODA El proveedor debe proporcionar apoyo a la

comunicación para recibir y transmitir los mensajes, por lo general, como un

socket TCP, HTTP GET o PUT, SOAP punto final, u otro tipo de punto final.

Page 7: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 6

Proceso de solicitudes de servicio. La mayoría de los mensajes son en SOA

utilizando el formato XML, por lo que el proveedor de servicios debe ser capaz

de transformar el proceso y, posiblemente, la de datos adjunta en otras formas,

según sea necesario por los componentes que conforman el servicio. También

debe ser capaz de participar en conversaciones y diálogos complejos como son

interdependientes mensajes recibidos y enviados a otros componentes.

Servicio lógica de acogida. El proveedor debe ser capaz de realizar cualquier

complejo de lógica es necesaria para procesar el mensaje y dar la respuesta

necesaria, así como, posiblemente, de coordinar las aportaciones de otros varios

servicios. Esto puede requerir tareas comunes de servidor de aplicaciones,

como la puesta en común de recursos, la activación, y la expansión lógica de

procesamiento.

Las diversas características nuevas en SQL SERVER 2012 para proporcionar

apoyo a estas funciones, además de muchas otras obras de infraestructura de

apoyo a la gestión de datos. Por ejemplo, un proveedor de servicios de seguridad

deben participar en un sistema de SOA y ser capaz de autenticar los clientes y, a su

vez, proporcionar credenciales para autenticar a los demás, proporcionar

durabilidad, participar en conversaciones y transacciones, y otras características a

nivel de aplicación.

SQL SERVER 2012 se basa en las características de SQL Server 2000 el motor de

base de datos relacionales, así como las liberaciones provisionales de las nuevas

tecnologías desde su versión original, como SQLXML 3,0, Servicios de Notificación,

y otras herramientas, para realizar plenamente la Base de Datos Orientadas a

Servicios Arquitectura.

Acceso Nativo a los servicios Web: HTTP

Para SQL SERVER 2012 para ser un proveedor de servicios completos de SOA, es

necesario el apoyo de protocolos basados en estándares para proporcionar criterios

Page 8: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 7

de valoración para aceptar y procesar solicitudes de servicio para cualquier tipo de

consumidor. El SQLXML extensiones a SQL Server 2000 sentó las bases para esta

función por incluido un filtro ISAPI para el uso con Internet Information Services (IIS)

para permitir HTTP de servicios Web basados en la comunicación con SQL Server.

SQL SERVER 2012 soporta protocolos de comunicación que se pueden utilizar

para apoyar una variedad de protocolos, reflejando la base de datos, servicios de

internet, servicios y Broker. El protocolo tipo HTTP permite que la instancia de SQL

Server para actuar como un proveedor de servicios para cualquier tipo de aplicación

en cualquier tipo de dispositivo que tiene soporte para los servicios web sobre HTTP

y los protocolos de seguridad WS-en una solución de SOA.

Completo acceso a los servicios Web requiere que SQL SERVER 2012 debe estar

instalado en Windows Server 2003 para aprovechar el Windows Server kernel-mode

HTTP protocolo. SQL Server puede registrar con el protocolo HTTP para reservar

partes de la URL de nombres. El diagrama muestra la estrecha integración y la

conexión directa entre el conductor y la base de datos. Cuando el protocolo HTTP

recibe una solicitud HTTP sobre el puerto 80 (por defecto), rutas de la solicitud

directa al punto final que se define dentro de SQL Server. SQL Server entonces

hace los procesos que se requieren, y luego devuelve una respuesta a través de

Windows.

Page 9: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 8

Objetos de Servicio Broker y Procesamiento

Servicio Broker introduce varios nuevos objetos de base de datos, como los tipos de

mensajes, los contratos de servicios, las colas, los servicios, los cuadros de diálogo,

grupos de conversación, y programas de servicio. La construcción de un proveedor

de servicios implica varios pasos para crear y configurar todos o algunos de esos

objetos, utilizando diversas formas nuevas de la Transact-SQL CREATE. Una vez

que estos objetos se encuentran en el lugar, puede enviar mensajes en formato

XML, utilizando la Transact-SQL ENVIAR declaración y un programa de servicios

puede tirar de ellos a una cola de recibir con la RECIBIR declaración.

Los mensajes se envían a un servicio que se define, lo que sitúa a la cola de

mensajes en un esperar a la tramitación de un programa de servicio, como se

muestra en el diagrama. La mayoría de las veces un servicio programa es un

procedimiento almacenado que los actos como el mensaje de Windows bomba,

batiendo a través de mensajes, procesamiento, y el envío de las respuestas.

Servicio Broker utiliza un modelo que es algo entre el tire y modelos caso, la de

Page 10: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 9

activar el programa de servicios que está obligado a una cola según sea necesario

para procesar los mensajes que han llegado. Servicio Broker pueden activar

programas de servicio adicional hasta un límite fijado como necesario para evitar

cuellos de botella y manejar de manera eficiente cargas pico.

Bases de Datos del Sistema

Los sistemas Microsoft® SQL Server™ tienen cuatro bases de datos del sistema:

Master

La base de datos master registra toda la información del sistema de SQL Server.

Registra todas las cuentas de inicio de sesión y los valores de la configuración del

sistema. Master es la base de datos que registra la existencia de todas las demás

bases de datos y la ubicación de los archivos principales que contienen la información

de inicialización de las bases de datos de usuario. Master registra la información de

inicialización de SQL Server; tenga siempre disponible una copia de seguridad reciente

de master.

Page 11: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 10

Tempdb

La base de datos tempdb almacena todas las tablas y todos los procedimientos

almacenados temporales. También satisface otras necesidades de almacenamiento

temporal, como las tablas de trabajo generadas por SQL Server. Tempdb es un

recurso global; las tablas y los procedimientos almacenados temporales de todos los

usuarios conectados al sistema se almacenan en ella. Tempdb se vuelve a crear cada

vez que se inicia SQL Server, de forma que el sistema se inicia con una copia limpia de

la base de datos. Como las tablas y los procedimientos almacenados temporales se

eliminan automáticamente al desconectar y cuando se cierra el sistema no hay

conexiones activas, en tempdb nunca hay nada que se tenga que guardar de una

sesión de SQL Server a otra.

Tempdb crece automáticamente cuando es necesario. Cuando el sistema se inicia,

tempdb se restablece a su tamaño predeterminado. Puede evitar la sobrecarga de

trabajo de la ampliación automática de tempdb si utiliza ALTER TABLE para aumentar

el tamaño de tempdb.

Model

La base de datos model se utiliza como plantilla para todas las bases de datos creadas

en un sistema. Cuando se emite una instrucción CREATE DATABASE, la primera parte

de la base de datos se crea copiando el contenido de la base de datos model, el resto

de la nueva base de datos se llena con páginas vacías. Como tempdb se crea de

nuevo cada vez que se inicia SQL Server, la base de datos model siempre tiene que

existir en un sistema SQL Server.

Msdb

La base de datos msdb la utiliza el Agente SQL Server para programar alertas y

trabajos, y para registrar operadores.

Page 12: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 11

Page 13: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 12

2. ESTRUCTURA DE UNA BASE DE DATOS EN SQL SERVER 2012

Objetivo:

Al finalizar el tema, el participante será capaz de describir la estructura Física sobre la

cual se construyen las Bases de Datos.

Arquitectura de una base de datos

Los datos de Microsoft® SQL Server™ están guardados en bases de datos. Los datos

de una base de datos están organizados en los componentes lógicos visibles por los

usuarios. Además, una base de datos está implementada físicamente como dos o más

archivos de disco.

Al utilizar una base de datos, se trabaja principalmente con los componentes lógicos,

como tablas, vistas, procedimientos y usuarios. La implementación física de los

archivos es casi enteramente transparente. Normalmente, sólo el administrador de la

base de datos tiene que trabajar con la implementación física.

Page 14: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 13

Cada instalación de SQL Server tiene varias bases de datos. SQL Server tiene cuatro

bases de datos del sistema (master, model, tempdb y msdb) y cada instalación de

SQL Server tiene una o varias bases de datos de usuario. Algunas organizaciones sólo

tienen una base de datos de usuario que contiene todos los datos de la organización.

Otras organizaciones tienen bases de datos diferentes para cada grupo de la

organización y, en algunas ocasiones, una base de datos sólo es utilizada por una

única aplicación. Por ejemplo, una organización podría tener una base de datos para

ventas, una para nóminas, una para una aplicación de administración de documentos,

etc. Algunas veces, una aplicación utiliza sólo una base de datos; otras aplicaciones

pueden tener acceso a varias bases de datos.

Page 15: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 14

No es necesario ejecutar varias instancias de SQL Server para que varios usuarios

puedan tener acceso a las bases de datos de un servidor. SQL Server es capaz de

controlar el trabajo de miles de usuarios sobre varias bases de datos en el mismo

servidor y al mismo tiempo. SQL Server deja disponibles todas las bases de datos del

servidor para todos los usuarios que conecten con dicho servidor, de acuerdo con los

permisos de seguridad definidos.

Al conectar con SQL Server, la conexión queda asociada con una base de datos

concreta del servidor. Esta base de datos recibe el nombre de base de datos actual.

Normalmente, el usuario se conecta a una base de datos definida como

predeterminada por el administrador del sistema, aunque puede utilizar las opciones de

conexión de las API de la base de datos para especificar otra base de datos. Puede

cambiar de una base de datos a otra mediante la instrucción Transact-SQL USE

nombreBaseDatos o mediante una función API que cambie el contexto de su base de

datos actual.

Archivos y grupos de archivos físicos de la base de datos

Microsoft® SQL Server™ asocia una base de datos con un conjunto de archivos del

sistema operativo. Los datos y la información del registro de transacciones nunca se

mezclan en el mismo archivo, y cada archivo sólo es utilizado por una base de datos.

Page 16: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 15

Las bases de datos de SQL Server tienen tres tipos de archivos:

Archivos de datos principales (.mdf)

El archivo de datos principal es el punto de partida de la base de datos y apunta al

resto de los archivos de la base de datos. Cada base de datos tiene un archivo de

datos principal. La extensión de archivo recomendada para los archivos de datos

principales es .mdf.

Archivos de datos secundarios (.ndf)

Los archivos de datos secundarios son todos los archivos de datos menos el archivo de

datos principal. Puede que algunas bases de datos no tengan archivos de datos

secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La

extensión de archivo recomendada para los archivos de datos secundarios es .ndf.

Archivos de registro (.ldf)

Los archivos de registro almacenan toda la información de registro que se utiliza para

recuperar la base de datos. Como mínimo, tiene que haber un archivo de registro por

cada base de datos, aunque puede haber varios. La extensión de archivo recomendada

para los archivos de registro es .ldf.

Los archivos de SQL Server tienen dos nombres:

nombreArchivoLógico es el nombre que se utiliza para hacer referencia al archivo en

las instrucciones Transact-SQL.

Page 17: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 16

El nombre de archivo lógico tiene que cumplir las reglas de los identificadores de SQL

Server y tiene que ser único en la base de datos.

nombreArchivoSO es el nombre del archivo físico en el sistema operativo.

Reglas para la definición de archivos o grupos de archivos

Éstas son, entre otras, las reglas para la definición de archivos y grupos de archivos:

Un archivo o un grupo de archivos no puede ser utilizado por más de una base

de datos. Por ejemplo, los archivos ventas.mdf y ventas.ndf, que contienen datos

y objetos de la base de datos ventas, no pueden ser utilizados por otra base de

datos.

Un archivo puede pertenecer únicamente a un grupo de archivos.

Los datos y la información del registro de transacciones no pueden pertenecer al

mismo archivo o grupo de archivos.

Los archivos del registro de transacciones nunca pueden formar parte de un

grupo de archivos.

3. CREACION DE BASE DE DATOS

Objetivo:

Al finalizar el tema, el participante será capaz de crear Bases de Datos y configurar las

diferentes opciones de almacenamiento.

Consideraciones acerca del diseño de bases de datos

Page 18: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 17

Para diseñar una base de datos es preciso comprender las funciones empresariales

que desee modelar y los conceptos y características de las bases de datos que se

utilizan para representar esas funciones empresariales.

Es importante diseñar una base de datos para modelar con precisión las funciones

empresariales, dado que la modificación posterior del diseño de una base de datos ya

implementada puede ser muy laboriosa. Por otra parte, una base de datos bien

diseñada ofrecerá un mejor rendimiento.

Cuando diseñe una base de datos, considere lo siguiente:

La finalidad de la base de datos y cómo afecta al diseño. Cree un plan para la

base de datos que se ajuste a esa finalidad.

Las reglas de normalización de la base de datos para evitar errores en el diseño

de la base de datos.

La protección de la integridad de los datos.

Los requisitos de seguridad de la base de datos y los permisos de los usuarios.

Los requisitos de rendimiento de la aplicación. Deberá asegurarse de que el

diseño de la base de datos aprovecha las posibilidades que ofrece Microsoft®

SQL Server™ para aumentar el rendimiento. El equilibrio entre el tamaño de la

base de datos y la configuración del hardware es también importante de cara al

rendimiento.

El mantenimiento.

La estimación del tamaño de la base de datos.

Revisar los valores predeterminados

Se observara como funciona los valores predeterminados en cada nivel de jerarquía de

denominación

[NombreDeServidor.NombreDeBasedeDatos.NombreDeEsquema.NombreDeObjeto]:

Nombre de objeto: no existe un nombre de objeto predeterminado; tendremos

que suministrar uno

Propiedad: se puede omitir, en cuyo caso se resolverá utilizando primero el

nombre del usuario actual y posteriormente si el nombre del objeto en cuestión

Page 19: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 18

no existe con el usuario actual como propietario, probará con el dbo como

propietario.

Nombre de la base de datos: este nombre también se puede omitir a no ser

que estemos proporcionando un nombre de servidor, en cuyo caso tendremos

que proporcionar el nombre de la base de datos para los servidores SQL Server

(otros tipos de servidores pueden variar dependiendo del tipo específico del

mismo).

Nombre del Servidor: aquí podemos proporcionar el nombre del servidor

vinculado pero normalmente lo omitiremos para que SQL Server sea el valor

predeterminado para el servidor en el que iniciemos la sesión

CREATE DATABESE

Crea una nueva base de datos y los archivos que se utilizan para almacenar la base de

datos o adjunta una base de datos desde los archivos de una base de datos creada

anteriormente.

CREATE DATABASE <database name> [ON [PRIMARY]

([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in kilobytes, megabytes, gigabytes, or terabytes>] [, MAXSIZE = size in kilobytes, megabytes, gigabytes, or terabytes>] [, FILEGROWTH = <kilobytes, megabytes, gigabytes, or terabytes|percentage>])]

[LOG ON ([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in kilobytes, megabytes, gigabytes, or terabytes>] [, MAXSIZE = size in kilobytes, megabytes, gigabytes, or terabytes>] [, FILEGROWTH = <kilobytes, megabytes, gigabytes, or terabytes|percentage>])]

[ COLLATE <collation name> ] [ FOR ATTACH [WITH <service broker>]| FOR ATTACH_REBUILD_LOG| WITH DB_CHAINING ON|OFF | TRUSTWORTHY ON|OFF] [AS SNAPSHOT OF <source database name>] [;]

ON

Page 20: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 19

ON se utiliza en dos sitios para definir la ubicación del archivo donde se almacenan los

datos y para definir la misma información para el lugar donde se guarda el registro.

Advertirá aquí la inclusión de la palabra clave PRIMARY, que indica que lo que sigue

es un grupo de archivos primarios (o principales) en el que se guarda físicamente los

datos. También podemos guardar datos en los denominados grupos de archivos

secundarios.

NAME

Este es el nombre del archivo que se está definiendo, pero solo es un nombre lógico,

es decir, el nombre que va a utilizar SQL Server internamente para hacer referencia a

dicho archivo.

FILENAME

Este es el nombre físico del disco del archivo del sistema operativo real en que se van

a guardar los datos y el registro (dependiendo de qué sección se está definiendo).

SIZE

Es el tamaño de la base de datos. De forma que predeterminada, el tamaño se

proporciona en megabytes, pero también podemos hacer que se proporcione en

kilobytes utilizando KB en lugar de MB tras el valor numérico del tamaño; también se

puede utilizar el tamaño mucho mayor con GB (gigabytes) o incluso en TB (terabytes).

Se tendrá que tomar en cuenta que este valor debe ser, al menos tan alto como el de la

base de datos model y debe de ser un número entero (sin decimales); en caso

contrario se dará un error. Si no suministramos un valor para SIZE, la base de datos

tendrá inicialmente el mismo tamaño que el de la base de datos model.

MAXSIZE

Este parámetro es una pequeña variante del parámetro SIZE. SQL Server tiene un

mecanismo que permite a la base de datos asignar automáticamente un espacio en el

disco adicional (para crecer) cuando sea necesario. MAXSIZE es el tamaño máximo al

que puede crecer la base de datos. Una vez más, de forma predeterminada se

Page 21: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 20

proporciona en megabytes, como SIZE, pero se puede utilizar KB, GB o TB para

emplear cantidades de incremento diferentes. Si no se suministra un valor

predeterminado para este parámetro, se considera que no existe un máximo (el

máximo practico se alcanzará cuando nuestra unidad de disco duro este llena).

FILEGROWTH

Mientras SIZE establece el tamaño inicial de la base de datos y MAXSIZE determina

exactamente el tamaño máximo que puede llegar a tener el archivo de la base de

datos, FILEGROWTH determina básicamente el incremente del crecimiento con que

puede llegar a dicho máximo. Para ello, proporcionamos un valor indicando por cuantos

bytes (en KB,MB,GB o TB) a la vez se requiere aumentar el archivo. Alternativamente

se puede proporcionar un valor de porcentaje para el que requiere que se incremente el

archivo de la base de datos. Con esta opción, el tamaño aumentará en el porcentaje

establecido del tamaño del archivo de la base de datos. Por consiguiente, si establece

un archivo de base de datos para que cuando llegue a 1GB incremente un valor de

FILEGROWTH de un 20%, la primera vez que se expanda, aumentara hasta 1.2GB, la

segunda vez hasta 1.44 y así sucesivamente.

LOG ON

Esta opción permite establecer que el registro se dirija a un conjunto especifico de

archives y donde ubicar exactamente dichos archivos. Si no se proporciona esta

opción, SQL Server creara el registro en un solo archivo y lo predeterminara para que

tenga un tamaño igual al 25% del tamaño del archivo de datos.

COLLATE

Esta opción tiene que ver con el problema de la ordenación, las mayúsculas y

minúsculas y los acentos. Al instalar SQL Server, se decide sobre cuál es la

Page 22: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 21

intercalación predeterminada, pero puede sobrescribir este parámetro a nivel de base

de datos.

FOR ATTACH

Se podrá utilizar esta opción para agregar un conjunto de archivos de base de datos

existentes al servidor actual. Los archivos en cuestión tiene que formar parte de una

base de datos que, en algún momento, se haya separado correctamente utilizando

sp_detach_db. Normalmente se podrá utilizar sp_attach_db para obtener la

funcionalidad, pero el comando CREATE DATABESE con FOR ATTACH tiene la

ventaja de poder acceder a mas de 32,000 archivos (sp_attach_db se limita a 16). Si

utiliza FOR ATTACH tiene que completar la parte ON PRIMARY de la información de

ubicación del archivo.

TRUSTWORTHY

Este modificador es nuevo y añade una capa de seguridad adicional alrededor del

acceso a los recursos y archivos del sistema fuera del contexto de SQL Server. Por

ejemplo se puede ejecutar un montaje .NET que toque archivos que se encuentran en

la Red; en este caso, se tendrá que identificar la base de datos que forma parte del

montaje como si fuese de total confianza.

Ver una base de datos

Puede ver la definición de una base de datos y su configuración cuando esté

solucionando problemas o considerando la realización de cambios en la base de datos.

Para ver una base de datos (Transact-SQL)

sp_helpdb (T-SQL)

Page 23: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 22

Presenta información acerca de una base de datos especificada o de todas las bases

de datos.

Sintaxis

sp_helpdb [[@dbname=] 'nombre']

Argumentos

[@dbname=] 'nombre'

Es el nombre de la base de datos cuya información se va a presentar. El argumento

nombre es de tipo sysname y no tiene valor predeterminado. Si no se especifica

nombre, sp_helpdb devuelve información acerca de todas las bases de datos de

master.dbo.sysdatabases.

Cómo ver una base de datos (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y, a continuación, haga clic en la base de datos que

desee ver.

Haga clic en Tablas e índices, vistas, etc para ver más información acerca de

la base de datos.

Page 24: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 23

Ejemplos para crear una Base de Datos

Crear una base de datos que especifique los archivos de registro de datos y de

transacciones

Este ejemplo crea una base de datos denominada Ventas. Debido a que la palabra

clave PRIMARY no se utiliza, el primer archivo (Sales_dat) se convierte en el archivo

principal. Porque ni MB o KB se especifica en el parámetro TAMAÑO Sales_dat para el

archivo, por defecto toma MB y se asigna en megabytes. El archivo Sales_log se

asigna en megabytes MB debido a que el sufijo es explícitamente en el parámetro

TAMAÑO.

USE master GO CREATE DATABASE Sales ON

Page 25: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 24

( NAME = Sales_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON (NAME = 'Sales_log', FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO

Crear una base de datos mediante la especificación de múltiples archivos de

registro de datos y de transacciones

Este ejemplo crea una base de datos llamada Archive con tres archivos de datos de

100 MB y dos archivos de registro de transacciones de 100 MB. El archivo principal es

el primer archivo de la lista y se especifica explícitamente con la palabra clave

PRIMARY. Los archivos de registro de transacciones se especifican a continuación de

las palabras clave LOG ON. Observe las extensiones que se emplean para los archivos

de la opción FILENAME: .mdf se utiliza para los archivos principales, .ndf para

USE master GO CREATE DATABASE Archive ON PRIMARY (NAME = Arch1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Arch2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Arch3, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat3.ndf', SIZE = 100MB,

Page 26: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 25

MAXSIZE = 200, FILEGROWTH = 20) LOG ON (NAME = Archlog1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Archlog2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\archlog2.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) GO

Crear una base de datos individual

En este ejemplo se crea una base de datos llamada Products y se especifica un único

archivo. De forma predeterminada, el archivo especificado se convierte en el archivo

principal; se crea automáticamente un archivo de registro de transacciones de 1 MB.

Como no se especifica MB ni KB en el parámetro SIZE del archivo principal, el tamaño

del archivo principal se asigna en megabytes. Ya que no existe <filespec> para el

archivo de registro de transacciones, éste no tiene MAXSIZE y puede crecer hasta

llenar todo el espacio disponible en el disco.

USE master GO CREATE DATABASE Products ON (NAME = prods_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO

Page 27: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 26

Crear una base de datos sin especificar los archivos

Este ejemplo crea una base de datos llamada mytest y crea los archivos principal y de

registro de transacciones correspondientes. Debido a que la instrucción no tiene

elementos <filespec>, el archivo principal de la base de datos tiene el tamaño del

archivo principal de la base de datos model. El registro de transacciones tiene el

tamaño del archivo del registro de transacciones de la base de datos model. Como no

se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio

disponible en disco.

CREATE DATABASE mytest Crear una base de datos sin especificar SIZE

Este ejemplo crea una base de datos llamada products2. De forma predeterminada, el

archivo prods2_dat se convierte en el archivo principal, con un tamaño igual al tamaño

del archivo principal de la base de datos model. El archivo de registro de transacciones

se crea automáticamente y es un 25 por ciento del tamaño del archivo principal, o 512

KB, el que sea mayor. Como no se ha especificado MAXSIZE, los archivos pueden

crecer hasta llenar todo el espacio disponible en disco.

USE master GO CREATE DATABASE Products2 ON ( NAME = prods2_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods2.mdf' ) GO

Page 28: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 27

GUIA PRACTICA NO.1

Para los siguientes ejercicios, desarrolle cada uno utilizando el Query Analizer

(Analizador de Consultas)

1. Complete la siguiente información para la Base de Datos Model

Tamaño Total de la Base de Datos Model : __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones : _____________________________________________________

2. Crear una Base de Datos “Prueba1” sin especificar ninguna opción más que la

Sentencia Create Database.

Tamaño Total de la Base de Datos: __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones: _____________________________________________________

3. El tamaño de la Base de datos creada en el ejercicio anterior es igual a la Base

de Datos Model ? ¿Por qué ?

4. Haga los siguientes directorios de trabajo :

C:\Datos y C:\Log

5. Crear una Base de Datos “Prueba2” especificando los siguientes datos :

Archivo Físico de Datos: C:\Datos\prueba2.mdf” Nombre Lógico de Datos: Prueba2 Tamaño: 2MB

6. Obtener la Información de la Base de Datos “Prueba2”

Tamaño Total de la Base de Datos: __________________ Nombre Lógico del Archivo de Datos : ______________________ Nombre Físico Completo de Datos : ________________________ Nombre Lógico del Archivo de Transacciones : ________________ Nombre Físico Completo del Archivo de Transacciones: _____________________________________________________

Page 29: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 28

7. Para la Base de Datos creada en el ejercicio No.5, ¿Porqué tiene Archivo de

Transacciones sino se específico uno en la Sentencia T-SQL?

8. Crear una Base de Datos “Prueba3” especificando los siguientes datos :

Archivo Físico de Datos : C:\Datos\prueba3.mdf Nombre Lógico : Prueba3 Tamaño : 1MB Archivo Físico de Transacciones : C:\Log\prueba3.ldf Nombre Lógico : LogPrueba3 Tamaño Máximo : 5.5MB

9. Crear una Base de Datos “Prueba4” especificando los siguientes datos :

Archivo Físico de Datos : C:\Datos\prueba4.mdf

Nombre Lógico : Prueba4 Tamaño : 2.5MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\prueba4.ldf Nombre Lógico : LogPrueba4 Tamaño: 2MB

10. Crear una Base de Datos “Prueba5” especificando los siguientes datos :

Archivo Físico de Datos : C:\Datos\prueba5.mdf

Nombre Lógico : Prueba5 Tamaño : 2.5MB Máximo Tamaño : 5MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\prueba5.ldf Nombre Lógico : LogPrueba5 Tamaño: 2MB Máximo Tamaño : 5MB Autocrecimiento : 1MB

11. Se implementará una Base de Datos para el área de Recursos Humanos. Se

requiere que tanto los Archivos de Datos como los archivos del Log de

Transacciones estén en el mismo directorio pero en diferente lugar al de

Microsoft SQL Server. Para los datos se ha decidido montar la Base en tres

diferentes archivos de 2MB sin límite de Tamaño y que crezcan

Page 30: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 29

automáticamente en un 5%. Para el Log de Transacciones el tamaño es

indiferente pero no tiene que pasar de los 5MB ( Un solo archivo ).

12. Crear los siguientes Directorios : C:\VentasDat1, C:\VentasDat2, C:\VentasDat3

y C:\VentasLog.

Crear una Base de Datos “Ventas” , esta tendrá tres archivos de datos y uno

para el Log de Transacciones ubicados en los directorios anteriormente creados.

Para cada archivo de datos se especificaran las siguientes opciones : Tamaño

2MB , Tamaño Máximo : 5MB, Autocrecimiento del 5%. Para el archivo de

transacciones el tamaño es de 5MB con un autocrecimiento del 2MB.

Tomar en cuenta que el archivo de datos ubicados en la carpeta C:\VentasDat1

y C:\VentasDat2 se agruparan en “VtasGrupo1” y el que se ubique en

C:\VentasDat3 se agrupara en “VtasGrupo2”

Crear una base de datos desde el Administrador Corporativo

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Haga clic con el botón secundario del mouse (ratón) en Bases de datos y, a

continuación, haga clic en Nueva base de datos…

Escriba un nombre para la nueva base de datos. Los archivos del registro de

transacciones y de la base de datos principal se crean utilizando el nombre de

base de datos que ha especificado como prefijo, por ejemplo, newdb_Data.mdf y

newwdb_Log.ldf. Los tamaños iníciales de estos archivos son los mismos que

los tamaños predeterminados especificados para la base de datos model. El

archivo principal contiene las tablas del sistema para la base de datos.

Para cambiar los valores predeterminados proporcionados en las columnas

Nombre de archivo, Ubicación, Tamaño inicial (MB) y Grupo de archivos (no

aplicable para el registro de transacciones), haga clic en la celda apropiada para

cambiar y escribir el nuevo valor.

Para especificar cómo debe crecer el archivo, haga clic en una de estas

opciones:

Page 31: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 30

o Para permitir que el archivo actualmente seleccionado crezca cuando sea

necesario más espacio para los datos, haga clic en Crecimiento

automático del archivo.

o Para especificar que el archivo debe crecer en incrementos fijos, haga clic

en En megabytes y especifique un valor.

o Para especificar que el archivo debe crecer en un porcentaje de su

tamaño actual, haga clic en Por porcentaje y especifique un valor.

Para especificar el límite de tamaño del archivo, seleccione una de estas

opciones:

o Para permitir que el archivo crezca tanto como sea necesario, haga clic

en Crecimiento de archivos sin restricciones.

o Para especificar el tamaño máximo que se debe permitir que alcance el

archivo, haga clic en Restringir crecimiento de archivos (MB) y

especifique un valor.

Page 32: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 31

GUIA PRACTICA NO.2

Realice los Ejercicios del No.8 al No.12 de la Guía No.1 utilizando el Administrador

Corporativo, para que no existan problemas de Nombres en las Bases de Datos y

archivos, anteponga a cada uno de ellos “Adm”.

Para crear una base de datos con el Asistente para creación de bases de datos

Expanda un grupo de servidores y, a continuación, el servidor en el que va a

crear la base de datos.

Expanda Base de datos.

Haga clic con el botón secundario del mouse (ratón) en Bases de datos y, a

continuación, haga clic en Nueva base de datos…

Complete los pasos del asistente.

GUIA PRACTICA NO.3

Realice los Ejercicios del No.11 al No. 12 de la Guía No.1 utilizando el Asistente para

Creación de Bases de Datos, para que no existan problemas de Nombres en las

Bases de Datos y archivos, anteponga a cada uno de ellos “PRB”

Page 33: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 32

Modificar una base de datos

Después de crear una base de datos, es posible cambiar su definición original. Entre

otros cambios, pueden realizarse los siguientes:

Ampliar el espacio asignado en la base de datos para el registro de

transacciones o para los datos.

Reducir el espacio asignado en la base de datos para el registro de

transacciones y los datos.

Agregar o quitar archivos de datos y de registro de transacciones.

Crear grupos de archivos.

Cambiar el grupo de archivos predeterminado.

Cambiar la configuración de la base de datos.

Cambiar el nombre de la base de datos.

Para aumentar el tamaño de una base de datos (Transact-SQL)

ALTER DATABASE (T-SQL)

Agrega o quita archivos y grupos de archivos de una base de datos. También se puede

usar para modificar los atributos de los archivos o grupos de archivos, por ejemplo para

cambiar el nombre o el tamaño de un archivo.

Sintaxis

ALTER DATABASE <database name> ADD FILE

([NAME = <’logical file name’>,] FILENAME = <’file name’> [, SIZE = <size in KB, MB, GB or TB>] [, MAXSIZE = < size in KB, MB, GB or TB >] [, FILEGROWTH = <No of KB, MB, GB or TB |percentage>]) [,...n] [ TO FILEGROUP filegroup_name]

[, OFFLINE ] |ADD LOG FILE

([NAME = <’logical file name’>,]

Page 34: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 33

FILENAME = <’file name’> [, SIZE = < size in KB, MB, GB or TB >] [, MAXSIZE = < size in KB, MB, GB or TB >] [, FILEGROWTH = <No KB, MB, GB or TB |percentage>])

|REMOVE FILE <logical file name> [WITH DELETE] |ADD FILEGROUP <filegroup name> |REMOVE FILEGROUP <filegroup name> |MODIFY FILE <filespec> |MODIFY NAME = <new dbname> |MODIFY FILEGROUP <filegroup name> {<filegroup property>|NAME = <new filegroup name>} |SET <optionspec> [,...n ][WITH <termination>] |COLLATE <collation name>

Argumentos

base de datos

Es el nombre de la base de datos que se está cambiando.

ADD FILE

Especifica que se está agregando un archivo.

TO FILEGROUP

Especifica el grupo de archivos al que debe agregarse el archivo especificado.

nombreGrupoArchivos

Es el nombre del grupo de archivos al que se va a agregar el archivo especificado.

ADD LOG FILE

Especifica que se agregue un archivo de registro a la base de datos indicada.

REMOVE FILE

Quita la descripción del archivo de las tablas del sistema de base de datos y elimina el

archivo físico. El archivo no puede eliminarse a menos que esté vacío.

ADD FILEGROUP

Page 35: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 34

Especifica que se va a agregar un grupo de archivos.

nombreGrupoArchivos

Es el nombre del grupo de archivos que se va a agregar o quitar.

REMOVE FILEGROUP

Quita el grupo de archivos de la base de datos y elimina todos los archivos del grupo

de archivos. El grupo de archivos no se puede eliminar a menos que esté vacío.

MODIFY FILE

Especifica que el archivo dado se debe modificar, incluidas las opciones FILENAME,

SIZE, FILEGROWTH y MAXSIZE. Sólo se puede cambiar una de estas propiedades a

la vez. NAME debe especificarse en <filespec> para identificar el archivo que debe

modificarse. Si se especifica SIZE, el nuevo tamaño debe ser mayor que el tamaño

actual del archivo. FILENAME sólo puede especificarse para los archivos de la base de

datos tempdb y el nombre nuevo no surte efecto hasta que se reinicie Microsoft® SQL

Server™.

MODIFY FILEGROUP nombreGrupoArchivos propiedadGrupoArchivos

Especifica que la propiedad de grupo de archivos dada se aplique al grupo de archivos.

Los valores de propiedadGrupoArchivos son:

READONLY

Especifica que el grupo de archivos es de sólo lectura. No se permite la actualización a

los objetos del mismo. El grupo de archivos principal no se puede hacer de sólo lectura.

Sólo los usuarios que tengan acceso exclusivo a la base de datos pueden marcar un

grupo de archivos como de sólo lectura.

READWRITE

Page 36: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 35

Invierte la propiedad READONLY. Están habilitadas las actualizaciones para los

objetos del grupo de archivos. Sólo los usuarios que tengan acceso exclusivo a la base

de datos pueden marcar un grupo de archivos como de lectura y escritura.

DEFAULT

Especifica que el grupo de archivos es el grupo de archivos predeterminado de la base

de datos. En una base de datos, sólo un grupo de archivos puede ser el

predeterminado. Cuando hace que un grupo de archivos sea el grupo de archivos

predeterminado, la propiedad predeterminada se quita del grupo de archivos que había

sido anteriormente el predeterminado. CREATE DATABASE hace que el grupo de

archivos principal sea el grupo de archivos predeterminado inicial. Si no se especifica

ningún grupo de archivos en las instrucciones CREATE TABLE, ALTER TABLE o

CREATE INDEX, se crean nuevas tablas e índices en el grupo de archivos

predeterminado.

NAME

Especifica un nombre lógico para el archivo.

nombreArchivoLógico

Es el nombre que se utiliza en Microsoft SQL Server cuando se hace referencia al

archivo. El nombre debe ser exclusivo en el servidor y se debe ajustar a las reglas de

los identificadores. El nombre puede ser una constante de caracteres o Unicode, un

identificador regular o un identificador delimitado.

FILENAME

Especifica un nombre de archivo del sistema operativo. Cuando se emplea con

MODIFY FILE, FILENAME sólo se puede especificar para los archivos de la base de

datos tempdb. El nuevo nombre de archivo tempdb sólo surte efecto después de que

SQL Server se haya detenido y reiniciado.

'nombreArchivoSo'

Page 37: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 36

Es la ruta de acceso y el nombre de archivo que el sistema operativo utiliza para el

archivo. El archivo debe residir en el servidor donde esté instalado SQL Server. Los

archivos de datos y de registro no se pueden colocar en sistemas comprimidos de

archivos.

Si el archivo se encuentra en una partición sin formato, nombreArchivoSo sólo debe

indicar la letra de la unidad de una partición sin formato existente. En cada partición sin

formato sólo se puede colocar un archivo. Los archivos de las particiones sin formato

no aumentan automáticamente; por tanto, los parámetros MAXSIZE y FILEGROWTH

no son necesarios cuando nombreArchivoSo especifica una partición sin formato.

SIZE

Especifica el tamaño del archivo.

tamaño

Es el tamaño del archivo. Los sufijos MB y KB se pueden utilizar para especificar

megabytes o kilobytes. El valor predeterminado es MB. Especifique un número entero y

no incluya decimales. El valor mínimo permitido de tamaño es 512KB y si tamaño no se

especifica, el valor predeterminado es 1 MB. Cuando se especifica con ADD FILE,

tamaño es el tamaño inicial del archivo. Cuando se especifica con MODIFY FILE,

tamaño es el nuevo tamaño del archivo y debe ser mayor que el tamaño actual del

archivo.

MAXSIZE

Especifica el tamaño máximo que se permite que alcance el archivo.

tamañoMáximo

Es el tamaño máximo que puede alcanzar el archivo. Los sufijos MB y KB se pueden

utilizar para especificar megabytes o kilobytes. El valor predeterminado es MB.

Especifique un número entero y no incluya decimales. Si no se especifica

tamañoArchivo, el archivo aumentará de tamaño hasta que el disco esté lleno. El

Page 38: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 37

registro de la aplicación de Microsoft Windows NT® avisa a un administrador cuando

un disco esté a punto de llenarse.

UNLIMITED

Especifica que el tamaño del archivo aumentará hasta que el disco esté lleno.

FILEGROWTH

Especifica el incremento de tamaño del archivo.

incrementoCrecimiento

Es la cantidad de espacio que se agrega al archivo cada vez que se necesita espacio.

Un valor 0 indica que no hay aumento de tamaño. El valor se puede especificar en MB,

KB o %. Especifique un número entero y no incluya decimales. Cuando se especifica

%, el tamaño de incremento de crecimiento es el porcentaje especificado del tamaño

del archivo en el momento en que tiene lugar el incremento. Si se especifica un número

sin los sufijos MB, KB o %, el valor predeterminado es MB. Si FILEGROWTH no se

especifica, el valor predeterminado es 10% y el valor mínimo es 64K. El tamaño

especificado se redondea al múltiplo de 64 KB más cercano.

Agregar o quitar un archivo de registro o de datos invalida una cadena existente de

registros de copia de seguridad. Si el plan de copias de seguridad y restauración

incluye copias de seguridad de los registros, ejecute una instrucción BACKUP

DATABASE para iniciar una nueva secuencia de copias de seguridad de los registros

inmediatamente después de que se complete la instrucción ALTER DATABASE.

Para especificar una fracción de un megabyte en los parámetros de tamaño, convierta

el valor a kilobytes; para ello, multiplique el número por 1024. Por ejemplo, especifique

1536 KB en vez de 1,5 MB (1,5 x 1024 = 1536).

Agregar un archivo a una base de datos

Page 39: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 38

El ejemplo siguiente crea una base de datos y la modifica para agregarle un nuevo

archivo de datos de 5 MB.

Creación Base de Datos

USE master

GO

CREATE DATABASE Test1 ON

(

NAME = Test1dat1, FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat1.ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB

)

GO

Modificación Base de Datos

ALTER DATABASE Test1

ADD FILE

(

NAME = Test1dat2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat2.ndf',

SIZE = 5MB,

MAXSIZE = 100MB,

FILEGROWTH = 5MB

)

GO

Agregar un grupo de archivos con dos archivos a una base de datos

El ejemplo siguiente crea un grupo de archivos en la base de datos Test 1 creada en el

ejemplo A y agrega dos archivos de 5 MB al grupo de archivos. A continuación, hace

que Test1FG1 sea el grupo de archivos predeterminado.

USE master GO ALTER DATABASE Test1 ADD FILEGROUP Test1FG1 GO ALTER DATABASE Test1 ADD FILE ( NAME = test1dat3,

Page 40: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 39

FILENAME = 'c:\program files\microsoft sql server\mssql\data\t1dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1dat4, FILENAME = 'c'c:\program files\microsoft sql server\mssql\data\t1dat4.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TO FILEGROUP Test1FG1 ALTER DATABASE Test1 MODIFY FILEGROUP Test1FG1 DEFAULT GO

Agregar dos archivos de registro a una base de datos

El ejemplo siguiente agrega dos archivos de registro de 5 MB a una base de datos.

USE master GO ALTER DATABASE Test1 ADD LOG FILE ( NAME = test1log2, FILENAME = 'c:\program files\microsoft sql server\mssql\data\test2log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1log3, FILENAME = 'c:\program files\microsoft sql server\mssql\data\test3log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) GO Quitar un archivo de una base de datos

El ejemplo siguiente quita uno de los archivos agregados a la base de datos Test1 en

el ejemplo B.

USE master GO ALTER DATABASE Test1 REMOVE FILE test1dat4 GO

Page 41: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 40

Modificar un archivo

El ejemplo siguiente aumenta el tamaño de uno de los archivos agregados a la base de

datos Test1 en el ejemplo B.

USE master GO ALTER DATABASE Test1 MODIFY FILE (NAME = test1dat3, SIZE = 20MB) GO Hacer que el grupo de archivos principal sea el predeterminado

En este ejemplo se convierte el grupo de archivos principal en el predeterminado si

algún otro grupo de archivos se convirtió en el predeterminado anteriormente.

USE master GO

ALTER DATABASE Test1 MODIFY FILEGROUP [PRIMARY] DEFAULT GO

Page 42: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 41

GUIA PRACTICA NO.4

Para los siguientes ejercicios, desarrolle cada uno utilizando el Query

Analizer (Analizador de Consultas)

1. Para la Base de Datos “Prueba3” creada en el ejercicio No. 8 de la Guía No.1,

agregar un archivo de Datos con las siguientes especificaciones :

Archivo Físico de Datos: C:\Datos\prueba3.ndf

Nombre Lógico: Prueba3Dat2

Tamaño: 1MB

2. Para la Base de Datos “Prueba4” creada en el Ejercicio No. 9 de la Guía No.1,

modificar el Archivo de Transacciones para que tenga un tamaño máximo de

5MB

3. Para la Base de Datos “Prueba5” creada en el Ejercicio No.10 de la Guía No.1,

agregar una Archivo de Datos y uno para el Log de Transacciones usando la

misma información del ejercicio No.10.

4. Obtenga la información de la Base de Datos creada en el Ejercicio No.11 de la

Guía No.1, Tamaño Total de la Base de Datos, Archivos de Datos y Archivo de

Transacciones.

5. Para la Base de datos creada en el ejercicio No. 11 de la Guía No.1, elimine un

archivo de Datos ( Usando Transact-SQL)

6. Verifique nuevamente el Tamaño de la Base de Datos del ejercicio No.11 de la

Guía No.1. ¿Cambio el Tamaño?, ¿Verifique si existe el archivo físico de la Base

de datos usando el explorador de Windows?

7. Para la Base de Datos creada en el ejercicio No.12 de la Guía No.1, agregue

dos archivos de datos de 2MB en el Grupo “VtasGrupo2”

Page 43: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 42

Aumentar el tamaño de Base de Datos utilizando el Administrador Corporativo

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, haga clic con el botón secundario del mouse en la

base de datos cuyo tamaño desea aumentar y, a continuación, haga clic en

Propiedades.

Para aumentar el espacio para los datos, haga clic en la opción Archivo. Para

aumentar el espacio para el registro de transacciones, haga clic en el archivo de

autogrowth.

Para agregar un archivo nuevo, haga clic en la siguiente fila vacía y, en la

columna Nombre de archivo, escriba el nombre del archivo que va a contener

el espacio adicional.

La ubicación del archivo se genera automáticamente y se asigna el sufijo .NDF

para un archivo de la base de datos o .LDF para un archivo del registro de

transacciones.

Para cambiar los valores predeterminados proporcionados en las columnas

Nombre de archivo, Ubicación, Espacio asignado (MB) y Grupo de archivos

(no aplicable para el registro de transacciones), haga clic en la celda apropiada

para cambiar y escribir el nuevo valor.

Para archivos existentes, sólo se puede cambiar el valor de Espacio asignado

(MB); el nuevo valor debe ser mayor que el valor existente.

Para especificar cómo debe crecer el archivo, haga clic en una de estas

opciones:

o Para permitir que el archivo actualmente seleccionado crezca cuando sea

necesario más espacio para los datos, haga clic en Crecimiento

automático del archivo.

o Para especificar que el archivo debe crecer en incrementos fijos, haga clic

en En megabytes y especifique un valor.

o Para especificar que el archivo debe crecer en un porcentaje de su

tamaño actual, haga clic en Por porcentaje y especifique un valor.

Page 44: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 43

Para especificar el límite de tamaño del archivo, haga clic en una de estas

opciones:

o Para que el archivo crezca tanto como sea necesario, haga clic en

Crecimiento de archivos sin restricciones.

Para especificar el tamaño máximo que se debe permitir que alcance el archivo, haga

clic en Restringir crecimiento de archivos (MB) y especifique un valor.

Page 45: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 44

GUIA PRACTICA NO.5

Realice los Ejercicios de la Guía anterior utilizando el Administrador Corporativo, para

que no exista conflictos con los nombres cámbielos cuando sea necesario.

Reducir la base de datos (Transact-SQL)

DBCC SHRINKDATABASE (T-SQL)

Reduce el tamaño de los archivos de datos de la base de datos especificada.

Sintaxis

DBCC SHRINKDATABASE ( nombreBaseDatos [, porcentajeFinal] [, {NOTRUNCATE | TRUNCATEONLY}] ) Argumentos

nombreBaseDatos

Es el nombre de la base de datos que se va a reducir. Los nombres de las bases de

datos se deben ajustar a las reglas para los identificadores. porcentajeFinal

Es el porcentaje de espacio libre que se desea dejar en el archivo de la base de datos

después de reducir la base de datos.

NOTRUNCATE

Hace que el espacio de archivos liberado se retenga en los archivos de base de datos.

Si no se especifica, el espacio liberado del archivo pasa al sistema operativo.

TRUNCATEONLY

Hace que se libere cualquier espacio no utilizado de los archivos de datos para su

utilización por el sistema operativo y reduce el archivo a la última magnitud asignada, lo

que reduce el tamaño del archivo sin mover los datos. No se vuelven a asignar las

Page 46: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 45

páginas desasignadas. Cuando se utiliza TRUNCATEONLY, no se tiene en cuenta

porcentajeFinal.

Suponga que una base de datos llamada mydb tiene dos archivos de datos y dos

archivos de registro. El tamaño de los archivos de datos y de registro es de 10 MB. El

primer archivo de datos contiene 6 MB.

En cada archivo, SQL Server calcula el tamaño final, que es tamaño al que se va a

reducir el archivo. Cuando DBCC SHRINKDATABASE se especifica con

porcentajeFinal, SQL Server calcula el tamaño final para que quede porcentajeFinal de

espacio libre en el archivo tras la reducción. Por ejemplo, si especifica un

porcentajeFinal de 25 para reducir mydb. SQL Server calcula el tamaño final del

archivo como 8 MB (6 MB de datos más 2 MB de espacio libre). Por tanto, SQL Server

pasa los datos de los últimos 2 MB del archivo de datos al espacio libre de los primeros

8 MB del archivo de datos y, a continuación, reduce el archivo.

Suponga que el primer archivo de datos de mydb contiene 7 MB de datos. La

especificación de porcentajeFinal como 30 permite que este archivo de datos sea

reducido y mantenga un porcentaje de espacio libre del treinta por ciento. Sin embargo,

la especificación de porcentajeFinal como 40 no reduce el archivo de datos porque

SQL Server no comprime un archivo a un tamaño menor que el ocupado por los datos.

Este aspecto también se puede ver de otro modo: cuarenta por ciento de espacio libre

más setenta por ciento de datos en el archivo (7 MB de 10 MB) es mayor que cien por

ciento. Como el porcentaje de espacio libre deseado más el porcentaje actual ocupado

por los datos supera el cien por ciento (un diez por ciento más), con un porcentajeFinal

superior a treinta no se reducirá el archivo de datos.

En los archivos de registro, SQL Server utiliza porcentajeFinal para calcular el tamaño

final de todo el registro de forma que porcentajeFinal sea la cantidad de espacio libre

del registro después de la operación de reducción. El tamaño final de todo el registro se

traduce, entonces, en el tamaño final de cada archivo de registro. Al contrario que los

archivos de datos, la reducción de los archivos de registro no es inmediata. Cada

archivo de registro se marca con el tamaño final de la operación de reducción. Las

Page 47: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 46

siguientes operaciones de copia de seguridad o truncamiento del registro intentan

reducir el tamaño del archivo y dejarlo en el valor más próximo posible al tamaño final.

Como un archivo de registro sólo puede reducirse al límite de un archivo de registro

virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de

registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un

archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a

sólo 128 MB.

El tamaño final de los archivos de datos y de registro calculado por DBCC

SHRINKDATABASE nunca puede ser menor que el tamaño mínimo de un archivo. El

tamaño mínimo de un archivo es el tamaño especificado cuando se creó el archivo, o el

último tamaño establecido explícitamente mediante una operación de modificación del

tamaño del archivo, como ALTER DATABASE con la opción MODIFY FILE o DBCC

SHRINKFILE. Por ejemplo, si al ejecutar CREATE DATABASE se especificó que el

tamaño de todos los archivos de datos y de registro de mydb fuera 10 MB, el tamaño

mínimo de cada archivo es 10 MB. DBCC SHRINKDATABASE no puede reducir

ninguno de los archivos a un tamaño menor que 10 MB. Si el tamaño de uno de los

archivos ha sido aumentado explícitamente a 20 MB mediante ALTER DATABASE con

la opción MODIFY FILE, el nuevo tamaño mínimo del archivo es 20 MB. Para reducir el

tamaño de un archivo a un tamaño menor que su tamaño mínimo, utilice DBCC

SHRINKFILE y especifique el nuevo tamaño. La ejecución de DBCC SHRINKFILE hace

que el tamaño mínimo del archivo sea el nuevo tamaño especificado.

Cuando se utilizan archivos de datos, DBCC SHRINKDATABASE tiene las opciones

NOTRUNCATE y TRUNCATEONLY. Ambas opciones no tienen efecto en los archivos

de registro. DBCC SHRINKDATABASE sin opciones es equivalente a DBCC

SHRINKDATABASE con la opción NOTRUNCATE seguida de DBCC

SHRINKDATABASE con la opción TRUNCATEONLY.

La opción NOTRUNCATE, con o sin la especificación de porcentajeFinal, ejecuta las

operaciones de paso de datos de DBCC SHRINKDATABASE, incluido el paso de las

páginas asignadas del final del archivo a páginas no asignadas del principio del

Page 48: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 47

archivo. Sin embargo, el espacio libre del final del archivo no se devuelve al sistema

operativo y el tamaño físico del archivo no cambia. Por tanto, cuando se especifica la

opción NOTRUNCATE, no parece que los archivos de datos se hayan reducido. Por

ejemplo, suponga que está utilizando de nuevo la base de datos mydb. mydb tiene

dos archivos de datos y dos archivos de registro. El tamaño del segundo archivo de

datos y el segundo archivo de registro es de 10 MB. Cuando se ejecuta DBCC

SHRINKDATABASE mydb NOTRUNCATE, Microsoft® SQL Server™ pasa los datos

de las últimas páginas a las primeras páginas del archivo de datos. Sin embargo, el

tamaño del archivo sigue siendo 10 MB.

La opción TRUNCATEONLY devuelve el espacio libre del final del archivo al sistema

operativo. Sin embargo, TRUNCATEONLY no mueve páginas dentro del archivo, o los

archivos. El archivo especificado sólo queda reducido hasta la última extensión

asignada. Si se especifica la opción TRUNCATEONLY, no se tiene en cuenta

porcentajeFinal.

La base de datos no puede ser menor que el tamaño de la base de datos model.

La base de datos que se comprime no tiene que estar en modo de usuario único, otros

usuarios pueden estar trabajando en la base de datos cuando ésta se está reduciendo.

Esto incluye las bases de datos del sistema.

Conjuntos de resultados

Cuando sólo se especifica el nombre de la base de datos, DBCC SHRINKDATABASE

devuelve este conjunto de resultados (conjunto de resultados correspondiente a pubs;

los valores pueden variar):

DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages ------ ------ ----------- ----------- ----------- -------------- 5 1 176 96 168 168 5 2 96 63 96 56 (2 row(s) affected)

Page 49: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 48

DBCC execution completed. If DBCC printed error messages, contact your system

administrator.

Nota SQL Server no presenta filas para los archivos que no se reducen.

Cuando se especifican el nombre de la base de datos y el porcentaje final (con o sin las

opciones NOTRUNCATE o TRUNCATEONLY), DBCC SHRINKDATABASE devuelve

este conjunto de resultados (conjunto de resultados para un porcentaje final de 5; los

valores pueden variar):

DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages ------ ------ ----------- ----------- ----------- -------------- 5 2 96 63 96 56 (1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system

administrator.

Esta tabla describe las columnas del conjunto de resultados.

Nombre de

columna

Descripción

DbId (IdBD) Número de identificación de la base de

datos del archivo que SQL Server intentó

reducir.

FileId (IdArchivo) Número de identificación del archivo que

Page 50: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 49

SQL Server intentó reducir.

CurrentSize

(tamañoActual)

El número de páginas de 8 KB que el

archivo ocupa actualmente.

MinimumSize

(tamañoMínimo)

El número de páginas de 8 KB que el

archivo podría ocupar, como mínimo. Esto

corresponde al tamaño mínimo o tamaño

de creación original de un archivo.

UsedPages

(páginasUtilizadas)

El número de páginas de 8 KB que utiliza

actualmente el archivo.

EstimatedPages

(páginasEstimadas)

El número de páginas de 8 KB al que SQL

Server estima que se puede reducir el

archivo.

Ejemplos

En este ejemplo se reduce el tamaño de los archivos de la base de datos de usuario

UserDB para dejar un 10 por ciento de espacio libre en los archivos de UserDB.

DBCC SHRINKDATABASE (UserDB, 10)

GO

Para reducir un archivo de base de datos (Transact-SQL)

DBCC SHRINKFILE (T-SQL)

Reduce el tamaño del archivo de datos o de registro especificado de la base de datos

relacionada.

Sintaxis

Page 51: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 50

DBCC SHRINKFILE ( {nombreArchivo | IdArchivo } { [, tamañoFinal] | [, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}]

} )

Argumentos

nombreArchivo

Es el nombre lógico del archivo que se va a reducir. Los nombres de los archivos se

deben ajustar a las reglas para los identificadores.

IdArchivo

Es el número de identificación (Id.) del archivo que se va a reducir. Para obtener el Id.

de un archivo, utilice la función FILE_ID o busque en sysfiles, en la base de datos

actual.

tamañoFinal

Es el tamaño deseado para el archivo, en megabytes, expresado como un número

entero. Si no se especifica, DBCC SHRINKFILE reduce el tamaño todo lo que sea

posible.

Cuando se especifica tamañoFinal, DBCC SHRINKFILE intenta reducir el archivo al

tamaño especificado. Las páginas utilizadas de la parte del archivo que se va a liberar

se vuelven a ubicar en el espacio libre disponible de la parte del archivo que se va a

mantener. Por ejemplo, si hay un archivo de datos de 10 MB, una instrucción DBCC

SHRINKFILE con un tamañoFinal de 8 hace que todas las páginas utilizadas de los

últimos 2 MB del archivo se asignen de nuevo a cualquiera de las ranuras libres

disponibles en los primeros 8 MB del archivo. DBCC SHRINKFILE no reduce un

archivo a un tamaño menor que el que se necesita para almacenar los datos en el

archivo. Por ejemplo, si se utilizan 7 MB de los 10 MB de un archivo de datos, una

Page 52: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 51

instrucción DBCC SHRINKFILE con un tamañoFinal de 6 sólo reduce el tamaño del

archivo a 7 MB, no a 6 MB.

EMPTYFILE

Migra todos los datos del archivo especificado a otros archivos del mismo grupo de

archivos. Microsoft® SQL Server™ ya no permite que se almacenen datos en el

archivo en el que se haya utilizado la opción EMPTYFILE. Esta opción permite que el

archivo se pueda quitar mediante la instrucción ALTER DATABASE.

NOTRUNCATE

Hace que el espacio de archivos liberado se retenga en los archivos.

Cuando se especifica NOTRUNCATE y tamañoFinal, el espacio liberado no se

devuelve al sistema operativo. El único efecto de DBCC SHRINKFILE consiste en

volver a ubicar las páginas utilizadas en la parte que esté por encima de tamañoFinal a

la parte inicial del archivo. Cuando no se especifica NOTRUNCATE, todo el espacio

liberado en el archivo se devuelve al sistema operativo.

TRUNCATEONLY

Hace que se libere cualquier espacio no utilizado de los archivos para su utilización por

el sistema operativo y reduce el archivo a la última magnitud asignada, lo que

disminuye el tamaño del archivo sin mover los datos. Cuando se utiliza

TRUNCATEONLY, no vuelven a asignarse las filas a páginas no asignadas. No se

tiene en cuenta tamañoFinal.

Observaciones

DBCC SHRINKFILE se aplica a los archivos de la base de datos actual. Cambie el

contexto a otra base de datos para ejecutar la instrucción DBCC SHRINKFILE en un

archivo de una base de datos concreta. La base de datos no puede ser menor que el

tamaño de la base de datos model.

Page 53: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 52

Utilice DBCC SHRINKFILE para reducir el tamaño de un archivo a uno menor que su

tamaño original. El tamaño mínimo de un archivo queda así restablecido al nuevo

tamaño especificado.

Para quitar los datos que pudiera contener el archivo, ejecute DBCC

SHRINKFILE(‘nombreArchivo’, EMPTYFILE) antes de ejecutar ALTER DATABASE.

La base de datos que se está reduciendo no tiene por qué estar en modo de usuario

único; otros usuarios pueden estar trabajando en la base de datos cuando el archivo se

está reduciendo. No es necesario ejecutar SQL Server en modo de usuario único para

reducir las bases de datos del sistema.

En los archivos de registro, SQL Server utiliza porcentajeFinal para calcular el tamaño

final de todo el registro de forma que porcentajeFinal sea la cantidad de espacio libre

del registro después de la operación de reducción. El tamaño final de todo el registro se

traduce, entonces, en el tamaño final de cada archivo de registro. Al contrario que los

archivos de datos, la reducción de los archivos de registro no es inmediata. Cada

archivo de registro se marca con el tamaño final de la operación de reducción. Las

siguientes operaciones de copia de seguridad o truncamiento del registro intentan

reducir el tamaño del archivo y dejarlo en el valor más próximo posible al tamaño final.

Como un archivo de registro sólo puede reducirse al límite de un archivo de registro

virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de

registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un

archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a

sólo 128 MB. Para obtener más información acerca de cuándo se produce el truncado,

consulte Truncar el registro de transacciones. Para obtener más información acerca de

cómo determinar los tamaños de los archivos de registro virtuales, consulte Archivos de

registro virtuales.

Conjuntos de resultados

DBCC SHRINKFILE devuelve este conjunto de resultados (los valores pueden variar):

DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages

Page 54: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 53

------ ------ ----------- ----------- ----------- -------------- 5 1 176 96 168 168 (1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system

administrator.

Ejemplos

En este ejemplo se reduce el tamaño de un archivo llamado DataFil1 de la base de

datos de usuario UserDB a 7 MB.

USE UserDB GO DBCC SHRINKFILE (DataFil1, 7) GO Cómo reducir una base de datos (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, haga clic con el botón secundario del mouse en la

base de datos que desea reducir, seleccione Todas las tareas y, a

continuación, haga clic en Reducir base de datos…

Para especificar cuánto va a reducir la base de datos, haga clic en una de

estas opciones:

o Reducir base de datos en un (%) y escriba el valor del porcentaje

del tamaño actual de la base de datos que ésta se reduce.

o Quitar tanto espacio libre como sea posible para reducir la base

de datos tanto como sea posible.

o Opcionalmente, seleccione Comprobar periódicamente si se

puede reducir el espacio en disco de la base de datos para

permitir que la base de datos se reduzca automáticamente a

intervalos periódicos.

Page 55: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 54

Page 56: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 55

Cómo cambiar la configuración de una base de datos (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, haga clic con el botón secundario del mouse en la

base de datos que va a cambiar y, a continuación, haga clic en Propiedades.

Haga clic en la ficha Opciones, y active o desactive las opciones de

configuración que desea cambiar.

Page 57: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 56

GUIA PRACTICA NO.6

1. Haga una Base datos “PruebaDB” con las Siguientes especificaciones :

Archivo Físico de Datos : C:\Datos\datos.mdf

Nombre Lógico : Datos Tamaño : 2MB Auto Crecimiento del 10% Archivo Físico de Transacciones : C:\Log\log.ldf Nombre Lógico : Log Tamaño: 2MB

2. Usando el Analizador de Consultas, conectarse a la Base de Datos Pubs, realice

la siguiente sentencia SQL :

Select * From Titles Into PruebasDB.dbo.NewTitles

3. Verifique el espacio usado y disponible de la Base de Datos PruebaDB.

4. Repita el Ejercicio No.2

5. Obtenga nuevamente los datos del espacio usado y disponible de la Base de

Datos.

6. Reduzca el tamaño de la Base de Datos

7. Verifique los cambios.

8. Repita los ejercicios del No.2 en adelante nada más que ahora reduzca el

espacio del Archivo de Datos

Eliminar una base de datos (Transact-SQL)

Puede eliminar una base de datos cuando ya no se necesite o si se ha movido a otra

base de datos o servidor. Cuando se elimina una base de datos, los archivos y sus

datos son eliminados del disco del servidor. Una vez eliminada una base de datos, la

eliminación es permanente y no podrá recuperarla si no utiliza una copia de seguridad

previa a la eliminación.

Es recomendable que realice una copia de seguridad de la base de datos master

después de que se elimine la base de datos, ya que, al eliminarse una base de datos,

Page 58: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 57

se actualizan las tablas del sistema en master. Si es necesario restaurar la base de

datos master, cualquier base de datos que haya sido eliminada después de la última

copia de seguridad de master seguirá teniendo referencias en las tablas del sistema y

puede dar lugar a la aparición de mensajes de error.

DROP DATABASE (T-SQL)

Quita una o más bases de datos de Microsoft® SQL Server™. Al quitar una base de

datos se eliminan la base de datos y los archivos de disco que utiliza.

Sintaxis

DROP DATABASE nombreBaseDatos [,…n]

Argumentos

nombreBaseDatos

Especifica el nombre de la base de datos que se va a quitar. Ejecute sp_helpdb desde

la base de datos master para ver una lista de bases de datos.

Observaciones

El contexto de base de datos de la conexión debe estar en la base de datos master

para que se pueda utilizar DROP DATABASE.

En SQL Server versión 7.0, DROP DATABASE quita las bases de datos dañadas que

se han marcado como sospechosas. DROP DATABASE quita la base de datos

especificada a menos que se haya marcado como OFFLINE.

Sólo puede volver a crear una base de datos eliminada si restaura una copia de

seguridad. No puede quitar una base de datos que se esté utilizando actualmente (que

un usuario ha abierto para lectura o escritura). Siempre que se quita una base de

datos, se debe realizar una copia de seguridad de la base de datos master.

Page 59: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 58

Permisos

Los permisos de DROP DATABASE son los predeterminados del propietario de la base

de datos y de los miembros de la función fija de servidor sysadmin, y no se pueden

transferir.

Ejemplos

Quitar una única base de datos

Este ejemplo quita todas las referencias a la base de datos publishing de las tablas

del sistema.

DROP DATABASE publishing

Quitar varias bases de datos

Este ejemplo quita todas las referencias a todas las bases de datos enumeradas de las

tablas del sistema.

DROP DATABASE pubs, newpubs

Cómo eliminar una base de datos (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, haga clic con el botón secundario del mouse en la

base de datos que desea eliminar y, a continuación, haga clic en Eliminar.

Confirme la eliminación.

Page 60: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 59

Page 61: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 60

GUIA PRACTICA NO.7

Eliminar todas las Bases de Datos creadas en los ejercicios anteriores de la Guía No.1

a la Guía No.6

4. TIPOS DE DATOS

Objetivo:

Al finalizar el tema, el participante será capaz de describir los diferentes Tipos de Datos

empleados para crear Tablas

En Microsoft® SQL Server™, cada columna, variable local, expresión y parámetro tiene

un tipo de datos. El conjunto de tipos de datos suministrados por el sistema se muestra

debajo. Los tipos de datos definidos por el usuario, que son alias de los tipos de datos

suministrados por el sistema, pueden también definirse.

Enteros

BIT

Datos enteros con valor 1 ó 0.

int

Datos enteros (números enteros) comprendidos entre -231 (-2.147.483.648) y 231 - 1

(2.147.483.647).

smallint

Datos enteros comprendidos entre 215 (-32.768) y 215 - 1 (32.767).

tinyint

Page 62: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 61

Datos enteros comprendidos 0 y 255.

Decimales y numéricos

decimal

Datos de precisión y escala numérica fijas comprendidos entre -1038 -1 y 1038 -1.

numeric

Sinónimo de decimal.

money

Valores de moneda comprendidos entre -263 (-922.337.203.685.477,5808) y 263 - 1

(+922.337.203.685.477,5807), con una precisión de una diezmilésima de la unidad

monetaria.

smallmoney

Valores de moneda comprendidos entre -214.748,3648 y +214.748,3647, con una

precisión de una diezmilésima de la unidad monetaria.

Numéricos con aproximación

float

Números con precisión de coma flotante comprendidos entre -1,79E + 308 y 1,79E +

308.

real

Números con precisión de coma flotante comprendidos entre -3,40E + 38 y 3,40E + 38.

Fechas

datetime

Page 63: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 62

Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre

de 9999, con una precisión de un trescientosavo de segundo, o 3,33 milisegundos.

smalldatetime

Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y el 6 de junio de

2079, con una precisión de un minuto.

timestamp

Es un número único para toda la base de datos.

uniqueidentifier

Un identificador exclusivo global (GUID).

Cadenas de caracteres

char

Datos de caracteres no Unicode de longitud fija con una longitud máxima de 8.000

caracteres.

varchar

Datos no Unicode de longitud variable con un máximo de 8.000 caracteres.

text

Datos no Unicode de longitud variable con una longitud máxima de 231 - 1

(1.147.483.647) caracteres.

Cadenas de caracteres Unicode

nchar

Page 64: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 63

Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.

nvarchar

Datos Unicode de longitud variable con una longitud máxima de 4.000 caracteres.

sysname es el tipo de datos suministrado por el sistema y definido por el usuario que

es sinónimo de nvarchar(128) y que se utiliza para hacer referencia a nombres de

objetos de bases de datos.

ntext

Datos Unicode de longitud variable con una longitud máxima de 230 - 1 (1.073.741.823)

caracteres.

Cadenas binarias

binary

Datos binarios de longitud fija con una longitud máxima de 8.000 bytes.

varbinary

Datos Unicode de longitud variable con una longitud máxima de 8.000 bytes.

Image

Datos binarios, solo soporte de herencia de SQL Server 2000. En su lugar se utiliza

varbinary(max) .

Table

Se utiliza principalmente para trabajar con conjuntos de resultados, normalmente para

pasar uno de una función definida por el usuario. No se utiliza como tipo de datos

dentro de una definición de tabla.

Sql_variant

Page 65: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 64

Esta ligeramente relacionada con el tipo Variant en VB y C++, básicamente se trata de

un contenedor que nos permite alojar otros tipos de datos de SQL Server en el, lo que

significa que podemos utilizarlo cuando una columna o una función tenga que tratar con

múltiples tipos de datos.

XML

Define un campo de caracteres para datos XML. Proporciona la validación de los datos

frente a un esquema XML y el uso de funciones especiales orientadas a XML.

Page 66: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 65

Para crear tipos de datos definidos por el usuario (Transact-SQL)

sp_addtype (T-SQL)

Crea un tipo de datos definido por el usuario.

Sintaxis

sp_addtype [@typename =] tipo,

[@phystype =] tipoDatosSistema

[, [@nulltype =] 'tipoNull']

Argumentos

[@typename =] tipo

Es el nombre del tipo de datos definido por el usuario. Los nombres de los tipos de

datos tienen que seguir las reglas de los identificadores y deben ser únicos en cada

base de datos. El argumento tipo es del tipo de datos sysname y no tiene valor

predeterminado.

[@phystype =] tipoDatosSistema

Es el tipo de datos físico, o proporcionado por Microsoft® SQL Server™, (decimal, int,

etc.) en el que se basa el tipo de datos definido por el usuario. El argumento

tipoDatosSistema es de tipo sysname, no tiene valor predeterminado y puede ser uno

de estos valores:

‘binary(n)’ image smalldatetime

bit int smallint

‘char(n)’ ‘nchar(n)’ text

datetime ntext tinyint

Page 67: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 66

decimal numeric uniqueidentifier

‘decimal[(p[, s])]’ ‘numeric[(p[, s])]’ ‘varbinary(n)’

float ‘nvarchar(n)’ ‘varchar(n)’

‘float(n)’ real

Se requieren comillas para delimitar los parámetros que tengan espacios o signos de

puntuación incrustados. Para obtener más información acerca de los tipos de datos

disponibles, consulte Tipos de datos.

Ejemplos

Crear un tipo de datos definido por el usuario que no admita valores NULL

Este ejemplo crea un tipo de datos definido por el usuario llamado ssn (número de la

seguridad social) que está basado en el tipo de datos varchar de SQL Server. El tipo

de datos ssn se utiliza en columnas que almacenan números de la seguridad social de

11 cifras (999-99-9999). La columna no puede ser NULL.

Observe que varchar(11) está entre comillas simples porque contiene signos de

puntuación (paréntesis).

USE master

EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'

Crear un tipo de datos definido por el usuario que admita valores NULL

Este ejemplo crea un tipo de datos definido por el usuario (basado en el tipo de datos

datetime) llamado birthday que permite valores NULL.

Page 68: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 67

USE master

EXEC sp_addtype birthday, datetime, 'NULL'

Crear tipos de datos definidos por el usuario adicional

Este ejemplo crea dos tipos de datos definidos por el usuario adicional, telephone y

fax, para números de teléfono y fax locales e internacionales.

USE master

EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL'

EXEC sp_addtype fax, 'varchar(24)', 'NULL'

Cómo crear tipos de datos definidos por el usuario (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que desea crear el tipo de

datos definido por el usuario.

Expanda la carpeta programmability (programación) y luego Expanda Type

(Tipos)

Haga clic con el botón secundario del mouse en la opción User-Defined Data

Types (Tipos de Datos definidos por Usuario).

Page 69: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 68

Opcionalmente, en las listas Regla y Predeterminado, seleccione una regla o un valor

predeterminado, si lo hay, para enlazar con el tipo de datos definido por el usuario.

Para eliminar tipos de datos definidos por el usuario (Transact-SQL)

sp_droptype (T-SQL)

Elimina un tipo de datos definido por el usuario, tomado de systypes.

Sintaxis

sp_droptype [@typename =] 'tipo'

Page 70: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 69

Argumentos

[@typename =] 'tipo'

Es el nombre del tipo de datos definido por el usuario del que usted es propietario. tipo

es de tipo sysname y no tiene valor predeterminado.

USE master

EXEC sp_droptype 'birthday'

Para eliminar un tipo de datos definido por el usuario (Administrador

Corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que desea crear el tipo de

datos definido por el usuario.

Expanda la carpeta programmability (programación) y luego Expanda Type

(Tipos)

Expanda la opción User-Defined Data Types (Tipos de Datos definidos por

Usuario).

Elija el tipo de dato y Haga clic con el botón secundario del mouse y de clic en

Eliminar

Page 71: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 70

5. CREACION DE TABLAS

Objetivo:

Al finalizar el tema, el participante será capaz de crear tablas con las opciones básicas,

Modificar la estructura de la Tabla y Eliminar Tablas.

Diseñar tablas

Cuando diseñe una base de datos, deberá decidir qué tablas necesita, qué tipo de

datos van destinados a cada tabla, quién puede tener acceso a cada tabla, etc. Cuando

cree tablas y trabaje con ellas, seguirá tomando decisiones más específicas acerca de

las mismas.

Page 72: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 71

El método más eficiente para crear una tabla consiste en definir todo lo que se necesita

en la tabla al mismo tiempo, incluidas las restricciones para los datos y los

componentes adicionales. No obstante, también puede crear una tabla básica, agregar

algunos datos y trabajar con la tabla durante algún tiempo. Así, tendrá ocasión de ver

cuáles son los tipos de transacciones más habituales y qué tipos de datos se utilizan

con más frecuencia antes de confirmar un diseño más estable que incluya

restricciones, índices, valores predeterminados, reglas y otros objetos.

Puede ser una buena idea que esboce sus planes en papel antes de crear una tabla y

sus objetos. Entre las decisiones que deben tomarse, se incluyen:

Los tipos de datos que debe contener la tabla.

Las columnas de la tabla y los tipos de datos para cada columna (así como su

longitud, si es preciso).

Qué columnas aceptan valores NULL.

Si deben utilizarse (y cuándo) restricciones o valores predeterminados y reglas.

Los tipos de índices necesarios, dónde se necesitan y qué columnas son claves

principales y claves externas.

Creación de una Tabla utilizando Transact-SQL

Después de determinar el diseño de la base de datos, se puede crear las tablas en las

que se vayan a almacenar los datos. Los datos suelen almacenarse en tablas

permanentes. Las tablas se almacenan en los archivos de la base de datos hasta que

son eliminadas y están disponibles para cualquier usuario que cuente con los permisos

correspondientes.

Tablas temporales

También puede crear tablas temporales. Las tablas temporales son similares a las

permanentes, salvo por el hecho de que las tablas temporales se almacenan en

tempdb y se eliminan automáticamente cuando ya no se utilizan.

Page 73: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 72

Los dos tipos de tablas temporales, las locales y las globales, difieren en cuanto a sus

nombres, visibilidad y vida útil. Las tablas temporales locales presentan un solo signo

de número (#) como primer carácter del nombre; son visibles únicamente para la

conexión actual del usuario y se eliminan cuando el usuario se desconecta de los

equipos en los que se ejecuta Microsoft® SQL Server™. Las tablas temporales

globales presentan dos signos de número (##) antes del nombre, son visibles para

cualquier usuario después de su creación y se eliminan cuando todos los usuarios que

hacen referencia a la tabla se desconectan de SQL Server.

Por ejemplo, si crea una tabla denominada empleados, puede ser utilizada por

cualquier persona que cuente con los correspondientes permisos de seguridad

establecidos para la base de datos hasta que la tabla sea eliminada. Si crea una tabla

temporal local denominada #empleados, usted es la única persona que puede trabajar

con la tabla, y se elimina cuando se desconecta. Si crea una tabla temporal global

denominada ##empleados, cualquier usuario de la base de datos puede trabajar con

esta tabla. Si ningún otro usuario trabaja con esta tabla después de que la cree, la tabla

se elimina cuando se desconecte. Si otro usuario trabaja con la tabla después de que la

cree, SQL Server la elimina cuando los dos se desconectan.

Propiedades de la tabla

Puede definir hasta 1.024 columnas por tabla. Los nombres de las tablas y de las

columnas deben seguir las reglas para los identificadores; tienen que ser únicos dentro

de una tabla determinada, pero puede utilizar el mismo número de columna en distintas

tablas de la misma base de datos. También debe definir un tipo de datos para cada

columna.

Aunque los nombres de las tablas tienen que ser únicos para cada propietario de una

base de datos, puede crear varias tablas con el mismo nombre si especifica distintos

propietarios para cada tabla. Puede crear dos tablas denominadas empleados y

designar a Juan como propietario de una y a Sara como propietaria de otra. Cuando

necesite trabajar con una de las tablas de empleados, puede distinguir las tablas si

especifica el propietario con el nombre de la tabla.

Page 74: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 73

Creación de Tablas (Transact-SQL)

CREATE TABLE [database_name.[owner].]table_name (<column name> <data type> [[DEFAULT <constant expression>]

|[IDENTITY [(seed, increment) [NOT FOR REPLICATION]]]] [ROWGUIDCOL] [COLLATE <collation name>] [NULL|NOT NULL] [<column constraints>] |[column_name AS computed_column_expression] |[<table_constraint>] [,...n]

) [ON {<filegroup>|DEFAULT}] [TEXTIMAGE_ON {<filegroup>|DEFAULT}]

TIPO DE DATOS

Describe el tipo de dato que se le asignara a la columna de la tabla que se creará

DEFAULT

Es el valor que tendrá que utilizar cualquier fila insertada sin un valor suministrado por

el usuario para la columna en concreto. El valor predeterminado, si lo utiliza, debe

seguir inmediatamente al tipo de datos.

IDENTITY

El concepto del valor de identidad es muy importante en el diseño de una base de

datos. Con una columna de identidad SQL Server asigna automáticamente un numero

de serie a la columna en cada fila insertada.

NOT FOR REPLICATION

Este argumento tiene que ver directamente con las replicas. Una réplica es el proceso

que realiza automáticamente lo que, es un sentido muy amplio, equivale a copiar parte

Page 75: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 74

o toda la información de una base de datos en otra base de datos. La otra base de

datos puede estar en el mismo servidor o puede encontrarse ubicado en un sitio

remoto.

ROWGUIDCOL

Es bastante parecido a una columna de identidad ya que normalmente se utiliza para

identificar de forma única a cada fila de una tabla. La diferencia reside en las longitudes

que utiliza el sistema para asegurarse de que el valor utilizado es realmente único.

COLLATE

Este parámetro funciona igual al comando CREATE DATABESE, estando su diferencia

principal en el ámbito (aquí se define a nivel de columna en lugar de a nivel de base de

datos).

NULL|NOT NULL

Este parámetro es muy sencillo: establece si la columna en cuestión acepta o no

valores NULL. El valor predeterminado, cuando instalamos SQL Server por primera

vez, es establecer una columna en NOT NULL si no se especifica la aceptación de

valores NULL.

Column constraints

Se trata de restricciones y reglas que se incluyen en columnas individuales sobre los

datos que se pueden insertar en dichas columnas.

Page 76: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 75

ON

Es la forma de establecer en que grupo de archivos (y, por consiguiente, dispositivos

físicos) estará definida la tabla.

TEXTIMAGE_ON

Esta clausula es básicamente igual a ON pero nos permite mover una parte muy

específica de la tabla a un grupo de archives diferentes. Esta clausula solo es válida si

la definición de la tabla incluye una columna text, ntext o image.

Ejemplo:

CREATE TABLE CLIENTES ( CODIGO int IDENTITY NOT NULL, NOMBRE varchar(30) NOT NULL, DIRECCION1 varchar(30) NOT NULL, DIRECCION2 varchar(30) NOT NULL, CIUDAD varchar(20) NOT NULL, CONTACTO varchar(25) NOT NULL, TELEFONO char(15) NOT NULL, EMAIL varchar(50) NULL )

Page 77: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 76

GUIA PRACTICA NO.8

Para esta guía, desarrolle cada uno de los requerimientos usando el analizador

de consultas

1. Crear una Base de Datos “Inventarios”, el Archivo de Datos ubicarlo en C:\Datos

de 2MB y tamaño máximo de 5MB con autocrecimiento del 10%, para el archivo

de transacciones ubicarlo en C:\Log de 2MB con tamaño máximo de 5MB y con

autocrecimiento de 10%.

2. Se crearan las Tablas para implementar un Sistema de Inventarios, se registrara

la siguiente información :

PRODUCTOS

Código del Producto Descripción Costo Unitario Costo Alterno Existencia Mínima Estado del Producto Clase Marca Familia SubFamilia

BODEGAS

Código de Bodega Descripción Responsable Dirección (Acepta Nulos) Estado de la Bodega

UBICACIONES

Código de Bodega Código de Ubicación Descripción Ubicación

Page 78: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 77

Estado de la Ubicación

EXISTENCIAS

Código de Bodega Código de Ubicación Código de Producto Cantidad Disponible Cantidad Reservada

PROVEEDORES

Código Proveedor Nombre Proveedor Estado Proveedor Número de Registro Giro del Negocio Nit

PRODUCTOS_PROVEEDOR

Código proveedor Código Producto

MOV_INVENTARIO_ENC

Código Movimiento Número Movimiento Fecha Movimiento Observaciones

MOV_INVENTARIO_DET

Código Movimiento Número Movimiento

Page 79: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 78

Código Producto Código Bodega Código Ubicación Cantidad movimiento Costo Unitario

Cómo crear una tabla (Administrador corporativo)

Para crear una tabla

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que se va a crear la tabla.

Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga

clic en Nueva tabla...

Complete las columnas como corresponda. Cada fila representa una columna de

la tabla.

En la opción propiedades digite el nombre de la tabla y elija el grupo de archivos

en el cual se guardara la tabla a crear.

Page 80: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 79

Page 81: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 80

GUIA PRACTICA NO.9

1. Crear una Base de Datos “InventariosAdmin” con las mismas especificaciones

que en la Guía Anterior.

2. Desarrollar las mismas tablas que la Guía Anterior pero utilizando el

Administrador Corporativo.

Page 82: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 81

Modificar tablas

Después de crear una tabla, puede cambiar muchas de las opciones que fueron

definidas para la tabla cuando se creó originalmente; por ejemplo, es posible:

Agregar, modificar o eliminar columnas. Por ejemplo, se puede cambiar el

nombre, la longitud, el tipo de datos, la precisión, la escala y la aceptación de

valores NULL de la columna, aunque hay algunas restricciones.

Para cambiar el nombre de una tabla (Transact-SQL)

sp_rename (T-SQL)

Cambia el nombre de un objeto creado por el usuario (por ejemplo, una tabla, columna

o tipo de datos definido por el usuario) en la base de datos actual.

Sintaxis

sp_rename [@objname =] 'nombreObjeto', [@newname =] 'nuevoNombre' [, [@objtype =] 'tipoObjeto']

Argumentos

[@objname =] 'nombreObjeto'

Es el nombre actual del objeto de usuario (tabla, vista, procedimiento almacenado,

desencadenador, valor predeterminado, base de datos, objeto o regla) o tipo de datos.

Si el objeto cuyo nombre se va a cambiar es una columna de una tabla, nombreObjeto

debe tener la forma tabla.columna. Si el objeto cuyo nombre se va a cambiar es un

índice, nombreObjeto debe tener la forma tabla.índice. nombreObjeto es de tipo

nvarchar(776) y no tiene un valor predeterminado.

[@newname =] 'nuevoNombre'

Page 83: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 82

Es el nuevo nombre del objeto especificado. nuevoNombre debe ser un nombre con

una parte y debe cumplir las reglas de los identificadores. nuevoNombre es de tipo

sysname y no tiene un valor predeterminado.

Cómo cambiar el nombre de una tabla (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a

continuación, haga clic en Tablas.

Haga clic con el botón secundario del mouse en la tabla y, a continuación, haga

clic en Cambiar nombre.

Escriba el nuevo nombre de la tabla.

Confirme el cambio del nombre.

Page 84: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 83

Modificar las propiedades de una columna

Cada columna de una tabla tiene una serie de propiedades tales como el nombre, el

tipo de datos, la aceptación de valores Null y la longitud de los datos. El conjunto de

propiedades de una columna constituye la definición de la columna en una tabla.

Las propiedades de una columna pueden especificarse directamente en una tabla de la

base de datos mediante un diagrama de la base de datos. Para crear una tabla en la

base de datos, se necesitan tres propiedades de columna:

Nombre de columna

Tipo de datos

Longitud de los datos

Se puede modificar las propiedades de una columna mediante un cambio de nombre,

la modificación de su longitud, la especificación de un valor predeterminado, etc.

Para establecer las propiedades de una columna (Transact-SQL)

ALTER TABLE (T-SQL)

La necesidad más común es cuando se tendrá que cambiar la estructura de una tabla,

que puede variar desde cosas sencillas, como añadir una nueva columna, hasta temas

más complejos, como cambiar un tipo de datos.

Sintaxis

ALTER TABLE table_name {[ALTER COLUMN <column_name>

{ [<schema of new data type>].<new_data_type> [(precision [, scale])] max | <xml schema collection>

[COLLATE <collation_name>] [NULL|NOT NULL]

Page 85: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 84

|[{ADD|DROP} ROWGUIDCOL] | PERSISTED}] |ADD

<column name> <data_type> [[DEFAULT <constant_expression>] |[IDENTITY [(<seed>, <increment>) [NOT FOR REPLICATION]]]] [ROWGUIDCOL] [COLLATE <collation_name>] [NULL|NOT NULL] [<column_constraints>] |[<column_name> AS <computed_column_expression>]

|ADD [CONSTRAINT <constraint_name>] {[{PRIMARY KEY|UNIQUE} [CLUSTERED|NONCLUSTERED] {(<column_name>[ ,...n ])} [WITH FILLFACTOR = <fillfactor>] [ON {<filegroup> | DEFAULT}] ]

|FOREIGN KEY [(<column_name>[ ,...n])] REFERENCES <referenced_table> [(<referenced_column>[ ,...n])] [ON DELETE {CASCADE|NO ACTION}] [ON UPDATE {CASCADE|NO ACTION}] [NOT FOR REPLICATION]

|DEFAULT <constant_expression> [FOR <column_name>]

|CHECK [NOT FOR REPLICATION] (<search_conditions>)

[,...n][ ,...n] |[WITH CHECK|WITH NOCHECK]

| { ENABLE | DISABLE } TRIGGER { ALL | <trigger name> [ ,...n ] } |DROP

{[CONSTRAINT] <constraint_name> |COLUMN <column_name>}[ ,...n] |{CHECK|NOCHECK} CONSTRAINT {ALL|<constraint_name>[ ,...n]} |{ENABLE|DISABLE} TRIGGER {ALL|<trigger_name>[ ,...n]} | SWITCH [ PARTITION <source partition number expression> ] TO [ schema_name. ] target_table [ PARTITION <target partition number expression> ]

}

Page 86: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 85

Ejemplos

Alterar una tabla para agregar una nueva columna

El ejemplo siguiente agrega una columna que permite valores nulos y a la que no se

han proporcionado valores mediante una definición DEFAULT. Cada fila tendrá un valor

NULL en la nueva columna.

CREATE TABLE doc_exa ( column_a INT) GO ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL GO EXEC sp_help doc_exa GO DROP TABLE doc_exa GO

Alterar una table para modificar el tipo de dato de una columna

El ejemplo siguiente modifica una tabla cambiando el tipo de dato de una columna

ALTER TABLE dbo.Products ALTER COLUMN Discontinued int CONSTRAINT DF_Products_Discontinued DEFAULT 0 NOT NULL GO Alterar una tabla para quitar una columna

El ejemplo siguiente modifica una tabla para quitar una columna.

CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) GO ALTER TABLE doc_exb DROP COLUMN column_b GO EXEC sp_help doc_exb GO DROP TABLE doc_exb GO

Page 87: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 86

Cómo ver las propiedades de las columnas (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a

continuación, haga clic en Tablas.

En el panel de detalles, haga clic con el botón secundario del mouse en la tabla

y, a continuación, haga clic en Modificar.

Page 88: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 87

GUIA PRACTICA NO.10

Para tener un mayor control de las operaciones realizadas sobre la Base de

Datos “Inventario” (Creada en la Guía Anterior) se ha decido agregar a todas

las tablas dos columnas para registrar el usuario de Modificación y la Fecha

en que se realizó la modificación. Modifique todas las Tablas para agregar:

USUARIO_MODIFICACIÓN varchar(10)

FECHA_MODIFICACIÓN datetime

Eliminar una tabla

En determinadas ocasiones, necesitará eliminar una tabla (por ejemplo, cuando desee

implementar un nuevo diseño o liberar espacio en la base de datos). Cuando elimine

una tabla, la definición de su estructura, sus datos, índices de texto, restricciones e

índices se eliminan permanentemente de la base de datos y el espacio anteriormente

utilizado para almacenar la tabla y sus índices queda disponible para otras tablas.

Puede quitar explícitamente una tabla temporal si no desea esperar a que se quite

automáticamente.

Para Eliminar una tabla (Transact-SQL)

DROP TABLE (T-SQL)

Quita una definición de tabla y todos los datos, índices, desencadenadores,

restricciones y especificaciones de permisos de la tabla.

Sintaxis

DROP TABLE nombreTabla

Argumentos

nombreTabla

Page 89: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 88

Es el nombre de la tabla que se va a quitar.

Cómo eliminar una tabla (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a

continuación, haga clic en Tablas.

En el panel de detalles, haga clic con el botón secundario del mouse en la tabla

que desea eliminar y, a continuación, haga clic en Eliminar.

Para ver cómo va a afectar la eliminación de esta tabla a la base de datos, haga

clic en Mostrar dependencias…

Page 90: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 89

6. INTEGRIDAD DE DATOS (RESTRICCIONES)

Objetivo:

Al finalizar el tema, el participante será capaz de aplicar validaciones de datos sobre

Tablas y relacionar las tablas entre sí.

Una restricción es una limitación. Situada en cualquier columna o tabla, una restricción

asegura que nuestros datos satisfacen determinadas reglas de integridad de datos.

Existen tres restricciones de alto nivel:

Restricciones de entidad

Page 91: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 90

Restricciones de dominio

Restricciones de integridad referencial

A nivel más específico se examinaran los métodos específicos para implementar cada

uno de los tipos de restricción incluyendo:

Restricciones PRIMARY KEY

Restricciones FOREIGN KEY

Restricciones UNIQUE (también conocidas como claves alternativas)

Restricciones CHECK

Restricciones DEFAULT

Reglas

Valores predeterminados (similares a las restricciones DEFAULT pero con

alguna ligera diferencia)

Page 92: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 91

Restricciones de Domino

Las restricciones de dominio tratan una o más columnas. Lo que se analiza es como

asegurarse de que una determinada columna o conjunto de columnas satisface

determinados criterios. Cuando se inserta o actualiza una fila, la restricción se aplica

con respecto a cualquier otra fila de la tabla; son los datos de la columna que se está

insertando.

Por ejemplo, si desean limitar la columna Unit Price solo a los valores que sean

mayores que, o igual a cero, utilizan una restricción de dominio. Aunque se rechazaría

cualquier fila que tuviese un precio unitario que no coincidiese con la restricción, en

realidad se está forzando a que la integridad se asegure de que toda la columna

(independientemente de la cantidad de las filas que tenga) reúna las condiciones de la

restricción. El dominio es la columna y la restricción es una restricción de dominio.

Restricciones de entidad

Estas restricciones tratan filas individuales. Esta forma de restricción realmente no se

preocupa de la columna como un todo; esta insertada en una determinada fila y sería

mejor ejemplificarla a través de una limitación que requiere que todas las filas tengan

un valor único por columna, es decir, que para un fila en concreto, no puede existir el

mismo valor en ninguna otra fila.

Restricciones de Integridad Referencial

Estas se crean cuando un valor de una columna tiene que coincidir con el valor en otra

columna, tanto en la misma tabla como en una tabla diferente (algo más en común).

Supongamos que estamos hablando de los pedidos de un producto y que se acepta

Page 93: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 92

tarjeta de crédito. Para que pague la empresa de la tarjeta de crédito, se tendrá que

tener alguna forma de acuerdo mercantil con dicha empresa. No se desea que los

empleados admitan tarjetas de crédito de compañías que no pagan. Aca es donde

entra en juego la integridad referencial: permite crear lo que se puede denominar un

tabla de dominio o búsqueda. Una tabla de domino es una tabla cuyo único propósito

en la vida es proporcionar una lista limitada de valores aceptables.

IdTarjetaCredito TarjetaCredito

1 VISA

2 Master Card

3 Promerica Card

4 American Express

Posteriormente se podrá crear una o más tablas que hagan referencia a la columna

IDTarjetaCredito de la tabla de dominio. Con la integridad referencial, cualquier tabla

(como una tabla de Pedidos) definida para hacer referencia a la tabla TarjetaCredito

tendrá que tener una columna que coincida con la columna IDTarjetaCredito de la tabla

TarjetaCredito. Cada fila que se inserte en la tabla que hace referencia, tendrá que

tener un valor que se encuentra en la lista de dominio.

Restricciones PRIMARY KEY

Antes de definir lo que es realmente una clave principal, se tendrá que explicar

brevemente las bases de datos relacionales. Estas bases de datos se construyen sobre

la idea de poder “relacionar” datos. Por consiguiente, es muy importante en las bases

de datos relacionales para la mayoría de las tablas (existen excepciones, aunque muy

raras) tener un identificador único por cada fila.

Page 94: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 93

Crear y modificar restricciones PRIMARY KEY

Una restricción PRIMARY KEY única se puede:

Crear cuando se crea la tabla, durante el proceso de definición de la misma.

Agregar a una tabla existente, siempre que no exista ya otra restricción

PRIMARY KEY (una tabla sólo puede tener una restricción PRIMARY KEY).

Modificar o eliminar, si ya existe. Por ejemplo, es posible que desee que la

restricción PRIMARY KEY de la tabla haga referencia a otras columnas o bien

modificar el orden de la columna, el nombre del índice, la opción de

agrupamiento o el factor de relleno de la restricción PRIMARY KEY. No se

puede cambiar la longitud de una columna definida con una restricción

PRIMARY KEY.

Cuando se agrega una restricción PRIMARY KEY a una o a varias columnas de la

tabla, Microsoft® SQL Server™ comprueba los datos que hay en las columnas para

asegurarse de que sigan las reglas de las claves principales:

Que no haya ningún valor Null.

Que no haya ningún valor duplicado.

Si se agrega una restricción PRIMARY KEY a una columna con valores duplicados o

valores NULL, SQL Server devuelve un error y no agrega la restricción. No se puede

agregar una restricción PRIMARY KEY que no cumpla estas reglas.

SQL Server crea automáticamente un índice único para exigir que la restricción

PRIMARY KEY sea única. Si aún no existe un índice agrupado en la tabla o no se ha

especificado explícitamente, se crea un índice agrupado único para exigir la restricción

PRIMARY KEY.

Page 95: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 94

Para crear una restricción PRIMARY KEY durante la creación de una tabla

(Transact-SQL)

CREATE TABLE [ nombreTabla ] ( <definiciónColumna> [CONSTRAINT nombreRestricción] PRIMARY KEY [CLUSTERED][NONCLUSTERED])

Ejemplo: CREATE TABLE dbo.CLIENTES ( CODIGO int NULL, NOMBRE varchar(100) NULL, DIRECCION varchar(200) NULL, CONSTRAINT PK_LLAVE PRIMARY KEY NONCLUSTERED (CODIGO) )

Cómo crear una restricción PRIMARY KEY durante la creación de una tabla

(Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que se va a crear la tabla.

Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga

clic en Nueva tabla...

Complete las columnas como corresponda. Cada fila representa una columna de

la tabla.

Mientras mantiene presionada la tecla Ctrl, haga clic en los nombres de las

columnas que forman la clave principal.

Haga clic con el botón secundario del mouse en uno de los nombres de

columnas que ha seleccionado y, a continuación, haga clic en Establecer clave

principal.

Page 96: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 95

Para crear o eliminar una restricción PRIMARY KEY de una tabla existente

(Transact-SQL)

ALTER TABLE [nombreTabla] [ADD][DROP] CONSTRAINT [nombrerestriccion]

PRIMARY KEY [CLUSTERED] [NONCLUSTERED]

Ejemplo:

ALTER TABLE dbo.CLIENTES

ADD CONSTRAINT PK_LLAVE

PRIMARY KEY NONCLUSTERED (CODIGO)

go

ALTER TABLE dbo. CLIENTES

DROP CONSTRAINT PK_TABL_PRUEBA

go

Page 97: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 96

Restricciones FOREIGN KEY

Las claves externas (foreign Keys) son tanto una forma de asegurar la integridad de los

datos como una manifestación de las relaciones entre las tablas. Cuando añadimos

una clave eterna a una tabla, estamos creando una dependencia entre la tabla para la

que definimos la clave externa (la tabla que hace la referencia) y la tabla a la que se

refiere la clave externa (la tabla referenciada). Tras añadir una clave externa, cualquier

registro que se inserta en la tabla que hace referencia tiene que tener un registro

correspondiente en la columna o columnas de la tabla referenciada, o el valor de la

columna o columnas de la clave principal se tiene que establecer en NULL.

Las restricciones FOREIGN KEY se pueden:

Crear cuando se crea la tabla, durante el proceso de definición de la misma.

Agregar a una tabla ya existente, siempre que la restricción FOREIGN KEY esté

vinculada a una restricción PRIMARY KEY o UNIQUE de otra o de la misma

tabla. Una tabla puede contener varias restricciones FOREIGN KEY.

Modificar o eliminar si ya existen restricciones FOREIGN KEY. Por ejemplo, es

posible que desee que la restricción FOREIGN KEY de la tabla haga referencia

a otras columnas. No se puede cambiar la longitud de una columna definida con

una restricción FOREIGN KEY.

Para crear una restricción FOREIGN KEY durante la creación de una tabla

(Transact-SQL)

CREATE TABLE [ nombreTabla ] ( <definiciónColumna> [CONSTRAINT nombreRestricción] FOREIGN KEY <ListaColumnas> REFERENCES <TablaReferencia>

(<ColumnasReferencia> ) [ ON DELETE { CASCADE | NO ACTION } ]

[ ON UPDATE { CASCADE | NO ACTION } ]

Page 98: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 97

Ejemplo:

CREATE TABLE OrderDetails (

OrderID int NOT NULL, PartNo varchar(10) NOT NULL, Description varchar(25) NOT NULL, UnitPrice money NOT NULL, Qty int NOT NULL,

CONSTRAINT PKOrderDetails PRIMARY KEY (OrderID, PartNo),

CONSTRAINT FKOrderContainsDetails FOREIGN KEY (OrderID)

REFERENCES Orders(OrderID) ON UPDATE NO ACTION

ON DELETE CASCADE )

Cómo modificar una restricción FOREIGN KEY (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a continuación, haga clic en Tablas.

En el panel de detalles, haga clic con el botón secundario del mouse en la tabla y, a continuación, haga clic en Diseñar tabla.

Haga clic con el botón secundario del mouse en cualquier columna y, a continuación, haga clic en Relaciones

Haga clic en el botón adicionar

Page 99: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 98

Page 100: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 99

Restricciones UNIQUE.

Las restricciones UNIQUE (únicas) son bastantes sencillas. Dichas restricciones son

básicamente las hermanas jóvenes de las claves principales ya que requieren un valor

único a lo largo de la columna (o combinaciones de columnas) con nombre en la tabla.

Normalmente estas restricciones se conocen con el nombre de claves alternativas. La

diferencia principal es que no se consideran identificadores únicos de un registro o una

tabla (aunque podrían utilizarse con efectividad de esa forma) y que podemos tener

más de una restricción UNIQUE (recuerde que solo podemos tener una clave principal

por tabla).

Una vez establecida una restricción UNIQUE, cada valor en las columnas con nombre

tiene que ser único. Si se actualiza o inserta una fila con un valor que ya existe en una

columna con una restricción única. SQL Server emitirá un error y rechazará el registro.

Ejemplo:

CREATE TABLE Shippers (

ShipperID int I DENTITY NOT NULL PRIMARY KEY,

ShipperName varchar(30) NOT NULL, Address varchar(30) NOT NULL, City varchar(25) NOT NULL, State char(2) NOT NULL, Zip varchar(10) NOT NULL, PhoneNo varchar(14) NOT NULL UNIQUE

)

ALTER TABLE Employees ADD CONSTRAINT AK_EmployeeSSN UNIQUE (SSN)

Page 101: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 100

Restricciones CHECK

Lo bueno de estas restricciones es que no se limitan a una columna determinada.

Pueden tener relación con una columna pero también pueden estar relacionadas con

una tabla, ya que pueden comprobar un columna frente a otra, siempre que las

columnas se encuentre dentro de la misma tabla y que los valores que se vayan

actualizando o insertando sean para la misma fila. También pueden comprobar si

cualquier combinación de valores de columna reúnen unos criterios determinados.

Las restricciones CHECK se pueden:

Crear cuando se crea la tabla, durante el proceso de definición de la misma.

Agregar a una tabla ya existente. Las tablas y las columnas pueden contener

varias restricciones CHECK.

Modificar o eliminar si ya existen. Por ejemplo, puede modificar la expresión

utilizada por la restricción CHECK en una columna de la tabla.

Para crear una restricción CHECK durante la creación de una tabla

(Transact-SQL)

CREATE TABLE [ nombreTabla ] (

<definiciónColumna> [CONSTRAINT nombreRestricción]

CHECK (expresiónLógica) )

Ejemplo:

CREATE TABLE dbo.TABL_PRUEBA ( CODIGO int NOT NULL, NOMBRE varchar(50) COLLATE Modern_Spanish_CI_AS NULL, NIT varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL, CONSTRAINT PK_TABL_PRUEBA_1

Page 102: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 101

PRIMARY KEY CLUSTERED (CODIGO) ON SECUNDARY, CONSTRAINT CN_CODIGO CHECK ([CODIGO]>(0))) Cómo crear una restricción CHECK durante la creación de una tabla

(Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que se va a crear la tabla.

Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga

clic en Nueva tabla...

En el cuadro de diálogo Elegir nombre, escriba un nombre para la tabla.

Complete las columnas como corresponda. Cada fila representa una columna de

la tabla.

Haga clic con el botón secundario del mouse en el nombre de la columna en la

que desea crear la restricción CHECK y, a continuación, haga clic en Check

Constrains.

En Expresión de restricción, escriba el texto de la restricción.

Page 103: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 102

Para crear una restricción CHECK en una tabla existente (Transact-SQL)

ALTER TABLE [nombreTabla] [WITH CHECK] [WITH NOCHECK] ADD CONSTRAINT [nombrerestriccion] CHECK (expresiónLogica)

Para eliminar una restricción CHECK en una tabla existente (Transact-SQL)

ALTER TABLE [nombreTabla] DROP CONSTRAINT [nombrerestriccion]

Restricciones DEFAULT

Page 104: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 103

Este es uno de los tipos diferentes de herramientas de integirdad de datos que tiene

que ver con los “valores predeterminados”. La restricción DEFAULT se convierte en un

elemento integral de una definición de una tabla. Define lo que hay que hacer cuando

se inserta una nueva fila que no incluya datos para la columna en la que hemos

definido la restricción predeterminada.

Para crear una definición DEFAULT en una columna durante el proceso de

creación de una tabla (Transact-SQL)

CREATE TABLE [ nombreTabla ]

(

<definiciónColumna> [CONSTRAINT nombreRestricción]

DEFAULT (Valorpordefecto)

)

Ejemplo:

CREATE TABLE dbo.TABL_PRUEBA

(

CODIGO int NOT NULL,

NOMBRE varchar(50) COLLATE Modern_Spanish_CI_AS NULL,

NIT varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL,

SUELDO numeric(18,4) NULL,

FECHA_INGR datetime CONSTRAINT

DF__TABL_PRUE__FECHA__060DEAE8 DEFAULT getdate() NULL,

CONSTRAINT PK_TABL_PRUEBA_1

PRIMARY KEY CLUSTERED (CODIGO)

ON SECUNDARY,

CONSTRAINT CK_SUELDO

CHECK ([SUELDO]>(0)),

CONSTRAINT CN_CODIGO

CHECK ([CODIGO]>(0))

)

Cómo crear una definición DEFAULT en una columna durante la creación de una

tabla (Administrador corporativo)

Page 105: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 104

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos y la base de datos en la que se va a crear la tabla.

Haga clic con el botón secundario del mouse en Tablas y, a continuación, haga

clic en Nueva tabla...

En el cuadro de diálogo Elegir nombre, escriba un nombre para la tabla.

Complete las columnas como corresponda. Cada fila representa una columna de

la tabla.

En la columna Valor predeterminado de cada nombre de columna que

corresponda, escriba la definición DEFAULT.

Page 106: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 105

Para crear o eliminar una definición DEFAULT en una columna de una tabla

existente (Transact-SQL)

ALTER TABLE [nombreTabla] [ADD][DROP] CONSTRAINT [nombrerestriccion]

DEFAULT (Valorpordefecto)

Ejemplo:

ALTER TABLE dbo.TABL_PRUEBA ADD CONSTRAINT DF_FECHA_INGR DEFAULT getdate() FOR FECHA_INGR Go ALTER TABLE dbo.TABL_PRUEBA DROP CONSTRAINT DF_FECHA_INGR Go Deshabilitar Restricciones

Algunas veces es necesario eliminar la comprobación de restricciones durante un

tiempo o permanentemente. Lógicamente, SQL Server no proporciona una forma de

eliminar restricciones, pero también nos permite desactivar una restricción FOREIGN

KEY o CHECK sin tener que eliminarlas.

El concepto de deshabilitar una regla de integridad de datos podría parecer al principio

algo absurdo. Es decir, la razón normal es una cuando ya se tiene datos errones. Estos

datos normalmente se clasifican en dos categorías:

Datos que ya se encuentran en nuestra base de datos cuando creamos la

restricción

Datos que deseamos añadir tras crear la restricción

NOTA: no se puede deshabilitar restricciones PRIMARY KEY O UNIQUE

Ejemplo:

Deshabilita

ALTER TABLE dbo.TABL_PRUEBA

Page 107: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 106

NOCHECK CONSTRAINT CN_CODIGO Go Habilita ALTER TABLE dbo.TABL_PRUEBA CHECK CONSTRAINT CK_SUELDO go

GUIA PRACTICA NO.11

Usando el Analizador de Consultas modifique las Tablas de la Base de Datos

“Inventarios”:

1. Para la tabla de Productos agregue las siguientes validaciones : Existencia

Mínima, costo unitario y costo alterno >= 0, Clase = ‘A’ o ‘B’ o ‘C’. ( Para la Clase

el valor default es ‘A’ )

2. Para la tabla de existencias agregue las siguientes validaciones : Cantidad

disponible y Cantidad reservada >= 0

3. Para la tabla detalle de movimientos de Inventario agregue las siguientes

validaciones : Cantidad de Movimiento y Costo unitario >= 0

4. Agregar a todas las tablas las Llave Primarias y Llaves Foráneas.

Usando el Administrador Corporativo modifique las Tablas de la Base de Datos

“InventariosAdmin” con las mismas especificaciones anteriores. ( Ejercicio No.1 al

No. 4)

Page 108: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 107

7. CREACIÓN DE VISTAS

Objetivo:

Al finalizar el tema, el participante será capaz de diferenciar los Objetos Vistas de los

Objetos Tablas, así como también crear Vistas sobre tablas Existentes.

Las vistas tiene la tendencia a ser utilizadas mucho o poco: en raras ocasiones se

utilizan en su justa medida. Las vistas se puede utilizar para:

Reducir la complejidad aparente de la base de datos para los usuarios finales

Prevenir la selección de columnas confidenciales a la vez que permite tener

acceso a otros datos importantes

Añadir un indexado adicional a su base de datos para agilizar el rendimiento de

la consulta, incluso aunque no se utilice la vista en la que se ha basado el índice

Una vista no es mas que un consulta almacenada. Lo extraordinario es que podemos

combinar y hacer corresponder datos desde tablas base (o desde otras vistas) para

crea lo que, en general, funciona como cualquier otra tabla base. Podemos crear una

simple consulta que seleccione solo desde una tabla y deje fuera algunas columnas o

poder crear una consulta compleja que junte diversas tablas y haga que parezcan una

sola.

Crear una vista

Antes de crear una vista, considere estas indicaciones:

Sólo puede crear vistas en la base de datos actual. Sin embargo, las tablas y las

vistas a las que se haga referencia desde la nueva vista pueden encontrarse en

otras bases de datos e, incluso, en otros servidores, si la vista se define

mediante consultas distribuidas.

Page 109: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 108

Los nombres de las vistas deben seguir las reglas para los identificadores y ser

únicos para cada usuario. Además, el nombre debe ser distinto del de cualquier

tabla de las que el usuario sea propietario.

Puede generar vistas dentro de otras vistas y en procedimientos que hagan

referencia a vistas. Microsoft® SQL Server™ permite anidar hasta 32 niveles de

vistas.

No puede asociar reglas, definiciones DEFAULT ni desencadenadores con las

vistas.

La consulta que defina a la vista no puede incluir las cláusulas ORDER BY,

COMPUTE o COMPUTE BY, ni la palabra clave INTO.

No puede generar índices ni crear definiciones de índices de texto en las vistas.

No puede crear vistas temporales, ni vistas dentro de tablas temporales.

No puede emitir consultas de texto en una vista, aunque una definición de vista

puede incluir una consulta de texto si ésta hace referencia a una tabla

configurada para indización de texto.

Debe especificar el nombre de todas las columnas de la vista en el caso de que:

Alguna de las columnas de la vista derive de una expresión aritmética, una

función integrada o una constante.

Dos o más columnas de la vista tendrían, en caso contrario, el mismo nombre

(normalmente, debido a que la definición de la vista incluye una combinación y

las columnas de dos o más tablas diferentes tienen el mismo nombre).

Desee darle a una columna de la vista un nombre distinto del de la columna de la que

deriva. (También puede cambiar el nombre de las columnas en la vista). Una columna

de una vista hereda los tipos de datos de la columna de la que deriva, aunque no

cambie su nombre.

Page 110: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 109

Para crear una vista (Transact-SQL)

CREATE VIEW (T-SQL)

Crea una tabla virtual que representa los datos de una o más tablas de una forma

alternativa. Las vistas se pueden utilizar como mecanismos de seguridad al conceder

permisos sobre una vista, pero no sobre las tablas subyacentes (base).

Sintaxis

CREATE VIEW nombreVista [(columna [,…n])]

[WITH ENCRYPTION]

AS

instrucciónSelección

[WITH CHECK OPTION]

Argumentos

nombreVista

Es el nombre de la vista. Los nombres de las vistas deben cumplir las reglas de los

identificadores. Especificar el nombre del propietario de la vista es opcional.

columna

Es el nombre que se va a utilizar para una columna en una vista. Asignar un nombre a

una columna en CREATE VIEW sólo es necesario cuando una columna se derive de

una expresión aritmética, una función o una constante, cuando dos o más columnas

puedan tener el mismo nombre (debido normalmente a una combinación), o cuando

una columna de una vista recibe un nombre distinto al de la columna de la que se

deriva. Los nombres de columna se pueden asignar también en la instrucción SELECT.

Si no se especifica columna, las columnas de la vista adquieren los mismos nombres

que las columnas de la instrucción SELECT.

n

Page 111: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 110

Es un marcador de posición que indica que se pueden especificar varias columnas.

WITH ENCRYPTION

Codifica las entradas de syscomments que contienen el texto de la instrucción

CREATE VIEW.

AS

Son las acciones que va a llevar a cabo la vista.

instrucciónSelección

Es la instrucción SELECT que define la vista. Puede utilizar más de una tabla y otras

vistas. Para seleccionar los objetos a los que se hace referencia en la cláusula

SELECT de una vista que se esté creando, es necesario tener los permisos

adecuados.

Una vista no tiene por qué ser un simple subconjunto de filas y de columnas de una

tabla determinada. Una vista se puede crear con más de una tabla o con otras vistas,

mediante una cláusula SELECT sencilla o compleja.

Sin embargo, hay unas cuantas restricciones de las cláusulas SELECT en una

definición de vista. Una instrucción CREATE VIEW no puede:

Incluir cláusulas ORDER BY, COMPUTE o COMPUTE BY.

Incluir la palabra clave INTO.

Hacer referencia a una tabla temporal.

Como instrucciónSelección utiliza la instrucción SELECT, es válido utilizar las

sugerencias <sugerenciaCombinación> y <sugerenciaTabla> como se especifican en la

cláusula FROM.

Se pueden utilizar funciones en instrucciónSelección.

Page 112: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 111

instrucciónSelección puede utilizar varias instrucciones SELECT separadas por UNION

para crear una consulta mediante datos separados.

Para que se puedan utilizar datos separados en ALTER VIEW o CREATE VIEW, es

necesario poder comprobar los valores de la restricción. Si se ha deshabilitado la

comprobación de restricciones, vuelva a habilitarla con la opción WITH CHECK o las

opciones CHECK nombreRestricción de ALTER TABLE. No es necesario tener

restricciones para utilizar datos separados; sin embargo, la optimización de consulta

genera planes menos optimizados sin las restricciones.

WITH CHECK OPTION

Exige que todas las instrucciones de modificación de datos ejecutadas contra la vista

se adhieran a los criterios establecidos en instrucciónSelección. Cuando una fila se

modifica mediante una vista, la opción WITH CHECK garantiza que los datos

permanezcan visibles en toda la vista después de que se haya confirmado la

modificación.

Ejemplo:

CREATE VIEW Clientes_vw As SELECT CODIGO,

NOMBRE, NIT, DIRECCION, TELEFONO

FROM CLIENTES

Modificar una Vista (Transact-SQL)

ALTER VIEW (T-SQL)

Altera una vista creada previamente (creada al ejecutar CREATE VIEW) sin afectar a

los procedimientos almacenados ni a los desencadenadores dependientes, y sin

cambiar los permisos.

Page 113: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 112

Sintaxis

ALTER VIEW nombreVista [(columna [,…n])] [WITH ENCRYPTION] AS instrucciónSelección [WITH CHECK OPTION]

Ejemplo:

ALTER VIEW Clientes_vw AS SELECT CODIGO,

NOMBRE, NIT, DIRECCION, TELEFONO, CONTACTO

FROM TABL_PRUEBA

Crear y Modificar Vistas en el Administrador Corporativo

El administrador Corporativo proporciona una extraordinaria opción para la creación de

vistas.

Abrir el Administrador Corporativo y posterior mente el subnodo de base de datos de la

base de datos Northwind; hacer clic con el botón secundario del ratón sobre Vistas. Se

abrirá la ventada que se muestra a continuación.

Page 114: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 113

Seleccionar Nueva Vista para abrir un nuevo cuadro de dialogo. Este cuadro de dialogo

facilita la elección de tablas desde donde se podrán incluir los datos. Como se pude

seleccionar más de una tabla? Solo se tiene que mantener presionado la tabla y luego

la tecla Control mientras se seleccionan todas las tablas que se necesitan, luego dar

clic en el botón Agregar para que SQL Server agregue las diversas Tablas

seleccionadas a la Vista.

Page 115: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 114

Ahora hay que seleccionar las columnas que se necesitan para crear la vista.

Page 116: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 115

Una vez realizado el proceso, el diseñador de vistas proporciona el siguiente código

SQL:

SELECT dbo.Orders.OrderDate, dbo.Customers.CompanyName, dbo.Products.ProductName, dbo.[Order Details].ProductID, dbo.[Order Details].UnitPrice, dbo.[Order Details].Quantity, dbo.[Order Details].Quantity * dbo.[Order Details].UnitPrice AS ExtendedPrice

FROM dbo.Customers INNER JOIN dbo.Orders ON dbo.Customers.CustomerID = dbo.Orders.CustomerID INNER

JOIN dbo.[Order Details] ON dbo.Orders.OrderID = dbo.[Order Details].OrderID

INNER JOIN dbo.Products ON dbo.[Order Details].ProductID = dbo.Products.ProductID

Luego dar clic en el icono Guardar que tiene forma de disquete y cerrar el diseñador de

vistas.

Eliminar una Vista (Transact-SQL)

DROP VIEW (T-SQL)

Quita una o más vistas de la base de datos actual. Las vistas de la tabla quitada

(mediante la instrucción DROP TABLE) se deben quitar explícitamente con DROP

VIEW.

Sintaxis

DROP VIEW {vista} [,…n]

Page 117: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 116

Argumentos

vista

Es el nombre de la vista que se va a quitar. Los nombres de vistas deben seguir las

reglas de los identificadores.

n

Es un marcador de posición que indica que se pueden especificar varias vistas.

Ejemplo:

DROP VIEW dbo.CLIENTES_VW

Cómo eliminar una vista (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Expanda Bases de datos, la base de datos a la que pertenece la vista y, a

continuación, haga clic en Vistas.

En el panel de detalles, haga clic con el botón secundario del mouse en la vista

y, a continuación, haga clic en Eliminar.

Para ver cómo va a afectar la eliminación de esta vista a la base de datos, haga

clic en Mostrar dependencias…

Haga clic en Quitar todos.

Page 118: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 117

Page 119: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 118

GUIA PRACTICA NO.12

1. Utilizando el Analizador de Consultas, realiza una Vista para Listar los Nombres de

de todas las tiendas ordenadas alfabéticamente.

2. Utilizando el Analizador de Consultas, realice una vista para Listar el detalle de

ventas por tienda, la información que tendrá de la tienda es : stor_id, stor_name y

los datos de las ventas title_id y qty

3. Utilizando el Administrador Corporativo, realice una vista para Obtener el total de

Ingresos obtenidos para cada libro, el resultado tendrá que contener: title_id, title,

price, qty y el Ingreso = qty * price. ( titles, sales)

4. Utilizando el Asistente para Creación de Vistas, realice una vista para Encontrar el

tipo de libro , el precio promedio , precio mínimo y precio máximo para cada tipo de

Libro

8. CREACION DE INDICES

Objetivo:

Al finalizar el tema, el participante será capaz de crear los diferentes tipos de Índices

que existen para Tablas de Datos.

Los índices de una base de datos son similares a los índices que hay en los libros. En

un libro, un índice le permite encontrar información rápidamente sin necesidad de leer

todo el libro. En una base de datos, un índice permite que el programa de la base de

datos busque datos en una tabla sin necesidad de examinar toda la tabla. El índice de

un libro es una lista de palabras con los números de las páginas en las que se

encuentra cada palabra. Un índice de una base de datos es una lista de los valores de

una tabla con las posiciones de almacenamiento de las filas de la tabla donde se

encuentra cada valor. Se puede crear índices en una sola columna o en una

Page 120: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 119

combinación de columnas de una tabla; los índices se implementan en forma de

árboles B. Un índice contiene una entrada con una o varias columnas (la clave de

búsqueda) de cada fila de una tabla. Un árbol B se ordena con la clave de búsqueda y

se puede buscar de forma eficiente en cualquier subconjunto principal de la clave de

búsqueda. Por ejemplo, un índice en las columnas A, B y C puede buscarse de forma

eficiente en A, en A y B, y en A, B y C.

Mientras que la mayor parte de los libros contienen un índice general de palabras,

nombres, lugares, etc., las bases de datos contienen índices individuales para tipos o

columnas de datos seleccionados. Es como un libro con un índice para los nombres de

las personas y otro índice para los lugares. Cuando cree una base de datos y la

optimice para mejorar el rendimiento, es recomendable que cree índices para las

columnas que se utilizan en las consultas con el fin de buscar datos.

En la base de datos de ejemplo pubs suministrada con Microsoft® SQL Server™, la

tabla employee tiene un índice en la columna emp_id. En la siguiente ilustración se

muestra cómo almacena el índice cada valor emp_id y señala a las filas de datos de la

tabla con cada valor.

Page 121: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 120

Cuando SQL Server ejecuta una instrucción para buscar datos en la tabla employee a

partir de un valor de emp_id específico, reconoce el índice para la columna emp_id y

lo utiliza para buscar los datos. Si no hay un índice, empieza desde el principio de la

tabla y va buscando, fila por fila, el valor de emp_id especificado.

SQL Server crea automáticamente índices para determinados tipos de restricciones

(por ejemplo, restricciones de clave principal (PRIMARY KEY) y de no duplicados

(UNIQUE)). También puede personalizar las definiciones de la tabla mediante la

creación de índices independientes de las restricciones.

No obstante, las ventajas que ofrecen los índices por lo que respecta al rendimiento

también tienen un costo. Las tablas con índices necesitan más espacio de

almacenamiento en la base de datos. Asimismo, es posible que los comandos de

inserción, actualización o eliminación de datos sean más lentos y precisen más tiempo

de proceso para mantener los índices. Cuando diseñe y cree índices, deberá

asegurarse de que las ventajas en el rendimiento compensan suficientemente el costo

adicional en cuanto a espacio de almacenamiento y recursos de proceso.

Indices UNIQUE

Un índice único asegura que la columna indizada no contiene valores duplicados. En el

caso de índices únicos para varias columnas, el índice asegura que cada combinación

de valores de la columna indizada sea única. Por ejemplo, si se crea un índice único

nombreCompleto para una combinación de las columnas apellido1, apellido 2 y

nombre, no habrá dos personas con el mismo nombre completo en la tabla.

Tanto los índices agrupados como los no agrupados pueden ser únicos. Por lo tanto,

siempre que los datos de la columna sean exclusivos, puede crear para la misma tabla

un índice exclusivo agrupado y varios índices exclusivos no agrupados.

Si las columnas de una cláusula WHERE utilizan el operador igual a (=) con columnas

en el índice, el optimizador de consultas utiliza el índice único para procesar la

Page 122: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 121

consulta. Esto se debe a que pocas filas se ajustarán a la consulta, por lo que la

utilización del índice implica un costo fijo mínimo. Por ejemplo, si la consulta buscara

las columnas apellido1 y nombre, se utilizaría el índice nombreCompleto aunque no

se especificara la columna apellido2.

Consideraciones

Resulta conveniente especificar un índice único sólo si los propios datos se

caracterizan por ser únicos. Si debe exigirse que los valores sean únicos para asegurar

la integridad de los datos, cree una restricción de no duplicados (UNIQUE) o de clave

principal (PRIMARY KEY) para la columna, en vez de utilizar un índice único. Por

ejemplo, si ha previsto realizar con frecuencia consultas referentes a la columna de

números de la Seguridad Social (ssn) de la tabla de empleados (donde la clave

principal es emp_id) y desea asegurarse de que los números de la Seguridad Social

sean exclusivos, cree una restricción de exclusividad (UNIQUE) en ssn. Si el usuario

escribe el mismo número de Seguridad Social para más de un empleado, se mostrará

un error.

Índices NONCLUSTERED

Un índice no agrupado es similar al índice de un libro de texto. Los datos se almacenan

en un lugar, el índice en otro, con punteros que señalan hacia la ubicación de

almacenamiento de los datos. Los elementos del índice se almacenan en el mismo

orden que los valores de la clave del índice, pero la información de la tabla se

almacena en un orden distinto (que puede estar definido por un índice agrupado). Si no

se crea ningún índice agrupado en la tabla, no se garantiza que las filas sigan un orden

determinado.

Del mismo modo que se usa el índice de un libro, Microsoft® SQL Server™ busca un

dato en el índice no agrupado para localizar la ubicación del dato en la tabla y, a

Page 123: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 122

continuación, recupera los datos directamente de esa ubicación. Este sistema convierte

a los índices no agrupados en la opción más apropiada para las consultas de

coincidencia exacta, dado que el índice contendrá entradas que describan la ubicación

exacta en la tabla de los valores de datos que se buscan en las consultas. Si se ordena

la tabla subyacente con un índice agrupado, la ubicación es el valor de la clave de

agrupación; de lo contrario, la ubicación es el identificador de fila (RID), que contiene el

número del archivo, el número de la página y el número de zona de la fila. Por ejemplo,

para buscar un identificador de empleado (emp_id), en una tabla que tiene un índice

no agrupado para la columna emp_id, SQL Server busca en el índice una entrada en la

que figure la página y la fila de la tabla en la que se puede encontrar el identificador de

empleado coincidente, y va directamente a esa página y fila.

Varios índices no agrupados

Algunos libros contienen varios índices. Por ejemplo, un libro que trate de jardinería

puede contener un índice para los nombres comunes de las plantas y otro índice para

los nombres científicos porque constituyen las formas más habituales que tienen los

lectores para buscar información. Ocurre lo mismo con los índices no agrupados.

Puede definir un índice no agrupado para cada una de las columnas que se utilicen

más a menudo para buscar los datos de una tabla.

Consideraciones

Antes de crear índices no agrupados, debe conocer cómo se tiene acceso a los datos.

Considere la posibilidad de utilizar índices no agrupados para:

Las columnas que contengan un gran número de valores distintos como, por ejemplo,

una combinación de apellidos y nombre (si se utiliza un índice agrupado para otras

columnas). Si hay pocos valores distintos, como el 1 y el 0, no conviene crear ningún

índice.

Las consultas que no devuelvan conjuntos de resultados de gran tamaño.

Page 124: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 123

Las columnas que suelan incluirse en las condiciones de búsqueda de una consulta

(cláusula WHERE) que devuelva coincidencias exactas.

En aplicaciones del Sistema de ayuda a la toma de decisiones en las que se necesiten

con frecuencia combinaciones y agrupaciones. Cree varios índices no agrupados para

las columnas que intervienen en operaciones de combinación y de agrupación, y un

índice agrupado para las columnas de clave externa.

Índices CLUSTERED

Un índice agrupado determina el orden de almacenamiento de los datos en una tabla.

Un índice agrupado es análogo a una guía telefónica, en la que los datos se ordenan

por apellidos. Dado que el índice agrupado dicta el orden de almacenamiento físico de

los datos de una tabla, una tabla puede contener únicamente un índice agrupado. Sin

embargo, el índice puede contener varias columnas (índice compuesto), del mismo

modo que un listín telefónico está organizado por apellidos y nombres.

Un índice agrupado resulta especialmente eficiente para las columnas en las que se

buscan frecuentemente intervalos de valores. Cuando se encuentra la fila con el primer

valor mediante el índice agrupado, se garantiza que las filas con los valores indizados

subsiguientes son físicamente adyacentes. Por ejemplo, si una aplicación ejecuta

frecuentemente una consulta para recuperar registros de un intervalo de fechas, un

índice agrupado puede localizar rápidamente la fila que contiene la fecha de inicio y, a

continuación, recuperar todas las filas adyacentes de la tabla hasta llegar a la última

fecha. De ese modo se puede incrementar el rendimiento de este tipo de consulta.

Asimismo, si hay alguna columna que se utilice frecuentemente para ordenar los datos

recuperados de una tabla, puede resultar ventajoso agrupar (ordenar físicamente) la

tabla según esa columna, o columnas, con el fin de evitar el costo adicional que supone

llevar a cabo una ordenación cada vez que se realiza una consulta que implica a la

columna.

Page 125: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 124

Los índices agrupados también son eficientes para buscar una fila determinada cuando

el valor indizado es único. Por ejemplo, el método más rápido para buscar a un

empleado determinado en la columna con valores únicos emp_id consistiría en crear

un índice agrupado o una restricción de clave principal (PRIMARY KEY) para la

columna emp_id.

Nota Las restricciones de clave principal (PRIMARY KEY) crean índices agrupados de

forma automática si no hay ningún índice agrupado en la tabla y no se especifica

ningún índice no agrupado cuando se crea la restricción.

Como alternativa, también podría crearse un índice agrupado para lname, fname

(apellido, nombre), porque es más probable que se agrupen y se consulten de ese

modo los registros de los empleados a que se consulten y se agrupen por identificador

de empleado.

Consideraciones

Es importante definir la clave de índice agrupado con el menor número de columnas

posible. Si se define una clave de índice agrupado de gran tamaño, los índices no

agrupados que se definan en la misma tabla serán mucho mayores, ya que las

entradas de índice no agrupado contienen la clave de agrupación.

Antes de crear índices agrupados, debe conocer cómo se tiene acceso a los datos.

Considere la posibilidad de utilizar un índice agrupado para:

Las columnas que contengan un número limitado de valores distintos como, por

ejemplo, una columna de estados que contenga únicamente 50 códigos de estado. No

obstante, si hay muy pocos valores distintos, como 1 y 0, no debe crearse ningún

índice.

Las consultas que devuelvan un intervalo de valores que utilicen operadores como

BETWEEN, >, >=, < y <=.

Las columnas a las que se tenga un acceso secuencial.

Page 126: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 125

Las consultas que devuelvan conjuntos de resultados de gran tamaño.

Las columnas a las que tengan acceso frecuente consultas con cláusulas de

combinación o GROUP BY; normalmente, son columnas de clave externa. Un índice en

la columna, o columnas, especificado en la cláusula ORDER BY o GROUP BY elimina

la necesidad de que SQL Server ordene los datos debido a que las filas ya están

ordenadas. De ese modo se aumenta el rendimiento de las consultas.

Las aplicaciones del tipo OLTP, en las que se precisa buscar filas con gran rapidez,

normalmente mediante una clave principal. Cree un índice agrupado en la clave

principal.

Los índices agrupados no son adecuados para:

Las columnas en las que se realizan cambios con frecuencia, ya que esto provoca que

se mueva toda la fila (porque SQL Server debe mantener ordenados físicamente los

valores de los datos de la fila). Esta consideración es importante cuando se trabaja con

sistemas de procesamiento de gran volumen, en los que los datos tienden a ser

volátiles.

Consultas cubiertas. Cuanto mayor sea el número de columnas que haya en la clave

de búsqueda, más posibilidades habrá de que cambien los datos de la columna

indizada, lo que provoca operaciones de E/S adicionales.

Creación de Indices (Transact SQL)

Sintaxis

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX nombreÍndice ON tabla (columna [,…n])

Argumentos

Page 127: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 126

UNIQUE

Crea un índice único (uno en el que no se permite que dos filas tengan el mismo valor

de índice). Microsoft® SQL Server™ comprueba si hay valores duplicados cuando se

crea el índice (si ya existen datos) y realiza la comprobación cada vez que se agregan

datos con una instrucción INSERT o UPDATE. Si existen valores de clave duplicados,

se cancela la instrucción CREATE INDEX y se devuelve un mensaje de error con el

primer duplicado. Un índice único no se puede crear en una columna individual ni en

columnas múltiples (índice compuesto) en las que la clave completa (todas las

columnas de esa clave) sea NULL en más de una fila; para la indización, éstas se

tratan como valores duplicados.

SQL Server no permite la creación de un índice único sobre columnas que ya

contengan valores duplicados, ya esté establecido o no IGNORE_DUP_KEY. Si se

intenta, SQL Server muestra un mensaje de error; los duplicados deben eliminarse

antes de que se pueda crear un índice único sobre la columna o columnas.

CLUSTERED

Crea un objeto en el que el orden físico de las filas es el mismo que el orden indizado

de las filas y el nivel inferior (hojas) del índice agrupado contiene las filas actuales de

datos. Como los índices no agrupados se vuelven a generar cuando se crea un índice

agrupado, cree el índice agrupado antes de crear los índices no agrupados.

Si no se especifica CLUSTERED, se crea un índice no agrupado.

Nota Debido a que el nivel hoja de un índice agrupado y sus páginas de datos son, por

definición, lo mismo, la creación de un índice agrupado y la utilización de la cláusula

ON grupoArchivos mueve efectivamente una tabla desde el archivo en que se creó la

tabla al nuevo grupo de archivos. Antes de crear tablas o índices en grupos de archivos

específicos, compruebe qué grupos de archivos están disponibles y que esos grupos

Page 128: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 127

de archivos tengan suficiente espacio libre para el índice. Es vital que los grupos de

archivos tengan al menos 1,2 veces el espacio requerido para la tabla completa.

NONCLUSTERED

Crea un objeto que especifica la ordenación lógica de una tabla. Con un índice no

agrupado, el orden físico de las filas no es el mismo que su orden indizado. El nivel

hoja de un índice no agrupado contiene las filas del índice. Cada fila del índice contiene

el valor de clave no agrupada, y uno o varios localizadores de fila que apuntan a la fila

que contiene dicho valor. Si la tabla no tiene un índice agrupado, el localizador de fila

es la dirección de disco de la fila. Si la tabla tiene un índice agrupado, el localizador de

fila es la clave del índice agrupado de la fila.

Cada tabla puede tener hasta 249 índices no agrupados (sin importar cómo se hayan

creado: implícitamente con las restricciones PRIMARY KEY y UNIQUE, o

explícitamente con CREATE INDEX). Cada índice puede proporcionar acceso a los

datos en un orden distinto.

nombreÍndice

Es el nombre del índice. Los nombres de índice deben ser únicos en una tabla, aunque

no tienen por qué ser únicos en una base de datos. Los nombres de índice deben

seguir las reglas de los identificadores.

Nota Una columna calculada, tal como se crea con una instrucción CREATE TABLE,

no se puede utilizar como columna clave ni como parte de una definición de las

restricciones PRIMARY KEY, UNIQUE, FOREIGN KEY y CHECK.

tabla

Page 129: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 128

Es la tabla que contiene la columna o columnas que deben indizarse. Especificar los

nombres de la base de datos y del propietario de la tabla es opcional.

columna

Es la columna o columnas a las que se aplica el índice. Especifique dos o más

nombres de columna para crear un índice compuesto sobre los valores combinados de

las columnas especificadas. Enumere las columnas que desee incluir en el índice

compuesto (en orden de prioridad) entre paréntesis después de tabla.

Nota No se pueden especificar como columnas de un índice las columnas que tengan

los tipos de datos ntext, text, image o bit, ni se pueden utilizar funciones.

Los índices compuestos se utilizan cuando dos o más columnas se buscan mejor como

una unidad o si muchas consultas hacen referencia sólo a columnas especificadas del

índice. En un único índice compuesto se pueden combinar hasta 16 columnas. Todas

las columnas de un índice compuesto deben encontrarse en la misma tabla. El tamaño

máximo permitido de los valores de índice combinado es 900 bytes. (Es decir, la suma

de las longitudes de las columnas que forman el índice compuesto no puede

sobrepasar 900 bytes.)

n

Es un marcador de posición que indica que se pueden especificar múltiples columnas

para cualquier índice particular.

Ejemplo:

CREATE CLUSTERED INDEX IDX_CODIGO ON Clientes (CODIGO) ON [PRIMARY]

Cómo crear un índice en una tabla existente (Administrador corporativo)

Expanda un grupo de servidores y, a continuación, expanda un servidor.

Page 130: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 129

Expanda Bases de datos, la base de datos a la que pertenece la tabla y, a

continuación, haga clic en Tablas.

Haga Clic en la tabla a la que desea crear el índice y a continuación en índices

haga clic con el botón secundario del ratón

Haga clic en Nuevo…

En Columna, seleccione la columna que aparecerá en el índice. Se pueden

crear índices compuestos si se selecciona más de una columna.

Opcionalmente, seleccione una columna y haga clic en Subir o en Bajar para cambiar

el orden de las columnas en el índice.

Opcionalmente, en Opciones del índice, seleccione:

Valores únicos para crear un índice único.

Índice agrupado para crear un índice agrupado. Si ya existe un índice

agrupado, esta opción no estará disponible.

Pasar por alto valores duplicados para controlar qué ocurre cuando una

instrucción INSERT inserta varios valores de clave no únicos en un índice.

Page 131: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 130

Page 132: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 131

GUIA PRACTICA NO.13

1. Usando el Analizador de Consultas, construya índices para las tablas de la Base

de Datos Inventarios. ( Sólo para las Tablas que considere que lo necesiten )

2. Usando el Administrador Corporativo, construya los Índices que desarrollo en el

ejercicio anterior.

Page 133: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 132

9. DIAGRAMA DE BASE DE DATOS

Objetivo:

Al finalizar el tema, el participante será capaz de realizar Diagramas de Bases de Datos

utilizando el Administrador Corporativo.

Puede crear, modificar o eliminar objetos de base de datos mientras mantenga una

conexión directa con la base de datos en que están almacenados esos objetos.

Para interactuar con la base de datos del servidor, se utilizan diagramas de base de

datos. Se puede tener acceso a los diagramas de base de datos a través del

Administrador corporativo de SQL Server. Los diagramas de base de datos representan

gráficamente las tablas en la base de datos. Los diagramas de base de datos muestran

las columnas que las tablas contienen, las relaciones entre las tablas, y los índices y

restricciones de las tablas. Después de que se haya establecido una conexión con la

base de datos, puede utilizar diagramas de base de datos para:

Ver las tablas y sus relaciones en una base de datos.

Realizar operaciones complejas para alterar la estructura física de una base de

datos.

Puede realizar cambios en el diagrama de base de datos sin que afecten a la

base de datos subyacente. Cuando utiliza un diagrama de base de datos para

modificar un objeto de base de datos, las modificaciones no se guardan en la

base de datos hasta que guarda la tabla o el diagrama de base de datos. De

este modo, puede experimentar con escenarios de tipo “qué sucedería si” en el

diseño de la base de datos sin que esto afecte al diseño o a los datos existentes.

Guardar los cambios realizados en las tablas seleccionadas o en el diagrama de

base de datos y hacer que los cambios modifiquen la base de datos del servidor.

Si no desea guardar los cambios realizados en las tablas seleccionadas o en el

diagrama de base de datos, puede descartar los cambios.

Page 134: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 133

Guardar una secuencia de comandos de cambio que contenga el código

Transact-SQL generado por los cambios que realice en el diagrama de base de

datos. Si guarda una secuencia de comandos de cambio en lugar de guardar los

cambios a la base de datos, podrá cambiar la secuencia de comandos con un

editor de texto y, después, aplicarla a la base de datos.

También puede optar por crear automáticamente una secuencia de comandos

de cambio cada vez que guarde el diagrama de base de datos o cualquier objeto

de base de datos en el diagrama. Esto le proporciona un registro de los cambios

realizados en la base de datos.

Se puede controlar el momento, el tipo y la extensión de los cambios a la base

de datos si elige cómo van a afectar los cambios realizados en el diagrama de

base de datos a la base de datos del servidor.

Crear y administrar los diagramas de base de datos

Puede utilizar los diagramas de base de datos para:

o Manipular objetos de base de datos sin tener que escribir código

Transact-SQL.

o Visualizar las estructuras de las tablas de base de datos y las relaciones

entre las tablas.

o Proporcionar distintas presentaciones de bases de datos complejas.

o Experimentar con cambios de base de datos sin modificar la base de

datos subyacente.

o Crear nuevas tablas, índices, relaciones y otras restricciones.

Modificar la estructura de la base de datos.

Creación de Diagramas

Crear un nuevo diagrama haciendo clic con el boto secundario del ratón sobre el nodo

Diagrama de Base de datos de baja de la base de datos Northwind y seleccionando

la opción Nuevo diagrama de base de datos.

Page 135: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 134

SQL Server abre el cuadro de dialogo Agregar Tabla con una lista de las distintas

tablas.

Seleccione todas las tablas (recuerde que debe de mantener presionada la tecla

Control para seleccionar más de una tabla) excepto la tabla ConvertText o, en su caso,

la tabla sysdiagrams (en realidad son tablas del sistema que solo existen para admitir la

creación de diagramas).

Haga clic en Agregar, y tras una breve pausa en la que SQL Server dibuja todas las

tablas seleccionadas, haga clic en el botón cerrar. SQL Server agrega las tablas al

diagrama, pero dependiendo de la resolución de la pantalla, probablemente sea difícil

de ver debido al aumento o disminución aplicados al diagrama. Para que encajen

todas las tablas en la vista, se deberá cambiar la configuración de la opción Zoom en la

barra de herramientas. Encontrar el equilibrio correcto entre ver muchas tablas y leer su

contenido es algo difícil, pero podrá ajustar la vista a su gusto particular.

Page 136: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 135

Page 137: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 136

Como funciona

SQL Server enumera cada una de las tablas que se le ha indicado que se desea

agregar al diagrama y se ha analizado los otros objetos asociados a dichas tablas. Los

otros elementos que se puede ver aparte de la propia tabla son algunos de los muchos

objetos vinculados a las tablas (claves principales, claves externas).

Tablas

Cada tabla tiene su propia ventana que se puede desplazar. La clave principal aparece

con el pequeño símbolo de una llave a la izquierda del nombre en la columna.

Para agregar una tabla existente al diagrama hacer clic en el boto Agregar Tabla en la

barra de herramientas de la ventana de creación de diagramas. Para agregar un nueva

tabla a la base de datos desde el diagrama haga clic en el botón Nueva Tabla en la

barra de herramientas de la venta de la creación de diagramas. Se abrirá un mensaje

solicitando que elija el nombre de la tabla. Escriba el nombre CustomerNotes ( notas

del cliente).

Page 138: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 137

Como funciona

Cuando se crea un diagrama, SQL Server crea una secuencia de comandos tras el

escenario. Sin embargo, dichas secuencias de comandos no se generan ni se ejecutan

en tanto no se guardan en el diagrama.

Ventana de Propiedades

A parte de los atributos básicos que se han analizado, también se pueden editar otras

muchas facetas de la tabla. Existen dos formas para modificar o agregar dichos

atributos:

Propiedades: las propiedades se editan en una ventana emergente y que se

acopla de forma predeterminada, a la derecha de la ventana de creación de

diagramas en el Administrador Corporativo. Para abrir la ventana de

Propiedades, hacer clic en el icono Ventana de Propiedades de la barra de

herramientas del Administrador Corporativo.

Page 139: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 138

Objetos: los objetos que pertenecen a la tabla, como los índices, las

restricciones y las relaciones, se editan en su propio cuadro de dialogo, al que

podemos acceder haciendo clic en el botón derecho del ratón en la tabla dentro

del diagrama y seleccionando el elemento deseado.

Relaciones

Se agregara una relación a la tabla CustomerNotes con la tabla Customers; después

de todo, si hay una nota de un cliente probablemente será necesario tomar notas sobre

un cliente existente o valido en el sistema. Para ello, haga clic y mantener pulsado el

ratón en el área gris que se encuentra a la izquierda de la columna CustomerID en la

tabla Customers y arrastre el raton hasta que apunte a la columna de CustomerID de la

tabla CustomerNotes. Se abrirá un cuadro de dialogo para confirmar la asignación de

columna entre las tablas asignada.

Page 140: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 139

Si se ha arrastrado y colocado correctamente, deben aparecer los nombres de las

columnas en ambos lados de la relación, pero si aparece algo distinto a lo esperado, no

se preocupe mucho: solo se tendrá que hacer clic en el cuadro combinado de la tabla

para la que se desea cambiar las columnas y seleccionar la nueva columna. Cambiar el

nombre predeterminado de la relación, FK_CustomerNotes_Customers por

CustomerHasNotes.

Page 141: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 140

Como Funciona

SQL Server construye SQL tras el escenario para realizar los cambios necesarios.

Hasta el momento, ha agregado la relación solo al diagrama (si coloca el rato sobre la

relación podrá ver una sugerencia de pantalla con el nombre y la naturaleza de la

relación).

Page 142: PROGRAMA NACIONAL DE FORMACION CONTINUA-AREA TECNICA

Page 141

GUIA PRACTICA NO.14

Realizar el diagrama Entidad Relación de la base de datos creada en la Guía práctica

No 8.