SQL (Structured Query Language)

Lenguaje de consulta estructurado relacional. Sistema gestor de bases de datos. Diagramas. Usuarios. Permisos. Copias de seguridad. Scripts

  • Enviado por: El remitente no desea revelar su nombre
  • Idioma: castellano
  • País: España España
  • 35 páginas

publicidad
publicidad

MICROSOFT SQL SERVER

1.- REQUERIMIENTOS DEL SISTEMA

Microsoft SQL Server 2000 opera en ordenadores con procesador Intel o compatibles Pentium, Pentium Pro, o Pentium II Procesador. Éstos tienen que tener como mínimo 166MHz.

Las ediciones y versiones de SQL Server 2000 necesitan la siguiente memoria RAM:

Enterprise Edition: 64 MB de mínimo o 128 MB recomendado.

Standard Edition: 64 MB de mínimo.

Personal Edition: 64 MB en Windows 2000, 32 MB en todos los demás sistemas operativos.

Developer Edition 64 MB de mínimo

Desktop Engine 64 MB mínimo en Windows 2000, 32 MB en los demás sistemas operativos

SQL Server 2000 necesita tener los siguientes requerimientos dependiendo de los componentes de instalación seleccionados.

Database components de 95 a 270 MB, 250 MB típica

Analysis Services 50 MB minimo, 130 MB típica

English Query 80 MB

Desktop Engine only 44 MB

SQL Server 2000 requiere un monitor con resolución VGA; las herramientas de gráficos de SQL Server requieren un monitor con resolución 800x600 o superior.

SQL Server 2000 requiere un CD-ROM, y un ratón Microsoft o compatible.

SQL Server 2000 requiere Internet Explorer 5.0 o posterior y es soportado por los siguientes sistemas operativos:

  • Windows 2000

  • Microsoft Windows NT version 4.0 Service Pack 5 or later

  • Windows Millennium Edition

  • Windows 98

  • Windows 95

Después de instalar el software de SQL Server 2000 en Windows 95, debes instalar Winsock 2 Update para Windows 95. Esta actualización esta provista en el CD de SQL Server 2000 y puedes instalarlo seleccionándolo en dicho CD. El CD de SQL Server 2000 esta provisto de auto arranque.

SQL Server 2000 no es soportado en Windows NT 4.0 Terminal Server.

Para más información acerca de la instalación de SQL Server 2000 puede recurrir a consultar un manual de SQL Server 2000 o en WEB.

2.- Proceso de instalación. El usuario `sa'.

PROCESO DE INSTALACIÓN

El primer paso, es elegir entre Local Computer o Remote Computer. Elegimos instalarlo en la máquina local, es decir, la primera opción.

A continuación sale dicha ventana.

{SQL}

En ella marcamos la opción indicada, que viene por defecto, y le damos a Next.

Después de esta acción aparece la ventana para poner el nombre de la persona y la compañía a la que va registrado el producto.

Pulsamos Next y aparece la ventana en la cual aceptamos el contrato, si estás de acuerdo con las condiciones.

Después de aceptar el contrato sale la ventana para seleccionar las herramientas a instalar, que se muestra a continuación.

{SQL}

- La primera opción es instalar Herramientas de Cliente sólo.

- La segunda opción es instalar Herramientas de Cliente y Servidor.

- La tercera opción es instalar Sólo Conexión.

En nuestro caso hemos elegido instalar la segunda opción, que viene por defecto.

A continuación se muestra la ventana con los tipos de instalación.

También aparecen la ruta de las carpetas de instalación, así como el espacio requerido y disponible de los tipos de instalación.

{SQL}

En dicha ventana, elegimos Typical, y las carpetas de instalación por defecto. Pulsamos Next.

Aparece la siguiente ventana. En ella se muestra elegir el servicio de cuentas.

{SQL}

La primera opción es usar la misma cuenta para cada instalación y comenzar automáticamente la instalación de SQL Server.

La segunda opción es personalizar la instalación para cada servicio.

En nuestro caso elegimos la primera opción, que también viene por defecto.

En el apartado Service Setting hay dos opciones.

La primera es usar una cuenta en el servicio local, y la segunda es usar una cuenta en un dominio.

Elegimos la Primera.

Pulsamos Next. y aparece la siguiente ventana.

En ella elegimos el modo de identificación.

Hay dos, el primero es el modo de identificación de Windows, y el segundo es mixto, es decir, la identificación de Windows y la identificación de SQL Server.

En esta última, se introduce la contraseña del administrador.

Nosotros optamos por elegir la primera, que además viene por defecto.

{SQL}

Cuando pulsamos Next aparece la ventana del modo de licencia. Se pulsa Continue y comienza la instalación.

USUARIO “sa”

Figuras de administración: Users y sa

En SQL Security Manager solo existen dos grupos de usuarios desde el punto de vista de los permisos que poseen estos son los usuarios (users) y los administradores (sa).

Los usuarios pueden administrase sólo en estos dos grupos, de tal manera que existen dos vistas diferenciadas : las vistas de los usuarios con privilegios user y la de los usuarios con privilegios sa

Usuarios por defecto

Al instalar el sistema se generan automáticamente, ( en caso de no el sistema no participe en casos de replicación ) de los usuarios sa y probe y en caso que este realizando replicaciones se generan dos adicionales repl_publisher y repl_subcriber

El administrador sa

El usuario que ingresa con esta password tiene todos los privilegios que su nombre indica es el administrador del sistema y el propietario de las bases de datos propias del sistema ( master model tempdb msdb), Además sa es visto por el sistema como el propietario alternativo de todas las bases de datos que se creen en el sistema

3.- Aplicaciones que se instalan con SQL Server: Administrador de servicio, generador de consultas con Transact-SQL , ...

El siguiente grafico muestra todas las aplicaciones que se instalan con SQL Server

{SQL}

1.-

2.-

3.-

4.-

5.-

6.-

7.-

8.-

9.-

Opción 1:

Son unos libros de ayuda de SQL Server.

Opción 2:

Son las herramientas de red de clientes. Esta utilidad es una definición o visualización de los datos respecto al servidor. En la ventana hay 4 pestañas desplegables.

{SQL}

En la pestaña General podemos elegir los protocolos que vamos a utilizar, algunos de ellos son: TCP/IP, Multiprotocol, IPX/SPX, etc con sus correspondientes protocolos. Estos protocolos los podemos encriptar marcando en una de las casillas que hay.

En la pestaña Alias podemos poner el Alias del Servidor, su nombre y su modo de conexión, (piepe name)que se pone por defecto al darle al botón de Add. También se eligen los protocolos que vamos a utilizar.

En la pestaña DB-Librari Options (Opciones de librería de datos) nos da información de la ubicación donde están instaladas. Además hay dos casillas que están seleccionadas por defecto:

  • Automatic ANSI to OEM converion, (convertir automáticamente de ANSI a OEM)

  • Use international settings, (usar las propiedades internacionales)

En la pestaña Network Libraries nos aparece información sobre la ubicación donde están instaladas las librerías de cada protocolo, la versión que esta instalada y lo que ocupa cada una.

Opción 3:

Configure SQL XML Support in IIS, es un apoyo en IIS para la configuración de SQL.

Opción 4:

Enterprise Manager, proporciona la interfaz gráfica de administración y de uso de los servidores y de las bases de datos de la empresa. Es la opción principal en la que el administrador realiza todas sus funciones, tales como crear usuarios, bases de datos, tablas, etc...

Opción 5:

Import and Export Data, es una utilidad para la importación y exportación de datos. Es una herramienta muy sencilla de utilizar ya que se realiza todo gráficamente.

Opción 6:

Profiler, es una utilidad que permite registrar la actividad del servidor en tiempo real.

Opción 7:

Query Analizer (Analizador de consultas), es una interfaz gráfica que permite conectarse a un servidor, utilizar Transact-SQL, analizar las consultas y visualizar el plan de ejecución.

Se establece una conexión en el arranque y a continuación se pueden establecer otras más simultáneamente en el menú Archivo - Conectar...

Opción 8:

Server Network Utility, (Utilidades de Red del Servidor)

Aparece la siguiente ventana en la cual hay 2 pestañas:

{SQL}

  • General

Instance(s) on this server: sale la maquina local

Debajo está la lista de protocolos para habilitarlo o deshabilitarlos.

Hay un par de pestaña para forzar la encriptación o habilitar un proxi, con su correspondiente dirección y puerto de comunicación.

  • Network Libreries

Nos da información de la ubicación donde están instaladas las librerías de cada protocolo.

Opción 9:

Service Manager (Administrador de Servicios). Permite el arranque, pausa, parada o reinicio del servidor.

Tiene dos pestañas desplegables.

- Server: Nos ofrece los servidores que hay en el momento.

- Services: Nos ofrece los servicios que hay disponibles.

4.- Creacion de una base de datos

- Fichero de Datos. Propiedades.

SQL Server utiliza un conjunto de archivos para almacenar el conjunto de datos relativos a una base de datos.

El Archivo Primario: existe uno solo por base de datos, es el punto de entrada . Este archivo lleva la extensión *.mdf.

Archivos Secundarios: pueden existir varios por base de datos, y llevan la . extensión *.ndf.

Archivos Diarios: de estos archivos pueden haber varios, que contienen el . diario de las transacciones y llevan la extensión *.ldf.

Estructuras de los archivos de datos

Los archivos de datos se dividen en páginas de 8 KB. Estas páginas se agrupan en las extensiones. Las extensiones están constituidas por ocho páginas contiguas (64 KB). Representan la unidad de asignación de espacio para las tablas y los índices. Para evitar la pérdida de espacio en disco, existen dos tipos de extensiones:

  • Uniforme: reservada a un solo objeto.

  • Mixta: compartida por varios objetos, 8 como máximo.

Cuando se crea una tabla, las páginas se asignan en una extensión mixta. Cuando los datos representan ocho páginas se asigna una extensión uniforme a la tabla.

Los archivos de datos

Los archivos de datos pueden ser redimensionados de forma dinámica o manual. En el momento de la creación del archivo hay que precisar:

  • Nombre lógico del archivo para manipularlo con el lenguaje Transact -SQL.

  • Nombre físico para precisar la ubicación del archivo.

  • Un tamaño inicial.

  • Un tamaño máximo.

Tamaño de una BD:

Es la suma del espacio de almacenamiento de datos (datos, datos del usuario y tablas del sistema) más el tamaño del transaction log. SQL S. usa 3 unidades de tamaño en el almacenamiento: página (2kb), página extendida (8 pág. continuas), unidad de almacenamiento (256 pág. =0.5 Mb.)

La primer pág. se llama pág. de ubicación y contiene una matriz que especifica el uso de pág. cuando se crea la BD se especifican los dispositivos y la porción de los mismos que se destinará a esta BD lo que definirá el tamaño.

Bases de datos:

Para SQL Server, es una entidad lógica en la que se puede crear y almacenar objetos (triggers, vistas, y otros elementos) no puede existir ningún objeto que no se halle en una BD.

Limites del Sistema para creación de BD:

El nº max. De BD es 32.767, tamaño máx. de una BD es de un TB. (que puede estar distribuido en 32 disp. Como máx.), tamaño min y por defecto: es igual al de la BD modelo inicialmente de 2 MB)

Creación mediante Enterprise M.:

Seleccionar el modo database, presionar botón derecho del ratón y elegir del menú contextual new database (elegir nombre y dispositivo en el que residirá la BD).

Aparece la ventana siguiente:

{SQL}

Esta ventana tiene 3 pestañas:

  • General: En ella ponemos el nombre de la Base de Datos.

  • Data Files: Aparece el lugar donde se guarda y el espacio que ocupa al crearla. Tiene algunas opciones, como limitar el tamaño de la Base de Datos, etc.

  • Transaction Log: Es como el anterior, pero con el registro de transacciones.

Creación mediante CREATE DATABASE:

CREATE DATABASE BaseDatosPrueba

ON DatosPrueba = 2

LOG ON LogPrueba = 1

CREATE DATABASE nombre de la BD.

[ON {DEFAULT | DISP.DE LA BD }[TAMAÑO]]

[LOG ON disp [=tamaño]]

[FOR LOAD]

Si la BD ya existe y hubiese sufrido deterioro y deseamos recuperar de una copia de seguridad agregar FOR LOAD

-Registro de Transacciones. Propiedades

Transacciones: Son un conjunto de operaciones que se llevan a cabo de manera completa o se descartan (asegurando así la coherencia e integridad de datos)

El transaction log: Almacena las modificaciones de la BD hechas con INSERT, UPDATE, DELETE, a través de sentencias transact SQL se escriben en el transaction log antes de ejecutarse, tiene el objeto de mantener la integridad de los datos.

Inicio y final de una transacción: Cada sentencia transact SQL es una transacción el inicio se da por la sentencia BEGIN TRANSACTION. Especificadas las sentencias de las unidades de trabajo se puede validar o descartar. En la validación (se aceptan las modificaciones) se hace con COMMIT TRANSACTION, y para descartarla usa la sentencia ROLL BACK TRANSACTION.

La caché de datos: Las operaciones de la transacción, antes de ser validadas se almacenan temporalmente en una estructura de datos intermedia, la cache (implementada por SQL S sobre la RAM) que minimiza el n° de escrituras en disco, facilitando de este modo que el rendimiento sea mayor.

5.- Creación de Tablas

Tablas

La tabla en SQL Server es la unidad básica de almacenamiento de información. Existen sentencias en SQL para la manipulación de las mismas. Las tablas en SQL Server se pueden crear mediante el Enterprise Mananger o mediante sentencias Transact SQL (Lenguaje de SQL Server).

Creación mediante Enterprise Manager.

Hay que situarse sobre la Base de Datos deseada y dar al botón derecho del ratón sobre el icono de tables . Aparece la siguiente ventana, en la cual introducimos los campos con sus correspondientes propiedades.

{SQL}

Creacion mediante ordenes

Se utiliza la sentencia CREATE TABLE, su sentencia es la siguiente

CREATE TABLE [base de datos.[propietario].]nombre de table (columna tipo de datos [not null | null] IDENTITY [(semilla, incremento)] [restricción][,]{siguiente columna | siguiente restriccion}...])[ON nombre segmento]

Nombre de tabla

Contiene 3 partes: nombre de base de datos, identificador de usuario y nombre de tabla. Las dos primeras son opcionales.

La primera es la base de datos a la que pertenece, si se omite es la current database.

El creador es generamente el que se incluye en la segunda parte que puede no coincidir, si se omite es el creador.

El propietario puede autorizar a los demas usuarios a usar la tabla.

Tipos de datos definidos por el usuario

Ademas de los predefinidos, SQL Server da la posibilidad de crear tipos de datos. Estos tipos de datos son como los predefinidos con alguna caracteristica adicional.

Para crearlos se utiliza el PA sp_addtype.

sp_addtype nombre del tipo, tipo predefinido, null

sp_addtype nombre, char(20), null

Para eliminar el tipo de datos se usa el PA sp_droptype.

spdroptype nombre del tipo

Valores nulos

La especificación null permite que un campo pueda almacenarce sin dato.

CREATE TABLE alumnos (nombre char(20), edad int null)

INSERT INTO alumnos VALUES(`pepe')

Columnas con valores autoincrementales

Si se especifica IDENTITY, indica al gestor que cada nueva fila se deberá incrementar el valor de esta columna. Se puede tener una semilla inicial que se utiliza como valor inicial.

CREATE TABLE Alumnos (Nombre char(20), id int IDENTITY(100,1))

Restricciones

En SQL Server se llaman constraint, se utilizan para especificar condiciones de integridad referencial. Estas restricciones incluyen la definición de claves, limitaciones del valor a utilizar y valores por defecto.

CONTRAINT nombre de restricción(lista de columnas)

Los tipos de restricciones pueden ser:

PRIMARY KEY

Especifica que la columna será clave primaria.

CREATE TABLE Alumnos(Nombre char(20)) CONTRAINT Rest_Nombre PRIMARY KEY CLUSTERED(Nombre))

FOREIGN KEY

La columna será clave ajena que se vincula con otra, que debe ser primaria, siguiendo el modelo relacional.

Foreign y Primary Key , conforman lo que SQL Server denomina DRI (Declarative Referential Integrity)

CONSTRAINT nombre de restricción FOREIGN KEY (columnas) REFERENCES tabla vinculada (columnas)

UNIQUE

Indica que los valores de una columna deberán ser únicos. La columna podría no ser clave primaria.

CONSTRAINT nombre de restricción UNIQUE CLUSTERED/ NONCLUSTERED (Columnas)

La sentencia crea un índice para esta columna automáticamente.

CHECK

Esta restricción limita los valores admisibles en un campo mas alla de los especificado por el tipo de dato.

CHECK nombre de restricción (Columna IN (Lista de valores))

DEFAULT

Permite indicar valores por defecto a una columna en caso de omitir un dato en momento de agregar un registro.

DEFAULT nombre restricción valor FOR Columna

CREATE TABLE alumnos (nombre char(20),edad int, DEFAULT edad_def 20 FOR edad)

Modificación de tablas

Es posible añadir nuevas columnas o condiciones a una tabla existente mediante ALTER TABLE.

ALTER TABLE [base de datos.[propietario].]nombre tabla [WITH NOCHECK]

[ADD{ Columna propiedades [restricción [restricción]]] [DROP [CONSTRAINT] restricción]

Añadiendo columnas y restricciones

Es posible añadir nuevas columnas y restricciones a la tabla existente, especificado la cláusula ADD.

Eliminación de tablas

DROP TABLE [[Base de datos.]propietario.]nombre de tabla [, [[Base de datos.]propietario.]nombre de tabla]

6.- Diagrama de la Base de Datos

Nos vamos al Enterprise Manager. En la Base de Datos deseada, nos situamos sobre el icono Diagrams, botón derecho del ratón, y new database diagram. Se insertan las tablas de dicha Base de Datos y se procede a realizar las relaciones de integridad.

{SQL}

7. Restricciones sobre claves ajenas: triggers

Triggers

Es un procedimiento almacenado que se ejecuta como respuesta a una llamada explicita al mismo. Los triggers se utilizan entre otras cosas para establecer las reglas de integridad referencial.

Acciones que motivan la ejecución de un trigger

Los triggers se ponen en funcionamiento cuando se modifican los datos, ya sea actualización, inserción o borrado, existiendo un trigger para cada situación.

Un ejemplo es que cuando se agrega una fila se deben verificar el valor de cierto campos, validándolos contra otras tablas u valores. O para el borrado en cascada. O actualización en cascada.

Si se eliminasen o actualizasen múltiples filas o solo se llamara una vez la ejecución.

Sirven para:

- Preservar la integridad referencial. En el caso que dos o mas valores se hallen vinculados por sus claves no resulta posible modificar la primaria sin la ajena. Utilizando triggers controlamos este proceso, forzamos a actualizar los ajenos.

Establecimiento de condiciones complejas. Permiten validar multiples columnas.

- Respuesta a cambios de estado de tablas. Permiten examinar el estado de la tabla antes y despues de la actualizacion.

Creación de triggers

Aspectos básicos

Son procedimientos almacenados que se ejecutan como respuesta de la modificación de una tabla. Su utilidad básica es de mantener la integridad de los datos.

La sentencia encargada de su creación es CREATE TRIGGER, con una sintaxis similar a los otros objetos.

Creación de triggers mediante la sentencia CREATE TRIGGER

CREATE TRIGGER [propietario.] nombretrigger ON [propietario.] nombretabla FOR {INSERT, UPDATE, DELETE}

[WITH ENCRYPTION]

AS sentenciasSQL

O

CREATE TRIGGER [propietario.] nombretrigger ON [propietario.] nombretabla FOR {INSERT, UPDATE}

[WITH ENCRYPTION]

AS IF UPDATE nombrecolumna

[{AND | OR} UPDATE (nombrecolumna)...]

sentencias SQL

Acciones que desatan la ejecución del trigger

Cuando sobre una tabla se ejecuta una sentencia

UPDATE/ INSERT/ DELETE, seleccionada en FOR{UPDATE INSERT DELETE}

Recursividad

No se permite recursividad de ejecución en un trigger.

TRUNCATE TABLE

Cuando se produce un TRUNCATE TABLE no se ejecutan triggers.

Sentencias SQL del trigger

Al igual que un PA admite todo tipo de sentencias SQL exceptuando las sentencias de creación como:

  • CREATE VIEW

  • CREATE TRIGGER

  • CREATE DEFAULT

  • CREATE PROCEDURE

  • CREATE RULE

y otras mas como

  • CREATE DATABASE

  • CREATE INDEX

Tampoco se puede utilizar sentencias de borrado de tablas u elementos

DROP y de modificación de estructuras como:

  • ALTER DATABASE

  • ALTER TABLE

No se puede utilizar tampoco

  • TRUNCATE TABLE

  • GRANT

  • REVOKE

CREATE TRIGGER triggerprueba

ON dbo.authors

FOR INSERT

AS

Print `Nuevo autor'

Utilización de trigger para validar actualizaciones de tablas

Una de las principales utilidades es mantener las tablas coherentes, ya que se pueden validar los datos, tanto para añadir como para actualizar.

Las tablas Inserted y Deleted

Cuando se producen cambios sobre las tablas ya sean inserción, borrado o actualización, SQL Server ejecuta el trigger y además dispone de dos tablas temporales inserted y deleted con los datos antes de la actualización o borrado. Estas tablas se las puede manipular con SELECT.

8. Usuarios

Creación

Nos vamos al Enterprise Manager.

Dentro de una base de datos creada, botón derecho, New Database User. En Login Name, desplegamos la ventana que hay, y le damos a nuevo.

Sale la ventana de (nuevo usuario)

Le damos a new.

Sale la pantalla (nuevo login)

{SQL}

Asignación de permisos

Te situas sobre el usario y le das al boton derecho del raton propieadades, y entonces aparece una ventana y si le das al boton `Permissions...' te aparece la ventana (permisos). En esa ventana puedes ponerle a cada objeto de la base de datos los permisos que tu creas oportunos que deban tener (SELECT, INSERT, UPDATE, DELETE, EXEC, DRI )

{SQL}

Identificación de usuarios al acceder a la BD

Nos vamos a inicio, programas, Microsoft SQL Server, Query Analyzer (Analizador de consultas).

Sale la siguiente ventana:

En ésta elegimos el servidor al cual nos vamos a conectar. Ponemos el nombre de usuario creado anteriormente y su correspondiente contraseña.

En la parte posterior podemos elegir conectarnos a través de Windows authentication (Autentificación de Windows) o a través de SQL Server authentication (Autentificación de SQL Server).

En la primera, cuando un usuario se conecta a SQL Server, éste último verifica que el nombre y la clave se han validado cuando el usuario se ha conectado a Windows NT/95/98.

Si no se encuentra ninguna correspondencia entre las cuentas de NT y los logins de SQL Server, entonces se usa la cuenta guest (invitado).

Este usuario no se crea por defecto sino que debe ser añadido para que cualquier usuario que se conecte a SQL y no tenga un usuario asignado ingrese con este usuario. Ahora bien este usuario guest debe tener permisos limitados. Este usuario siempre tiene un uid igual a 2 y contiene los privilegios del grupo public.

9.- Copias de Seguridad.

Realización. Principales parámetros a tener en cuenta.

El guardado de una base de datos debe incluir todos los archivos, incluyendo el registro de transacciones, necesarios para la restauración de los datos en un estado coherente.

Las operaciones de guardar y restaurar deben planificarse para responder a todos lo casos. Los puntos más importantes son:

  • Guardar las bases de datos de sistema (master, msdb..) y de usuario. La frecuencia de las copias estará en función del uso de las bases.

  • Intentar guardar siempre reduciendo al mínimo el tiempo de restauración.

  • Probar la restauración para validar el guardado.

Las copias pueden hacerse de manera dinámica durante el trabajo de los usuarios; con Enterprise Manager o con la instrucción BACKUP.

Las copias pueden hacerse sobre las unidades de copia:

  • Disco

  • Cintas

  • Canales con nombre

Las unidades de copia pueden ser gestionadas por Enterprise Manager, o por el procedimiento almacenado sp_adddumpdevice.

Procesos de backup y restore

Políticas de copia de seguridad

Los procesos de backup escriben conjuntos de páginas en principio inconsistentes. Para hacerlos consistentes, los backup incluyen el Transaction Log. Las posibles metodologías de copia de seguridad son las siguientes:

-Backups completos periódicos

Se realizan backups periódicos de la base de datos completa. La ventaja es la facilidad de administración, el inconveniente es que no se garantizan los cambios desde el último backup.

-Backups completos periódicos con Transaction Log

  • Se realizan backups periódicos de la base de datos completa y con mayor frecuencia, backups del Transaction Log. La realización de copias de seguridad del Transaction Log proporciona una gran flexibilidad en la restauración de bases de datos, ya que permite restaurar la base de datos hasta el instante anterior a que se produjese un error, o hasta un instante determinado del tiempo.

  • Rendimiento de los procesos de backup

    Los benchmarkings de SQL Server proporcionan los siguientes resultados en cuanto a procesos de backup:

    • Un backup online consume aproximadamente un 15% de recursos de procesador. Un restore consume un 8%.

    • El ancho de banda utilizado por el backup apenas se ve penalizado por la carga del servidor.

    Para incrementar el rendimiento de los procesos de backup pueden tomarse las siguientes medidas:

    • Incrementar el paralelismo, es decir aumentar el número de unidades de cinta.

    • Balancear velocidades de discos y dispositivos de backup. La velocidad de lectura de disco puede medirse realizando un backup a nul.

    • No debe compartirse la controladora SCSI entre la unidad de cinta y el disco.

    • No debe utilizarse compresión hardware si los datos no son comprimibles (p.ej. una base de datos de imágenes)

    Como realizar una copia de seguridad.

    Nos vamos al Enterprise Manager. Nos situamos en la base de datos en la cual deseamos realizar una copia de seguridad. Botón derecho del ratón sobre ella, y realizar el procedimiento que aparece a continuación.

    {SQL}

    Una vez hecho este proceso, aparece la ventana que se muestra a continuación.

    {SQL}

    En dicha ventana, en la pestaña General, detallaremos las opciones que tiene.

    La Base de Datos a la cual procederemos a realizar una copia de seguridad, que ya viene dada lógicamente, pero que la podemos cambiar.

    Su nombre, y su descripción.

    En Backup seleccionamos el tipo de copia de seguridad, que puede ser completa o diferencial, del transaction log, y file and filegroup, en la cual se eligen las tablas deseadas únicamente.

    En Destination elegimos la ruta donde queremos guardar la copia. Para este proceso le damos al botón Add .

    Las opciones que tiene posteriormente es sobrescribir la copia existente, o hacer una nueva.

    La opción Schedule es un programador, para realizar las copias cada cierta fecha indicada en el edit.

    En la pestaña Options detallaremos ahora sus opciones.

    Su primera casilla es verificar la copia de seguridad una vez completa.

    La segunda casilla está oculta, y es porque no hay unidades de cinta instaladas.

    La tercera casilla es que no copie las entradas inactivas o que han sido borradas del transcation log

    La cuarta casilla es que chequee el nombre y la fecha de expiración de la copia de seguridad.

    La quinta casilla es para que una copia no expire en una determinada fecha.

    Su ultima opción es inicializar y poner una etiqueta a la cinta.

    {SQL}

    Restauración de la BD a partir de la copia de seguridad.

    El proceso de restauración es el siguiente. En el Enterprise Manager con el botón derecho del ratón, todas las tareas, restore database . Realizada esta acción, aparece la ventana que se muestra aquí.

    {SQL}

    En esta pestaña, viene todo por defecto.

    En la pestaña options hay una serie de casillas, como forzar la restauración aún no existiendo la Base de Datos, y otras referentes al transaction log.

    SQL Server 7.0

    Cuando se desea restaurar una base de datos de la que no se tiene backup, la base de datos puede encontrarse en alguno de los siguientes estados:

    HEX Status

    Value

    0x0000 0001

    Autoclose

    0x0000 0004

    Select into/bulkcopy

    0x0000 0008

    Trunc.log on chkpt.

    0x0040 0000

    Autoshrink

    0x4000 0000

    Cleany shutdown

    Si la base de datos ha sido desvinculada de un servidor mediante sp_detach_db (p.ej. para trasladarla de un servidor a otro), podrá volver a instalarse en el servidor destino mediante sp_attach_db o sp_attach_single_file_db.

    En el caso de una base de datos que no ha sido desvinculada correctamente, los pasos son los siguientes:

  • Crear una B.D. con el mismo nombre y tamaño en los ficheros mdf, ndf, ldf.

  • Detener SQL Server y arrancarlo con:

  • Sqlservr -m

    Esto arrancará con Single user

  • Poner la base de datos en modo Recovery:

  • Use master

    Go

    Update sysdatabases set status=-32768 where name='dbname'

  • Detener SQL Server

  • Renombrar los ficheros mdf, ndf, ldf y remplazarlos con los originales.

  • Arrancar SQL Server con:

  • Sqlservr -m -T910

    De este modo el motor ignorará que la base de datos no se encuentra en un estado correcto.

  • Actualizar sysdatabases, poniendo la base de datos en estado correcto:

  • Use master

    Go

    Update sysdatabases set status=0 where name='dbname'

  • Si la base de datos no se recupera:

  • Iniciar el servidor con la línea de comandos:

  • Sqlservr -m -T3608 -T4022

    El parámetro 3608 sólo inicia la master, y el 4022 no dispara el procedimiento almacenado de inicialización.

  • Poner la base de datos en modo Recovery

  • Utilizar DTS o bcp para extraer la mayor cantidad de datos posible.

  • En el caso de que en SQL Server 7.0 se desee restaurar bases de datos del sistema en otras ubicaciones, pueden seguirse estos procedimientos:

    • MASTER: Modificar los Startup Parameters del servidor:

    • MODEL: Utilizar:

    Sqlservr -T3608

    Sp_detach_db `model'

    Sp_attach_db `model', `E:\data\model.mdf','E:\data\modellog.ldf'

    • TEMPDB: Utilizar:

    Alter database tempdb modify file (name=tempdev,filename='E:\data\tempdb.mdf')

    Alter database tempdb modify file (name=templog, filename='E:\data\tempdb.ldf')

    Errores comunes de chequeos de tablas

    Error 605

    “Attempt to fetch logical page %ld in database `%.*s' belongs to object `%.*s' not to object `%.*s'

    Las opciones de recuperación son las siguientes:

    • Recuperación usando un clustered index

    Las páginas de datos de una tabla están enlazadas mediante punteros en doble sentido. Si el error ha sido debido a que alguno de los punteros apunta donde no debe, podremos extraer datos haciendo una consulta ordenada en un determinado sentido, dependiendo del sentido del puntero erróneo. P. Ej:

    SELECT * FROM titles ORDER BY pub_id DESC

    • Recuperación usando un non-clustered index

    El error también puede ser debido a una corrupción del índice cluster, en este caso podremos extraer datos utilizando un índice non-clustered en la SELECT:

    SELECT * FROM authors (INDEX=aunmind)

    • Recuperación modificando la columna sysindexes.first del objeto

    Este método está indicado sólo si no funciona ninguno de los anteriores. Los pasos son los siguientes:

  • Extraer todos los datos posibles (bcp). Obtendremos los datos hasta la página donde se haya producido el error.

  • Localizar la página errónea:

  • Dbcc traceon(3604)

    Dbcc pagelinkage

  • Modificar la columna sysindexes.first del objeto de modo que apunte a la página siguiente a la errónea. En esta columna se indica cuál es la página donde se inicia una tabla.

  • Extraer datos.

  • En el caso de que hayan más páginas erróneas, repetir el procedimiento.

  • Error 2503

    “Table corrupt: Page linkage is not consistent; check the following pages: (current page#=%ld; page# pointing to this page=%ld; previous page# indicated on this page=%ld)”

    Utilizar BCP / SELECT INTO.

    Error 2540

    “Allocation discrepancy: Page is allocated but not linked; check the following pages and ids: allocation pg#=%ld extent=%ld logical pg#=%ld object id on extent=%ld (object name=%.*s) indid on extent=%ld”

    El motivo de este error es que una página está siendo marcada como reservada para un objeto, pero no está siendo utilizada. Este error puede solucionarse mediante el comando DBCC FIX_AL.

    Restaurar hasta el punto anterior a un fallo

    Realizar un backup del Transaction Log “activo” con WITH NO_TRUNCATE. De este modo, SQL Server no truncará la parte inactiva del Transaction Log.

    Restaurar la base de datos con WITH RECOVERY. No se hará rollback de todas las transacciones uncommited.

    Restaurar los Transaction Logs de los que se había hecho backup desde el backup de la base de datos hasta el backup del Transaction Log “activo”. Usar la opción WITH NORECOVERY.

    Restaurar el Transaction Log que estaba “activo” durante el error, esta vez con la opción WITH RECOVERY, para que se haga rollback de las transacciones uncommited.

    • Restaurar hasta un punto determinado en el tiempo

  • Restaurar la base de datos, con WITH NORECOVERY.

  • Restaurar todos los Transaction Logs, usando, p. ej., WITH RECOVERY, STOPAT = `Jul 1, 1998 10:00 AM

  • Backups diferenciales (a partir de 7.0)

    Copian los cambios en la base de datos desde el ultimo backup completo.

    Backups parciales (a partir de 7.0)

    SQL Server 7 permite realizar backups de determinados FileGroups de una misma base de datos. Esto permite:

    Recuperación de la BD existente en un backup antiguo en una nueva instalación.

    Para realizar esta operación , nos vamos al Enterprise Manager, como va siendo habitual, nos conectamos, y abrimos la carpeta databases. Con el botón derecho del ratón, todas las tareas, restore database. Aparece la ventana que viene a continuación.

    {SQL}

    En el menú desplegable Restore Database, ponemos el nombre de la Base de Datos perdida, en nuestro caso Lucas.

    En Restore, seleccionamos la opción From device.

    En Parameters, pinchamos en el botón Select Devices, y aparece la ventana de la siguiente página.

    Pinchamos en el botón Add y buscamos la ruta donde tenemos guardada la copia de seguridad, y aceptamos.

    Aceptamos en la ventana Restore Database, y arreglado.

    {SQL}

    10.- Importación y exportación de datos.

    Importación

    Nos vamos al Enterprise Manager. Nos conectamos al servidor. Una vez hecho esto de damos a la opción mostrada en la siguiente ventana.

    {SQL}

    Después de este paso aparece la siguiente ventana.

    {SQL}

    Siguiente, y sale la siguiente ventana.

    {SQL}

    En este paso, elegimos el servidor, y ponemos el nombre a la base de datos importada.

    Le damos a Siguiente.

    {SQL}

    Marcamos copiar las tablas.

    La otra opción es utilizar una consulta para copiar únicamente los datos deseados a transferir.

    Le damos a Siguiente.

    {SQL}

    En esta ventana, elegimos las tablas deseadas a transferir y le damos a siguiente.

    {SQL}

    En esta ventana, se puede elegir ejecutar la transferencia inmediatamente, (opción seleccionada), transferir los datos cada cierto día a determinada hora, ó usar una copia de los datos de destino.

    Siguiente

    A continuación se empiezan a transferir los archivos previamente seleccionados.

    Exportación.



    Los pasos a seguir son los mismos, pero antes hay que crear en la máquina destino una Base de Datos con el nombre que le quieras ponerle y entonces en uno de los paso te pide que selecciones en que BD quieres exportar la base de datos seleccionada.



    11.- Transact SQL. Descripción y cuando utilizarlo

    Es un lenguaje de consultas mejorado respecto al SQL en el cual se basa.

    Tres categorías de instrucciones componen este lenguaje:

    • El lenguaje de definición de datos (data description languaje, DDL), que permite la creación, modificación y supresión de los objetos SQL, como tables, views, index, procedures, etc.

    • El lenguaje de manipulación de datos (Data Manipulatión Languaje, DML),que proporciona las instrucciones de creación, actualización, supresión, y extracción de los datos almacenados.

    • El lenguaje de control de acceso(Data Control Languaje, DCL). Para la gestión de acceso a los datos, las transacciones y la configuración de las sesiones y de las bases.

    Además Transact SQL se ocupa de las funcionalidades procedurales como la gestión de las variables, las estructuras de control de flujo, los cursores, y los lotes de instrucciones. Es pues un lenguaje completo, que cuenta con instrucciones, manipula objetos SQL, admite la programación y utiliza expresiones.

    12.- Scripts de la Base de Datos. Para qué sirven.

    Los scripts se pueden utilizar con SQL Server mediante los Objetos de administración distribuida (Distributed Management Objects, DMO), los Servicios de transformación de datos (Data Transformation Services, DTS) y la nueva implementación de XML en SQL Server.

    Para crear un nuevo script nos vamos a Interprise Manager, seleccionamos la base de datos deseada y le damos al botón derecho del ratón y seleccionamos la opción que esta marcada en el grafico.

    {SQL}

    Pulsamos el botón “Show All” y entonces podemos elegir sobre qué queremos realizar el scripts.

    {SQL}

    {SQL}

    La opción 1. Marcada por defecto, consiste en generar el script para crear los objetos seleccionados en la pestaña anterior.

    La opción 2. Marcada por defecto, consiste en generar el script para destruir los objetos seleccionados en la pestaña anterior.

    La opción 3. Consiste en generar los scripts también para todas las dependencias que tenga cada uno de los objetos seleccionados.

    La opción 4. Consiste en incluir los comentarios de los objetos seleccionados en los scripts.

    La opción 5. Consisten en incluir propiedades extendidas.

    La opción 6. Consiste en crear los scripts para que sean compatibles sólo con la versión 7.0 de SQL.

    {SQL}

    Opciones de seguridad:

    Opción 1: dicha opción se refiere a crear los scripts de la BD.

    Opción 2: dicha opción se refiere a crear los scripts de los usuarios de la B.D. y los papeles que tiene cada uno ellos en la BD.

    Opción 3: se refiere a crear los scripts sobre los logins de cada usuario.

    Opcion 4: se refiere a crear los scripts sobre los permisos que tienen asignados los objetos.

    Opciones de las tablas:

    Opción 1: crea los scripts de los indices.

    Opción 2: crea los scripts de los indices de todos los textos.

    Opción 3: crea los scripts de los triggers.

    Opción 4: crea los scripts de las claves primarias, ajenas, valores por defecto y restricciones.

    Opciones del fichero:

    Tipos de formatos. Hay tres tipos, texto en MS-DOS, texto Windows, y texto Internacional, que se marca por defecto.

    Ficheros a generar. Sus dos opciones son, crear una fila o crear una fila por objeto.

    Un ejemplo de un script generado de la tabla categorías de la BD Neptuno, con las opciones por defecto, es el siguiente:

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Categorías]')

    and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[Categorías]

    GO

    CREATE TABLE [dbo].[Categorías] (

    [IdCategoría] [int] NOT NULL ,

    [NombreCategoría] [nvarchar] (15) COLLATE Modern_Spanish_CI_AS NOT NULL ,

    [Descripción] [ntext] COLLATE Modern_Spanish_CI_AS NULL ,

    [Imagen] [image] NULL

    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO

    Consultas: raulke@navegalia.com

    {SQL}

    {SQL}