Manual de SQL Server 2008 de La UNI

April 18, 2017 | Author: gpalazuelos32 | Category: N/A
Share Embed Donate


Short Description

Download Manual de SQL Server 2008 de La UNI...

Description

Facultad de Ingeniería Industrial y de Sistemas

C API TULO 1   

Instalación y configuración del SQL Server 2008 Ediciones del SQL Server 2008 Requerimientos de Hardware y Software

SQL Administración

[email protected]

Pág. 1

Universidad Nacional de Ingeniería

I N S TA L A C I O N Y C O N F I G U R A C I O N S Q L S E R V E R 2 0 0 8

D E L

Una de las primeras responsabilidades que asume un DBA (Data Base Administrador), es la elección del software más adecuado a las necesidades que presente la empresa. Es por esta razón que, Microsoft corp., pone a nuestra disposición, de diferentes ediciones de su “Sistema Administrador de Base de Datos” SQL Server 2008.

¿QUÉ ES SQL SERVER 2008? SQL Server 2008 es una plataforma global de base de datos que ofrece administración de datos empresariales con herramientas integradas de inteligencia empresarial (BI). El motor de la base de datos SQL Server 2008 ofrece almacenamiento más seguro y confiable tanto para datos relacionales como estructurados, lo que le permite crear y administrar aplicaciones de datos altamente disponibles y con mayor rendimiento para utilizar en su negocio. El motor de datos SQL Server 2008 constituye el núcleo de esta solución de administración de datos empresariales. Asimismo, SQL Server 2008 combina lo mejor en análisis, información, integración y notificación. Esto permite que su negocio cree y despliegue soluciones de BI rentables que ayuden a su equipo a incorporar datos en cada rincón del negocio a través de tableros de comando, escritorios digitales, servicios Web y dispositivos móviles. La integración directa con Microsoft Visual Studio, el Microsoft Office System y un conjunto de nuevas herramientas de desarrollo, incluido el Business Intelligence Development Studio, distingue al SQL Server 2008. Ya sea que usted se desempeñe como encargado de desarrollo, administrador de base de datos, trabajador de la industria de la información o dirija una empresa, SQL Server 2008 ofrece soluciones innovadoras que le ayudan a obtener más valor de sus datos.

HERRAMIENTAS QUE INCLUYE EL SQL SERVER 2008 Base de datos relacional. Un motor de base de datos relacional más segura, confiable, escalable y altamente disponible con mejor rendimiento y compatible para datos estructurados y sin estructura (XML). Servicios de réplica. Réplica de datos para aplicaciones de procesamiento de datos distribuidos o móviles, alta disponibilidad de los sistemas, concurrencia escalable con almacenes de datos secundarios para soluciones de información empresarial e integración con sistemas heterogéneos, incluidas las bases de datos Oracle existentes. Notification Services. Capacidades avanzadas de notificación para el desarrollo y el despliegue de aplicaciones escalables que pueden entregar actualizaciones de información personalizadas y oportunas a una diversidad de dispositivos conectados y móviles. Integration Services. Capacidades de extracción, transformación y carga (ELT) de datos para almacenamiento e integración de datos en toda la empresa.

Pág. 2

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Analysis Services. Capacidades de procesamiento analítico en línea (OLAP) para el análisis rápido y sofisticado de conjuntos de datos grandes y complejos, utilizando almacenamiento multidimensional. Reporting Services. Una solución global para crear, administrar y proporcionar tanto informes tradicionales orientados al papel como informes interactivos basados en la Web. Herramientas de administración. SQL Server incluye herramientas integradas de administración para administración y optimización avanzadas de bases de datos, así como también integración directa con herramientas tales como Microsoft Operations Manager (MOM) y Microsoft Systems Management Server (SMS). Los protocolos de acceso de datos estándar reducen drásticamente el tiempo que demanda integrar los datos en SQL Server con los sistemas existentes. Asimismo, el soporte del servicio Web nativo está incorporado en SQL Server para garantizar la interoperabilidad con otras aplicaciones y plataformas. Herramientas de desarrollo. SQL Server ofrece herramientas integradas de desarrollo para el motor de base de datos, extracción, transformación y carga de datos, minería de datos, OLAP e informes que están directamente integrados con Microsoft Visual Studio para ofrecer capacidades de desarrollo de aplicación de extremo a extremo. Cada subsistema principal en SQL Server se entrega con su propio modelo de objeto y conjunto de interfaces del programa de aplicación (API) para ampliar el sistema de datos en cualquier dirección que sea específica de su negocio.

NOVEDADES EN SQL SERVER 2008 SQL Server permite ejecutar aplicaciones de misión crítica, reduciendo costos de administración de infraestructura de datos y brindando introspectiva e información a todos los usuarios.  Confiable: Permite a las organizaciones ejecutar sus aplicaciones más críticas con niveles de seguridad, confiabilidad y escalabilidad muy altos.  Productivo: Permite reducir el tiempo y los costos requeridos para desarrollar y administrar sus infraestructuras de datos.  Inteligente: Ofrece una plataforma integral que brinda introspectiva e información donde sus usuarios lo desean Nuevas funcionalidades de SQL Server 2008: Protección de la Información  ¿Cómo podría saber si ha copiado la base de datos del servidor de producción de un cliente y lo han instalado en otra base de datos o si están accediendo a la información? Con SQL 2008, puede proteger la información con una clave de protección (Encriptación).  ¿Cómo podría saber que datos están siendo leídos y modificados, a qué hora y por quien? SQL 2008 da la opción de Auditora de Datos. Continuidad del Negocio  Si sus clientes necesitan estar siempre en línea con sus sistemas sin caídas, SQL 2008 ofrece mejoras en una técnica llamada “Mirroring”, el cual es una copia o espejo de la base de datos.  Si el disco se daña, donde reside los datos, SQL 2008 recupera la información de una copia reciente de los datos dañados al otro equipo espejo de manera transparente.

SQL Administración

[email protected]

Pág. 3

Universidad Nacional de Ingeniería 

Ahorro en espacio en disco, mediante la técnica de comprensión, ahorrando costos en compra de discos si es que el volumen de la información de Base de Datos empieza a crecer en forma rápida. Datos Geoespaciales  Poder manejar información geográfica, la que hoy en día es de alta importancia en las organizaciones, con todo el tema de globalización Acceder a la Información desde cualquier lugar en cualquier momento  Con SQL 2008 podre crear rápidamente aplicaciones conectadas a la base de datos con la funcionalidad de funcionar en forma desconectada y después sincronizarlos con la base de datos central sin perder la línea de negocio y manteniendo los datos validados Reportes  Poder acceder a reportes directamente desde Word, mejoras en los tipos de gráficos en los reportes, haciéndolos más entendibles y poder editar los reportes de Microsoft Office, sin saber donde fue diseñado el reporte.

LAS EDICIONES DEL SQL SERVER 2008 Cada una de las ediciones que se encuentran disponibles en el mercado, está dirigida a un grupo, para responder adecuadamente a las necesidades y requisitos de estos.

EDICIONES DE SERVIDOR Término

Definición

Enterprise SQL Server Enterprise es una completa plataforma de datos que proporciona (x86, x64 e escalabilidad empresarial, rendimiento, alta disponibilidad y capacidades avanzadas de IA64)1 inteligencia empresarial para ejecutar aplicaciones seguras y esenciales para la empresa. Para obtener más información, vea http://msdn.microsoft.com/eses/library/cc645993(v=SQL.100).aspx . Standard (x86 y x64)

SQL Server Standard es una completa plataforma de datos que proporciona facilidad de uso y capacidad de administración. Esto incluye capacidades integradas de inteligencia empresarial para ejecutar aplicaciones de departamentos. Para obtener más información, vea http://msdn.microsoft.com/eses/library/cc645993(v=SQL.100).aspx . SQL Server Standard for Small Business contiene todos los componentes técnicos y capacidades técnicas de SQL Server Standard y su uso está autorizado en un entorno de pequeña empresa con 75 equipos o menos.

EDICIONES ESPECIALIZADAS Término

Definición

SQL Server 2008 SQL Server 2008 Developer permite a los desarrolladores crear cualquier tipo de Developer (x86, aplicación basada en SQL Server. Incluye toda la funcionalidad de SQL Server x64 e IA64) 2008 Enterprise, pero su uso está autorizado como sistema de desarrollo y pruebas, no como servidor de producción. SQL Server 2008 Developer es una opción ideal para las personas que crean y prueban aplicaciones. Puede actualizar SQL Server 2008 Developer para utilizarlo en producción. Workgroup (x86 y SQL Server Workgroup es ideal para ejecutar bases de datos ubicadas en x64) sucursales y proporciona una administración de datos confiable y una

Pág. 4

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Término

Definición plataforma de informes que incluye capacidades de sincronización y de administración seguras y remotas.

Web (x86, x64)

SQL Server 2008 Web es una opción con un costo total de propiedad bajo para los hosts de web y los sitios web que proporciona capacidades de administración y escalabilidad para propiedades web, tanto de pequeña como de gran escala.

SQL Server Express (x86 y x64) SQL Server Express with Tools (x86 y x64) SQL Server Express con Advanced Services (x86 y x64)

La plataforma de bases de datos de SQL Server Express se basa en SQL Server 2008. Es también la sustitución de Microsoft Desktop Engine (MSDE). Gracias a su integración con Visual Studio, SQL Server Express facilita el desarrollo de aplicaciones controladas por datos que tienen una gran capacidad, ofrecen un almacenamiento seguro y se implementan con rapidez. SQL Server Express es gratuito y los ISV pueden redistribuirlo (según su contrato). SQL Server Express es ideal para conocer y crear pequeñas aplicaciones de servidor y de escritorio. Esta edición es la mejor opción para los fabricantes de software independientes, los desarrolladores no profesionales y los aficionados que crean aplicaciones cliente. Si necesita características de base de datos más avanzadas, SQL Server Express se puede actualizar sin problemas a versiones más sofisticadas de SQL Server.

Compact 3.5 SP1 SQL Server Compact 3.5 es una base de datos gratuita e incrustada, ideal para (x86) crear aplicaciones independientes que se conectan ocasionalmente para Compact 3.1 (x86) dispositivos móviles, escritorios y clientes web en todas las plataformas de Windows.

COMPONENTES QUE VIENEN A ESCOGER EN EL SQL SERVER Componentes servidor

de Descripción

SQL Server Database SQL Server Database Engine (Motor de base de datos de SQL Server) Engine (Motor de base de incluye Database Engine (Motor de base de datos), el servicio principal datos de SQL Server) para almacenar, procesar y proteger datos; también incluye replicación, búsqueda de texto completo y herramientas para administrar datos XML y relacionales. Analysis Services

Analysis Services incluye las herramientas para crear y administrar aplicaciones de procesamiento analítico en línea (OLAP) y de minería de datos.

Reporting Services

Reporting Services incluye componentes de servidor y de cliente para crear, administrar e implementar informes tabulares, matriciales, gráficos y de forma libre. Reporting Services también es una plataforma extensible que puede utilizarse para desarrollar aplicaciones de informes.

Integration Services

Integration Services es un conjunto de herramientas gráficas y objetos programables para mover, copiar y transformar datos.

Herramientas administración

de Descripción

SQL Server Management SQL Server Management Studio es un entorno integrado para tener Studio acceso, configurar, administrar y desarrollar componentes de SQL Server.

SQL Administración

[email protected]

Pág. 5

Universidad Nacional de Ingeniería Herramientas administración

de Descripción Management Studio permite a los desarrolladores de software y administradores con diferentes grados de experiencia usar SQL Server. Para la instalación de Management Studio, se requiere Internet Explorer 6 Service Pack 1 o una versión posterior.

Administrador configuración Server

de

SQL Server Profiler

de El Administrador de configuración de SQL Server proporciona SQL administración de configuración básica para los servicios, protocolos de servidor, protocolos de cliente y alias de cliente de SQL Server. SQL Server Profiler proporciona una interfaz gráfica de usuario para supervisar una instancia del Database Engine (Motor de base de datos) o de Analysis Services.

Asistente para la El Asistente para la optimización de Database Engine (Motor de base de optimización de Database datos) crea conjuntos óptimos de índices, vistas indizadas y particiones. Engine (Motor de base de datos) Business Intelligence Business Intelligence Development Studio es un IDE para las soluciones Development Studio Analysis Services, Reporting Services y Integration Services. Para la instalación de BI Development Studio, se requiere Internet Explorer 6 Service Pack 1 o una versión posterior. Componentes conectividad

de Instala componentes para la comunicación entre clientes y servidores, y bibliotecas de red para DB-Library, ODBC y OLE DB.

NÚMERO MÁXIMO DE PROCESADORES COMPATIBLES CON LAS EDICIONES DE SQL SERVER SQL Server admite el número especificado de sockets de procesador multiplicado por el número de CPU lógicas en cada socket. Por ejemplo, lo siguiente se considera un solo procesador para los fines de esta tabla:    

Un procesador de un solo núcleo e hipersubprocesamiento con dos CPU lógicas por socket. Un procesador de doble núcleo con dos CPU lógicas. Un procesador de núcleo cuádruple con cuatro CPU lógicas. SQL Server se utiliza bajo licencia para cada socket del procesador y no para cada CPU lógica.

Edición de SQL Server 2008

Número de procesadores admitidos

Enterprise

Sistema operativo máximo

Developer

Sistema operativo máximo

Standard

4

Web

4

Workgroup

2

Pág. 6

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Edición de SQL Server 2008

Número de procesadores admitidos

Express

1

Express with Tools

1

Express con Advanced Services

1

REQUISITOS DEL SISTEMA SQL SERVER 2008 Componente Marco trabajo2

de El programa de instalación de SQL Server instala los siguientes componentes de software requeridos por el producto: .NET Framework 3.5 SP11 SQL Server Native Client Archivos auxiliares para la instalación de SQL Server

Software2

Software red

Requisito

El programa de instalación de SQL Server requiere Microsoft Windows Installer 4.5 o una versión posterior Una vez instalados los componentes requeridos, el programa de instalación de SQL Server comprobará que el equipo en el que se ha instalado SQL Server 2008 también cumple los demás requisitos para su correcta instalación. Para obtener más información, vea Comprobar los parámetros del Comprobador de configuración del sistema. de Los requisitos de software de red para las versiones de 64 bits de SQL Server 2008 son los mismos que para las versiones de 32 bits. Los sistemas operativos compatibles tienen el software de red integrado. Las instancias predeterminadas y con nombre independientes admiten los siguientes protocolos de red: Memoria compartida Canalizaciones con nombre TCP/IP VIA Nota La memoria compartida y VIA no se admiten en clústeres de conmutación por error.

Virtualización

SQL Administración

SQL Server 2008 es compatible con entornos de máquina virtual que se ejecutan en la función Hyper-V de las ediciones Standard, Enterprise y Datacenter de Windows Server 2008 R2 y Windows Server 2008. La máquina virtual debe ejecutarse en un sistema operativo compatible con la edición de SQL Server 2008 concreta que se cita más adelante en este tema. Además de los recursos requeridos por la partición primaria, a cada máquina virtual (partición secundaria) se debe proporcionar suficientes recursos de procesador, memoria y recursos de disco para su instancia de SQL Server 2008. Los requisitos se enumeran más adelante en este tema.3 Dentro de la función Hyper-V de Windows Server 2008, se puede asignar un máximo de cuatro procesadores virtuales a máquinas virtuales que ejecuten las ediciones de 32 o 64 bits de Windows Server 2008. Se pueden asignar como máximo 2 procesadores virtuales a equipos virtuales que ejecuten ediciones de 32 bits de Windows Server 2003. Para equipos virtuales que alojan otros sistemas operativos, se puede asignar como máximo un procesador virtual a equipos

[email protected]

Pág. 7

Universidad Nacional de Ingeniería Componente

Requisito virtuales. Notas: Se recomienda cerrar SQL Server 2008 antes de apagar la máquina virtual. Para obtener más información sobre la función Hyper-V de Windows Server 2008, vea el sitio web de Windows Server 2008. La agrupación en clústeres de conmutación por error del invitado se admite en SQL Server 2008. Para obtener más información sobre las versiones admitidas de SQL Server y los sistemas operativos para la agrupación en clústeres de conmutación por error del invitado, y la compatibilidad con la virtualización, vea el tema que trata sobre la directiva de compatibilidad para los productos de Microsoft SQL Server que se ejecutan en un entorno virtual de hardware.

Software Internet

de Para todas las instalaciones de SQL Server 2008 se requiere Microsoft Internet Explorer 6 SP 1 o una versión posterior. Se requiere Internet Explorer 6 Service Pack 1 o una versión posterior para Microsoft Management Console (MMC), SQL Server Management Studio, Business Intelligence Development Studio, el componente Diseñador de informes de Reporting Services y la Ayuda HTML.

Disco duro

Las necesidades de espacio en disco variarán con los componentes de SQL Server 2008 que instale. Para obtener más información, vea Requisitos de espacio en disco duro, más adelante en este tema.

Unidad

Para la instalación desde disco se necesita una unidad de CD o DVD.

Pantalla

Las herramientas gráficas de SQL Server 2008 requieren VGA o una resolución mayor: resolución mínima de 1.024 x 768 píxeles.

Otros dispositivos

Dispositivo señalador: se necesita un mouse Microsoft o dispositivo señalador compatible.

Nota: Las versiones de 64 bits de SQL Server 2008 incluyen soporte para sistemas extendidos, también conocidos como Windows on Windows (WOW64). WOW64 es una característica de las ediciones de 64 bits de Microsoft Windows que permite que las aplicaciones de 32 bits se ejecuten de forma nativa en modo de 32 bits. Las aplicaciones funcionan en modo de 32 bits aunque el sistema operativo subyacente se ejecute en la plataforma de 64 bits.

Componente

Requisito

Procesador

Tipo de procesador: Mínimo: AMD Opteron, AMD Athlon 64, Intel Xeon compatible con Intel EM64T, Intel Pentium IV compatible con EM64T Velocidad de procesador: Mínimo: 1,4 GHz Recomendado: 2,0 GHz o más

Sistema operativo

Windows Server 2003 SP2 de 64 bits x64 Standard1 Windows Server 2003 SP2 de 64 bits x64 Datacenter1 Windows Server 2003 SP2 de 64 bits x64 Enterprise1 Windows Server 2008 de 64 bits x64 Standard Windows Server 2008 de 64 bits x64 Standard sin Hyper-V Windows Server 2008 de 64 bits x64 Datacenter

Pág. 8

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Componente

Requisito Windows Server 2008 de 64 bits x64 Datacenter sin Hyper-V1 Windows Server 2008 de 64 bits x64 Enterprise Windows Server 2008 de 64 bits x64 Enterprise sin Hyper-V1 Windows Server 2008 R2 de 64 bits x64 Web1,2 Windows Server 2008 R2 de 64 bits x64 Standard1,2 Windows Server 2008 R2 de 64 bits x64 Enterprise1,2 Windows Server 2008 R2 de 64 bits x64 Datacenter1,2

Memoria

RAM: Mínimo: 512 MB Recomendado: 2,048 GB o más Máximo: máximo del sistema operativo

CONSIDERACIONES SOBRE LA SEGURIDAD Para iniciar Management Studio, elija Programas>Microsoft SQL Server 2008>SQL Server Management Studio en el menú de Inicio de Windows. Management Studio se instala durante la instalación de Sql Server 2008. Al abrirse, le pide que se conecte a una instancia de SQL Server. En cuanto se conecte, la instancia de SQL Server aparece en el Explorador de objetos.

Si fuera necesario, se podría dar a conocer características especiales sobre la conexión, para ello, hay que hacer clic sobre el botón Options, luego, aparecerá la siguiente pantalla.

SQL Administración

[email protected]

Pág. 9

Universidad Nacional de Ingeniería

En el combo de base de datos, se podrá seleccionar la Base de Datos con la cual deseamos conectarnos, esto dependerá del servidor con el cual nos enlacemos. En el área de detalles de la red, veremos el modo de conexión que tenemos con el SQL Server, dicho sea de paso, no es necesario cambiar esta opción. En conexiones, podemos especificar el tiempo de espera para la conexión, en tiempo de ejecución, se determina el tiempo de espera para la ejecución de las sentencias en T-SQL. Una vez que hayamos dado a conocer, todas las características necesarias para la conexión, haremos clic sobre el botón Connect. Seguidamente, veremos la pantalla del Management Studio.

Pág. 10

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Instalando el SQL Server 2008 Una vez que hayan decidido la Edición a utilizar del SQL Server 2008, procederemos a instalar el software.

SQL Administración

[email protected]

Pág. 11

Universidad Nacional de Ingeniería

Pág. 12

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Aquí dan a conocer todos los servicios que van a utilizar:

SQL Administración

[email protected]

Pág. 13

Universidad Nacional de Ingeniería

Si tuvieran que crear una nueva instancia, aquí deberán de dar el nombre de esta:

Pág. 14

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

SQL Administración

[email protected]

Pág. 15

Universidad Nacional de Ingeniería

Tener en cuenta que la instalación se debe de hacer con el usuario que tenga máximos privilegios, además de tener una contraseña.

Pág. 16

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

SQL Administración

[email protected]

Pág. 17

Universidad Nacional de Ingeniería

Pág. 18

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

SQL Administración

[email protected]

Pág. 19

Universidad Nacional de Ingeniería

Pág. 20

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

SQL Administración

[email protected]

Pág. 21

Universidad Nacional de Ingeniería

Pág. 22

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

C API TULO 2     

Administración de la Base de Datos y Archivos Planificación de la BD. Creación de la BD. Administración de la BD. Uso de Schemas y FileGroups.

SQL Administración

[email protected]

Pág. 23

Universidad Nacional de Ingeniería

C

R E A C I Ó N

D E

L A

B D

Para crear la base de datos, podemos hacer uso del management Studio, o a través de sentencias T-SQL, en ambos casos, tendremos los mismos resultados. El proceso de definición de una base de datos crea también un registro de transacciones para esa base de datos.

Utilizando el management Studio, el procedimiento sería el siguiente, primero nos ubicamos sobre el objeto Databases, luego clic derecho.

Del menú contextual, seleccionar la alternativa New Database, para que se muestre la ventana de propiedades de la nueva base de datos.

Desde esta ventana, podremos darle nombre a la nueva base de datos, también se puede especificar el propietario, así como los nombres físicos y lógicos de la base de datos.

Si fuera necesario agregar nuevos grupos de archivos, hacer clic sobre el botón Add, luego aparecerá la siguiente pantalla.

Pág. 24

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Desde aquí podremos crear los nuevos grupos de archivo, con los cuales trabajará nuestra base de datos. Para crear la base de datos desde T-SQL, podemos escribir lo siguiente: Creando la base de datos sin dar mayores especificaciones sobre los archivos a crear: USE master; GO IF DB_ID (N'sistemasUNI') IS NOT NULL DROP DATABASE miproyecto; GO CREATE DATABASE sistemasUNI; GO – Verificando los archivos y tamaños de la BD SELECT name, size, size*1.0/128 AS [Size in MBs] FROM sys.master_files WHERE name = N' sistemasUNI '; GO

Creando una base de datos especificando los archivos de datos y de transacciones USE master; GO IF DB_ID (N'Ventitas') IS NOT NULL DROP DATABASE Sales; GO – obteniendo la ruta del SQL Server DECLARE @data_path nvarchar(256); SET @data_path = ( SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- ejecutando la sentencia CREATE DATABASE EXECUTE ('CREATE DATABASE Ventitas ON ( NAME = Ventitas _dat, FILENAME = '''+ @data_path + ' Ventitasdat.mdf'', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Ventitas _log, FILENAME = '''+ @data_path + ' Ventitaslog.ldf'', SIZE = 5MB, MAXSIZE = 25MB,

SQL Administración

[email protected]

Pág. 25

Universidad Nacional de Ingeniería FILEGROWTH = 5MB )' ); GO

Creando una base de datos con múltiples archivos, los archivos con extensiones mdf contienen los archivos primarios, los ndf contienen los archivos secundarios y los ldf contienen las transacciones. USE master; GO IF DB_ID (N'Archivo') IS NOT NULL DROP DATABASE Archivo; GO – obteniendo la ruta del SQL Server DECLARE @data_path nvarchar(256); SET @data_path =(SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- ejecutar la sentencia CREATE DATABASE EXECUTE ('CREATE DATABASE Archivo ON PRIMARY ( NAME = Arch1, FILENAME = '''+ @data_path + 'archdat1.mdf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch2, FILENAME = '''+ @data_path + 'archdat2.ndf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch3, FILENAME = '''+ @data_path + 'archdat3.ndf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) LOG ON ( NAME = Archlog1, FILENAME = '''+ @data_path + 'archlog1.ldf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Archlog2, FILENAME = '''+ @data_path + 'archlog2.ldf'', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)' ); GO

La información acerca de las bases de datos de SQL Server está almacenada en la tabla sysdatabases de la base de datos master. Por tanto, debe utilizar la base de datos master para definir una base de datos cuando utilice instrucciones TransactSQL. La definición de una base de datos consiste en especificar el nombre de la base de datos, y diseñar el tamaño y la ubicación de los archivos de la base de datos. Cuando se crea la nueva base de datos, ésta es un duplicado de la base de datos model. Las opciones o configuraciones de la base de datos model se copian en la nueva base de datos. Importante, se recomienda hacer una copia de seguridad de la base de datos master cada vez que cree, modifique o elimine una base de datos. Al crear una base de datos se pueden establecer los siguientes parámetros:

PRIMARY

Pág. 26

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Este parámetro especifica los archivos del grupo de archivos principal. El grupo de archivos principal contiene todas las tablas del sistema de la base de datos. También contiene todos los objetos no asignados a grupos de archivos del usuario. Todas las bases de datos tienen un archivo de datos principal. El archivo de datos principal es el punto de inicio de la base de datos y señala a los demás archivos de la base de datos. La extensión de nombre de archivo recomendada para los archivos de datos principales es mdf. Si no se especifica la palabra clave PRIMARY, el primer archivo enumerado en la instrucción es el archivo principal.

FILENAME Este parámetro especifica el nombre del archivo del sistema operativo y la ruta de acceso al archivo. La ruta acceso de archivo debe especificar una carpeta del servidor en el que está instalado SQL Server.

SIZE Este parámetro especifica el tamaño de los archivos de datos o de registro. Puede especificar los tamaños en megabytes (MB), que es el valor predeterminado, o en kilobytes (KB). El tamaño mínimo es de 512 KB, tanto para los archivos de datos como para los archivos de registro. El tamaño especificado para el archivo de datos principal debe ser, al menos, como el tamaño del archivo principal de la base de datos model. Cuando se agrega un archivo de datos o un archivo de registro, el valor predeterminado es 1 MB.

MAXSIZE Este parámetro especifica el tamaño máximo hasta el que puede crecer el archivo. Puede especificar el tamaño en megabytes (valor predeterminado) o en kilobytes. Si no se especifica el tamaño, el archivo crece hasta que el disco esté lleno.

FILEGROWTH Este parámetro especifica el incremento de crecimiento del archivo. El valor de FILEGROWTH de un archivo no puede sobrepasar el valor de MAXSIZE. Un valor de 0 indica que no hay crecimiento. El valor se puede especificar en megabytes (el valor predeterminado), en kilobytes o como porcentaje (%). Si no se especifica FILEGROWTH, el valor predeterminado es el 10 por ciento y el valor mínimo es 64 KB (una extensión). El tamaño especificado se redondea al múltiplo de 64 KB más próximo.

COLLATION Este parámetro especifica la intercalación predeterminada para la base de datos. La intercalación incluye las reglas que gobiernan el uso de caracteres de un lenguaje o un alfabeto.

SQL Administración

[email protected]

Pág. 27

Universidad Nacional de Ingeniería

Registro de Transacciones 1

Modificaciones de datos es enviada por la aplicación

3 Buffer Cache

La modificación se registra en diario de las transacciones en el disco Disk

2

Páginas de datos se encuentran en, o se leen, en el buffer de caché y son modificados

Disk

4

Checkpoint escribe cometido de las transacciones en la base de datos

SQL Server graba todas las transacciones en un registro de transacciones para mantener la coherencia de la base de datos y facilitar la recuperación. El registro es un área de almacenamiento que efectúa automáticamente el seguimiento de todos los cambios en la base de datos. SQL Server graba las modificaciones al registro en disco cuando se ejecutan, antes de que se escriban en la base de datos. El proceso de registro es el siguiente: La aplicación envía una modificación de datos. Cuando la modificación se ejecuta, las páginas de datos afectadas se cargan en la caché del búfer desde el disco si no están ya cargadas en la caché del búfer por una consulta anterior. Cada instrucción de modificación de datos se graba en el registro mientras se ejecuta. El cambio siempre se graba en el registro y se escribe en disco antes de hacer la modificación en la base de datos. Este tipo de registro se denomina registro de preescritura. De forma repetitiva, el proceso de punto de comprobación escribe en disco todas las transacciones completadas en la base de datos. Si se produce un error del sistema, el proceso automático de recuperación utiliza el registro de transacciones para aplicar todas las transacciones confirmadas y deshacer las transacciones incompletas. Los marcadores de transacción del registro se utilizan durante la recuperación automática para determinar los puntos de inicio y fin de cada transacción. Una transacción se considera completa cuando el marcador BEGIN TRANSACTION tiene

Pág. 28

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas un marcador COMMIT TRANSACTION asociado. Las páginas de datos se escriben en disco cuando existe un punto de comprobación.

Administración de la BD. Después de haber creado una base de datos, se puede definir opciones de base de datos con el Management Studio del SQL Server o por medio de la instrucción ALTER DATABASE. Puede configurar varias opciones de base de datos, pero sólo se puede hacer en una sola base de datos al mismo tiempo. Para que las opciones afecten a todas las bases de datos nuevas, cambie la base de datos model. La tabla siguiente enumera algunas de las opciones de uso más frecuente. Propiedad Opciones automáticas

Descripción AUTO_CREATE_STATISTICS

AUTO_UPDATE_STATISTICS

Opciones cursor

de

CURSOR_CLOSE_ON_COMMIT

CURSOR_DEFAULT GLOBAL

Opciones recuperación

de

LOCAL

RECOVERY FULL BULK_LOGGED | SIMPLE

TORN_PAGE_DETECTION

SQL Administración

|

|

Valor Retornado Crea automáticamente las estadísticas que faltan que son necesarias para la optimización de consultas. El valor predeterminado es ON. Actualiza automáticamente las estadísticas desfasadas necesarias para la optimización de consultas. El valor predeterminado es ON. Cierra automáticamente los cursores abiertos cuando se confirma una transacción. El valor predeterminado es OFF y los cursores permanecen abiertos. CURSOR_DEFAULT_LOCAL limita el ámbito del cursor. Es local al lote, procedimiento almacenado o desencadenador en el que se creó el cursor. CURSOR_DEFAULT_GLOBAL es el valor predeterminado; el ámbito del cursor es global respecto a la conexión. FULL proporciona recuperabilidad completa ante errores del medio; es el valor predeterminado. BULK_LOGGED utiliza menos espacio de registro porque el registro es mínimo, pero tiene un riesgo mayor de exposición. SIMPLE recupera la base de datos sólo hasta la última copia de seguridad completa de la base de datos o hasta la última copia de seguridad diferencial. Permite a SQL Server detectar

[email protected]

Pág. 29

Universidad Nacional de Ingeniería Propiedad

Descripción

Opciones de SQL

ANSI_NULL_DEFAULT

ANSI_NULLS

Opciones estado

de

READ_ONLY | READ_WRITE

SINGLE_USER RESTRICTED_USER MULTI_USER

| |

Valor Retornado operaciones de E/S incompletas causadas por cortes de energía u otros apagones del sistema. El valor predeterminado es ON. Permite al usuario controlar la capacidad de asignación predeterminada de valores NULL de la base de datos. Si está activada, todas las comparaciones con un valor nulo se evalúan como NULL (desconocido). Si está desactivada, todas las comparaciones de valores no Unicode con un valor nulo se evalúan como verdaderas (TRUE) si ambos valores son NULL. De manera predeterminada, la opción de base de datos ANSI_NULLS es OFF. Define la base de datos como de sólo lectura (se utiliza para establecer la seguridad en las bases de datos de ayuda a la toma de decisiones) o devuelve la base de datos a operaciones de lectura y escritura. SINGLE_USER permite que los usuarios se conecten a la base de datos de uno en uno. Todas las demás conexiones se interrumpen. RESTRICTED_USER permite que sólo los miembros de la función fija de base de datos db_owner y de las funciones fijas de servidor dbcreator y sysadmin se conecten a la base de datos. MULTI_USER permite que todos los usuarios con los permisos adecuados se conecten a la base de datos. MULTI_USER es la opción predeterminada.

Recuperación de información de la base de datos Puede determinar las propiedades de la base de datos con la siguiente función DATABASEPROPERTYEX. SELECT DATABASEPROPERTYEX (base de datos, propiedad) Tener en cuenta que, esta función sólo devuelve el valor de una propiedad a la vez.

Pág. 30

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas La siguiente tabla enumera algunas de las propiedades de la base de datos. Propiedad Collation

Descripción

Valor retornado

nombre por defecto para la base de datos.

ComparisonStyle

The Windows comparison style of the collation. ComparisonStyle is a bitmap that is calculated by using the following values. Style Value Ignore 1 case Ignore 2 accent Ignore 65536 Kana Ignore 131072 width

Collation name NULL = Database is not started. Base data type: nvarchar(128) Returns the comparison style.

For example, the default of 196609 is the result of combining the Ignore case, Ignore Kana, and Ignore width options. Base de datos sigue normas ISO para permitir valores nulos.

Returns 0 for all binary collations. Base data type: int

IsAnsiNullsEnabled

Todas las comparaciones a nulo para evaluar desconocidos.

IsAnsiPaddingEnabled

Cadenas son rellenadas con la misma longitud antes de comparación o inserción.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsAnsiWarningsEnabled

Mensajes de error o de advertencia se emiten cuando un error estándar se produce.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsArithmeticAbortEnabled

Las consultas se terminan cuando un error por desbordamiento o división por cero se produce durante la ejecución de las consultas.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsAutoClose

Base de Datos se cierra limpiando y liberando recursos a partir de la

1 = TRUE 0 = FALSE NULL = Input not valid

IsAnsiNullDefault

SQL Administración

[email protected]

Pág. 31

Universidad Nacional de Ingeniería Propiedad

Descripción

Valor retornado

última salida de usuario

Base data type: int

IsAutoCreateStatistics

Falta de estadísticas que se requieren de una consulta para la optimización automática se construyó durante la consulta de optimización.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsAutoShrink

Archivos de Base de datos son candidatos para periódos automáticos de disminución.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsAutoUpdateStatistics

Estadísticas existentes son actualizadas automáticamente, por las estadísticas de fuera de fecha, porque los datos en las tablas han cambiado.

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsCloseCursorsOnCommitEnabled

Cursores que están abiertas cuando una transacción se ha comprometido están cerradas

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsFulltextEnabled

Base de Datos con fulltext permitido.

IsInStandBy

Base de Datos esta online como read-only, con restauración del log permitido. Declaración del Cursor por defecto como LOCAL

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsLocalCursorsDefault

Las tablas de una Base de Datos pueden ser publicadas para una replicación, si la replicación está instalada. Concatenación de operaciones Null rinden con NULL.

IsMergePublished

IsNumericRoundAbortEnabled

Los errores se generan cuando la pérdida de precisión se produce en las expresiones

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsParameterizationForced

PARAMETERIZATION de la base de datos con la opción SET es FORCED.

1 = TRUE 0 = FALSE NULL = Input not valid

IsNullConcat

Pág. 32

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Propiedad IsQuotedIdentifiersEnabled

Descripción

Valor retornado

Doble comillas se puede utilizar en identificadores.

IsPublished

Las tablas de la base de datos pueden ser publicados por la instantánea o la replicación transaccional, si se instala la replicación. Recursivo disparo de factores desencadenantes está activado

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

IsRecursiveTriggersEnabled

IsSubscribed

Base de datos está suscrito a una publicación

IsSyncWithBackup

La base de datos es una base de datos de publicación o una base de datos de distribución, y puede ser restaurada sin interrumpir la replicación transaccional. El SQL Server Database Engine Engine detecta operaciones incompletas de E/S causados por fallos de energía o cortes de otro sistema. El identificador de Windows local (LCID) de la colación.

IsTornPageDetectionEnabled

LCID

Recovery

Modelo de recuperación para la base de datos

SQLSortOrder

SQL Server sort order ID supported in earlier versions of SQL Server SQL Server ordenanimiento, apoya ordenamiento por ID en las versiones anteriores de SQL Server

Status

Estado de la Base de

SQL Administración

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int 1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

1 = TRUE 0 = FALSE NULL = Input not valid Base data type: int

LCID value (in decimal format). Base data type: int For a list of LCID values (in hexadecimal format), see Collation Settings in Setup. FULL = Full recovery model BULK_LOGGED = Bulk logged model SIMPLE = Simple recovery model Base data type: nvarchar(128) 0 = Database is using Windows collation >0 = SQL Server sort order ID NULL = Input not valid or database is not started Base data type: tinyint

ONLINE = Database is

[email protected]

Pág. 33

Universidad Nacional de Ingeniería Propiedad

Descripción

Valor retornado

Datos.

available for query. OFFLINE = Database was explicitly taken offline. RESTORING = Database is being restored. RECOVERING = Database is recovering and not yet ready for queries. SUSPECT = Database did not recover. EMERGENCY = Database is in an emergency, read-only state. Access is restricted to sysadmin members Base data type: nvarchar(128) READ_ONLY = Data can be read but not modified. READ_WRITE = Data can be read and modified. Base data type: nvarchar(128) SINGLE_USER = Only one db_owner, dbcreator, or sysadmin user at a time RESTRICTED_USER = Only members of db_owner, dbcreator, and sysadmin roles MULTI_USER = All users Base data type: nvarchar(128) Version number = Database is open. NULL = Database is not started. Base data type: int

Updateability

Indica si los datos pueden ser modificados

UserAccess

Indica que los usuarios puedan acceder a la base de datos.

Version

Número de versión interna del código SQL Server con el que la base de datos se ha creado. Identificado sólo con fines informativos. No soportado. La compatibilidad en el futuro no está garantizada.

La siguiente tabla enumera los procedimientos almacenados del sistema de uso común que presentan información acerca de las bases de datos y sus parámetros. Procedimiento sistema sp_helpdb

Pág. 34

almacenado

de Descripción Informa acerca de todas las bases de datos de un servidor. Proporciona el nombre, tamaño, propietario, Id., fecha de creación y opciones

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Procedimiento sistema

almacenado

de Descripción

sp_helpdb baseDeDatos

sp_spaceused [nombreObjeto]

de la base de datos. Informa sólo acerca de la base de datos especificada. Proporciona el nombre, tamaño, propietario, Id., fecha de creación y opciones de la base de datos. También enumera los archivos de datos y de registro. Resume el espacio de almacenamiento que utiliza una base de datos o un objeto de base de datos.

Componentes físicos: archivos y grupos de archivos de bases de datos (FileGroup). Un grupo de archivos es un conjunto lógico de archivos de datos que permite a los administradores controlar todos los archivos del grupo como un único elemento. La posibilidad de controlar la posición física de los objetos individuales de la base de datos puede proporcionar diversas ventajas en cuanto a facilidad de administración y rendimiento. Por ejemplo, puede utilizar varios grupos de archivos para controlar cómo se almacenan físicamente los datos de una base de datos en dispositivos de almacenamiento, y para separar los datos de lectura y escritura de los datos de sólo lectura.

Tipos de grupos de archivos SQL Server 2008 tiene un grupo de archivos principal y también puede tener grupos de archivos definidos por el usuario.

SQL Administración

[email protected]

Pág. 35

Universidad Nacional de Ingeniería El grupo de archivos principal contiene el archivo principal de datos con las tablas del sistema. El archivo principal de datos utiliza normalmente la extensión .mdf. Un grupo de archivos definido por el usuario consta de archivos de datos agrupados con fines de asignación y administrativos. Estos otros archivos de datos se conocen como archivos secundarios de datos y suelen utilizar la extensión .ndf.

SITUACIÓN DE EJEMPLO PARA VARIOS GRUPOS DE ARCHIVOS La ilustración proporciona un ejemplo de cómo podría colocar los archivos de base de datos en discos diferentes, como se describe en la lista siguiente: Puede crear grupos de archivos definidos por el usuario para separar los archivos que se consultan con mucha frecuencia de los que se modifican mucho. En la ilustración, los archivos OrdHist1.ndf y OrdHist2.ndf se colocan en un disco distinto que las tablas Product, Customer y SalesOrderHeader, ya que se consultan como ayuda para la toma de decisiones en lugar de actualizarse con información de pedidos actual. También podría colocar los archivos OrdHist1.ndf y OrdHist2.ndf en discos diferentes si ambos se consultaran con mucha frecuencia. No puede poner archivos de registro de transacciones en grupos de archivos. El espacio del registro de transacciones se administra por separado del espacio de datos. Los registros de transacciones suelen utilizar la extensión .ldf. En el siguiente ejemplo de código Transact-SQL se utiliza la instrucción CREATE DATABASE para implementar esta situación de ejemplo. CREATE DATABASE [AdventureWorks] ON PRIMARY ( NAME = N'AdventureWorks_Data', FILENAME = N'C:\AdventureWorks_Data.mdf' ), FILEGROUP [OrderHistoryGroup] ( NAME = N'OrdHist1', FILENAME = N'D:\OrdHist1.ndf' ), ( NAME = N'OrdHist2', FILENAME = N'D:\OrdHist2.ndf' ) LOG ON ( NAME = N'AdventureWorks_log', FILENAME = N'E:\AdventureWorks_log.ldf') También puede utilizar la instrucción ALTER DATABASE para agregar o eliminar archivos y grupos de archivos de bases de datos existentes.

CUÁNDO CREAR GRUPOS DE ARCHIVOS Puede crear varios archivos de datos en discos diferentes y crear un grupo de archivos definido por el usuario para contener los archivos. Las dos razones principales para utilizar grupos de archivos son mejorar el rendimiento y controlar la colocación física de datos.

Pág. 36

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Uso de varios archivos en un único grupo de archivos para mejorar el rendimiento Si bien Matriz redundante de discos independientes (RAID) es la manera preferida de mejorar el rendimiento de una base de datos, puede asignar varios archivos de discos distintos a un único grupo de archivos para mejorar el rendimiento implementando una forma de seccionamiento de datos dentro de SQL Server. Puesto que SQL Server utiliza una estrategia de relleno proporcional al escribir datos en un grupo de archivos, los datos se reparten entre los archivos y, por tanto, en las particiones físicas del disco. Este método permite tener un control más fino sobre el seccionamiento de datos del que se puede lograr al crear un conjunto de volúmenes seccionados en el sistema operativo Windows, o utilizando una controladora de matriz RAID. Nota: En la mayoría de los casos, el uso de las funciones de seccionamiento de RAID Proporciona la misma ganancia de rendimiento que podría lograr utilizando grupos de archivos definidos por el usuario, sin la carga administrativa agregada que supone definir y administrar los grupos de archivos.

USO

DE VARIOS GRUPOS DE ARCHIVOS PARA CONTROLAR LA COLOCACIÓN FÍSICA DE LOS DATOS Para utilizar grupos de archivos con el fin de simplificar el mantenimiento o lograr objetivos de diseño, puede: Almacenar los datos de lectura y escritura separados de los datos de sólo lectura para mantener separados los diferentes tipos de actividad de E/S de disco. Almacenar los índices en discos diferentes que las tablas, lo que puede conducir a un mayor rendimiento. Hacer copia de seguridad o restaurar archivos individuales o grupos de archivos en lugar de hacer copia de seguridad o restaurar una base de datos entera. Puede ser

SQL Administración

[email protected]

Pág. 37

Universidad Nacional de Ingeniería necesario hacer copia de seguridad de archivos o de grupos de archivos para las bases de datos grandes con el fin de tener una estrategia eficaz de copia de seguridad y restauración. Agrupar en los mismos grupos de archivos las tablas y los índices que tienen unos requisitos de mantenimiento similares. Quizás desee realizar tareas de mantenimiento en algunos objetos con más frecuencia que en otros. Por ejemplo, si crea dos grupos de archivos y les asigna tablas, puede ejecutar las tareas diarias de mantenimiento en las tablas de un grupo diario y las tareas de mantenimiento semanales en las tablas de un grupo semanal. Esto limita la contención de disco entre los dos grupos de archivos. Separar las tablas de usuario y otros objetos de base de datos de las tablas del sistema en el grupo de archivos principal. También debe cambiar el grupo de archivos predeterminado para evitar que el crecimiento inesperado de las tablas restrinja las tablas del sistema del grupo de archivos principal. Almacenar las particiones de una tabla con particiones en varios grupos de archivos. Ésta es una buena forma de separar físicamente los datos que tienen necesidades de acceso diferentes dentro de una única tabla, y también puede proporcionar ventajas de facilidad de administración y rendimiento.

Creación de esquemas Los desarrolladores que hayan trabajado con Microsoft .NET Framework o con XML estarán familiarizados con el concepto de espacios de nombres. Un espacio de nombres ayuda a agrupar los objetos relacionados, haciendo que las listas de objetos complejas sean más fáciles de administrar. SQL Server 2008 utiliza esquemas para implementar un concepto similar para los objetos de base de datos. Los objetos de una base de datos (como tablas, vistas y procedimientos almacenados) se crean dentro de un esquema. Es esencial comprender lo que es un esquema antes de planear e implementar una base de datos de SQL Server 2008.

Pág. 38

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

ESQUEMAS COMO ESPACIOS DE NOMBRES Un esquema es un espacio de nombres para objetos de base de datos. Es decir, un esquema define un límite dentro del cual todos los nombres son únicos. Puesto que los nombres de esquema deben ser únicos dentro de la base de datos, cada objeto de una base de datos tiene un nombre completo único con el formato servidor.base de datos.esquema.objeto. Dentro de una base de datos, puede acortarlo a esquema.objeto. La ilustración anterior muestra tres esquemas de la base de datos AdventureWorks en una instancia de SQL Server denominada Server1. Los esquemas se denominan Person, Sales y dbo. Cada uno de estos esquemas contiene una tabla y el nombre completo de la tabla incluye el nombre del servidor, la base de datos y el esquema. Por ejemplo, el nombre completo de la tabla ErrorLog del esquema dbo es Server1.AdventureWorks.dbo.ErrorLog. En versiones anteriores de SQL Server, el espacio de nombres de un objeto estaba determinado por el nombre de usuario de su propietario. En SQL Server 2008, los esquemas están separados de la propiedad de los objetos, lo que proporciona las ventajas siguientes: Mayor flexibilidad a la hora de organizar los objetos de base de datos en espacios de nombres, ya que la agrupación de objetos en esquemas no depende de la propiedad de los objetos. Administración de permisos más sencilla, ya que se puede otorgar permisos en el ámbito del esquema y en los objetos individuales. Facilidad de administración mejorada, porque al quitar a un usuario no es necesario cambiar el nombre de todos los objetos que ese usuario posee.

ESQUEMAS DE EJEMPLO La base de datos AdventureWorks utiliza los esquemas siguientes para organizar sus objetos de base de datos en espacios de nombres: HumanResources Person Production Purchasing Sales Por ejemplo, para hacer referencia a la tabla HumanResources se utiliza HumanResources.Employee.

Employee

del

esquema

El esquema dbo Todas las bases de datos contienen un esquema denominado dbo. dbo es el esquema predeterminado para todos los usuarios que no tienen ningún otro esquema predeterminado definido explícitamente. Creación de un esquema Para crear un esquema, utilice el Explorador de objetos de SQL Server Management Studio o utilice la instrucción CREATE SCHEMA, como se muestra en el ejemplo siguiente. Use AdventureWorks

SQL Administración

[email protected]

Pág. 39

Universidad Nacional de Ingeniería GO CREATE SCHEMA Sales GO

Cómo funciona la resolución de nombres de objetos Cuando una base de datos contiene varios esquemas, la resolución de nombres de objetos puede resultar confusa. Por ejemplo, una base de datos podría contener dos tablas denominadas Order en dos esquemas diferentes, Sales y dbo. Los nombres completos de los objetos dentro de la base de datos son inequívocos: Sales.Order y dbo.Order, respectivamente. Sin embargo, el uso del nombre incompleto Order puede producir resultados inesperados. Puede asignar a los usuarios un esquema predeterminado para controlar cómo se resuelven los nombres de objetos incompletos.

CÓMO FUNCIONA LA RESOLUCIÓN DE NOMBRES SQL Server 2008 utiliza el proceso siguiente para resolver un nombre de objeto incompleto: Si el usuario tiene un esquema predeterminado, SQL Server intenta encontrar el objeto en ese esquema predeterminado. Si el objeto no se encuentra en el esquema predeterminado del usuario, si el usuario no tiene ningún esquema predeterminado, SQL Server intenta encontrar el objeto en el esquema dbo.

Pág. 40

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Por ejemplo, un usuario que tiene el esquema predeterminado Person ejecuta la siguiente instrucción Transact-SQL: SELECT * FROM Contact SQL Server 2008 intentará resolver primero el nombre de objeto como Person.Contact. Si el esquema Person no contiene un objeto denominado Contact, SQL Server intentará resolver el nombre de objeto como dbo.Contact. Si un usuario que no tiene ningún esquema predeterminado definido ejecuta la misma instrucción, SQL Server resolverá inmediatamente el nombre de objeto como dbo.Contact. Asignación de un esquema predeterminado Puede asignar un esquema predeterminado a un usuario utilizando el cuadro de diálogo Propiedades de Usuario de la base de datos o especificando el nombre del esquema en la cláusula DEFAULT_SCHEMA de la instrucción CREATE USER o ALTER USER. Por ejemplo, el siguiente código Transact-SQL asigna Sales como el esquema predeterminado para el usuario Angello: ALTER USER Angello WITH DEFAULT_SCHEMA = Sales

SQL Administración

[email protected]

Pág. 41

Universidad Nacional de Ingeniería

C A PI TULO 3    

Pág. 42

Planificación de una Estrategia de Backups Realizando el Backup de la BD Restaurando una BD Recuperación de datos desde Snapshots

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

P B

L A N I F I C A C I Ó N A C K U P S

D E

U N A

E

S T R A T E G I A

D E

Con frecuencia, los datos en una base de datos confirman las operaciones de una organización. Sin la base de datos, la organización no puede funcionar adecuadamente. Es importante que cada misión crítica sistema de base de datos haya sido adecuadamente definida en procedimientos de recuperación de desastres. Las operaciones de Copia de seguridad y Restauración, son una parte vital de la gestión de datos y son esenciales para la recuperación ante fallas y desastres. Por lo tanto, una parte importante del papel de un administrador de bases de datos, es garantizar que los datos sean respaldados y puedan ser restaurados rápidamente en caso de un desastre.

Tipos de Backup

Descripción

Full

Todos los archivos de la Base de Datos, datos (MDF y NDF) y de transacciones (LDF).

Transaction Log

Cualquier cambio en la Base de Datos, es guardado en el archivo de transacciones.

Tail-Log

La porción activa del archivo de transacciones.

Differential

Las partes de la Base de Datos que han cambiado desde el último backup completo a la Base de Datos.

File / Filegroup

Archivos específicos o grupos de archivos.

Partial

El grupo de archivos primario, cada grupo de archivos de lectura/escritura, y cualquier grupo de archivos especificado como lectura/escritura.

Copy-only

La Base de Datos o el archivo de Transacciones (sin afectar la secuencia de backup).

Realizando el Backup de la BD Uso de la Instrucción BACKUP DATABASE Realiza una copia de seguridad completa de la base de datos o de uno o varios archivos o grupos de archivos (BACKUP DATABASE). Además, con el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, realiza la copia de seguridad del registro de transacciones (BACKUP LOG). Sintaxis --creando un backup BACKUP DATABASE { database_name | @database_name_var } TO [ ,...n ]

SQL Administración

[email protected]

Pág. 43

Universidad Nacional de Ingeniería [ ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | [ ,...n ] } ] [;] --Backup para Files o Filegroups BACKUP DATABASE { database_name | @database_name_var } [ ,...n ] TO [ ,...n ] [ ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | [ ,...n ] } ] [;] --Creando un Backup Parcial BACKUP DATABASE { database_name | @database_name_var } READ_WRITE_FILEGROUPS [ , [ ,...n ] ] TO [ ,...n ] [ ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | [ ,...n ] } ] [;]

Argumentos DATABASE Especifica una copia de seguridad completa de la base de datos. Si se especifica una lista de archivos y grupos de archivos, sólo se realiza la copia de seguridad de esos archivos o grupos de archivos. Durante una copia de seguridad completa o diferencial de una base de datos, SQL Server realiza la copia de seguridad de una parte suficiente del registro de transacciones para producir una base de datos coherente cuando se restaure la base de datos. LOG Especifica que sólo se realizará la copia de seguridad del registro de transacciones. Se realiza la copia de seguridad del registro desde la última copia de seguridad del registro ejecutada correctamente hasta el final actual del registro. Antes de que pueda crear la primera copia de seguridad del registro, debe crear una copia de seguridad completa. { database_name | @database_name_var } Es la base de datos para la que se realiza la copia de seguridad del registro de transacciones, de una parte de la base de datos o de la base de datos completa. Si se proporciona como una variable (@database_name_var), este nombre se puede especificar como una constante de cadena (@database_name_var = database name) o como una variable de un tipo de datos de cadena de caracteres, excepto los tipos de datos ntext o text. [ ,...n ] Se utiliza sólo con BACKUP DATABASE, especifica un grupo de archivos o un archivo de copia de seguridad que se va a incluir en una copia de seguridad de archivos o especifica un grupo de archivos o un archivo de sólo lectura que se va a incluir en una copia de seguridad parcial. FILE = { logical_file_name | @logical_file_name_var } Es el nombre lógico de un archivo o una variable cuyo valor equivale al nombre lógico de un archivo que se va a incluir en la copia de seguridad. FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }

Pág. 44

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Es el nombre lógico de un grupo de archivos o una variable cuyo valor equivale al nombre lógico de un grupo de archivos que se va a incluir en la copia de seguridad. En el modelo de recuperación simple, se permite la copia de seguridad de un grupo de archivos sólo si se trata de un grupo de archivos de sólo lectura. n Es un marcador de posición que indica que se pueden especificar varios archivos y grupos de archivos en una lista separada por comas. El número es ilimitado. READ_WRITE_FILEGROUPS [ , FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } [ ,...n ] ] Especifica una copia de seguridad parcial. Una copia de seguridad parcial incluye todos los archivos de lectura/escritura en una base de datos: el grupo de archivos principal y los grupos de archivos secundarios de lectura/escritura, así como los grupos de archivos o archivos de sólo lectura especificados. READ_WRITE_FILEGROUPS Especifica que en la copia de seguridad parcial se copiarán todos los grupos de archivos de lectura/escritura. Si la base de datos es de sólo lectura, READ_WRITE_FILEGROUPS incluye tan sólo el grupo de archivos principal. FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } Es el nombre lógico de un grupo de archivos de sólo lectura o una variable cuyo valor equivale al nombre lógico de un grupo de archivos de sólo lectura que se va a incluir en la copia de seguridad parcial. Para obtener más información, vea "", anteriormente en este tema. n Es un marcador de posición que indica que se pueden especificar varios grupos de archivos de sólo lectura en una lista separada por comas. TO [ ,...n ] Indica que el conjunto de dispositivos de copia de seguridad correspondiente es un conjunto de medios no reflejado o el primero de los reflejos de un conjunto de medios reflejado (para los que se declaran una o más cláusulas MIRROR TO). Especifica el dispositivo de copia de seguridad físico o lógico que se va a utilizar para la operación de copia de seguridad. { logical_device_name | @logical_device_name_var } Es el nombre lógico del dispositivo de copia de seguridad en que se hace la copia de seguridad de la base de datos. El nombre lógico debe seguir las reglas definidas para los identificadores. Si se proporciona como una variable (@logical_device_name_var), el nombre del dispositivo de copia de seguridad se puede especificar como una constante de cadena (@logical_device_name_var = nombre del dispositivo de copia de seguridad lógico) o como una variable de un tipo de datos de cadena de caracteres, excepto los tipos de datos ntext o text. { DISK | TAPE } = { 'physical_device_name' | @physical_device_name_var } Especifica un archivo de disco o un dispositivo de cinta.

SQL Administración

[email protected]

Pág. 45

Universidad Nacional de Ingeniería No es necesario que exista un dispositivo de disco antes de que se especifique en una instrucción BACKUP. Si el dispositivo físico existe y no se especifica la opción INIT en la instrucción BACKUP, la copia de seguridad se anexa al dispositivo. n Es un marcador de posición que indica que se pueden especificar hasta 64 dispositivos de copia de seguridad en una lista separada por comas. MIRROR TO [ ,...n ] Especifica un conjunto de uno o varios dispositivos de copia de seguridad que reflejarán los dispositivos de copia de seguridad especificados en la cláusula TO. La cláusula MIRROR TO debe incluir el mismo número y tipo de dispositivos de copia de seguridad que la cláusula TO. El número máximo de cláusulas MIRROR TO es tres. Esta opción sólo está disponible en SQL Server 2008 Enterprise Edition y versiones posteriores. Vea "", en un apartado anterior de esta sección. n Es un marcador de posición que indica que se pueden especificar hasta 64 dispositivos de copia de seguridad en una lista separada por comas. El número de dispositivos de la cláusula MIRROR TO debe ser igual al número de dispositivos de la cláusula TO. [ next-mirror-to ] Es un marcador de posición que indica que una sola instrucción BACKUP puede contener hasta tres cláusulas MIRROR TO, además de una sola cláusula TO. Opciones de WITH Especifica las opciones que se van a utilizar con una operación de copia de seguridad. DIFFERENTIAL Se utiliza sólo con BACKUP DATABASE. Especifica que la copia de seguridad de la base de datos o el archivo sólo debe estar compuesta por las partes de la base de datos o el archivo que hayan cambiado desde la última copia de seguridad completa. Una copia de seguridad diferencial suele ocupar menos espacio que una copia de seguridad completa. Utilice esta opción para que no tenga que aplicar todas las copias de seguridad de registros individuales efectuadas desde que se realizó la última copia de seguridad completa. DESCRIPTION = { 'text' | @text_variable } Especifica el texto de forma libre que describe el conjunto de copia de seguridad. La cadena puede tener un máximo de 255 caracteres. NAME = { backup_set_name | @backup_set_var } Especifica el nombre del conjunto de copia de seguridad. Los nombres pueden tener un máximo de 128 caracteres. Si no se especifica NAME, está en blanco. PASSWORD = { password | @password_variable } Establece la contraseña del conjunto de copia de seguridad. PASSWORD es una cadena de caracteres.

Pág. 46

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Si se define una contraseña para el conjunto de copia de seguridad, debe suministrarla para realizar operaciones de restauración de SQL Server de ese conjunto de copia de seguridad. No obstante, la contraseña del conjunto de copia de seguridad no impide que se sobrescriba el archivo de copia de seguridad. Para evitar que se sobrescriba el archivo de copia de seguridad, utilice una contraseña para el conjunto de medios (vea la opción MEDIAPASSWORD más adelante en esta tabla). (Para obtener más información sobre cómo utilizar las contraseñas, vea "Permisos", más adelante en este tema.)

Utilizando el Management del SQL Server Primero nos ubicamos en el explorador de objetos, y luego hacemos clic derecho sobre la base de datos, seguidamente, haremos clic sobre la opción de propiedades de la base de datos.

Luego, en la opción “Recovery Model”, seleccionaremos la alternativa “Full”, con la cual, podremos realizar todos los tipos de Backup de nuestra Base de Datos.

SQL Administración

[email protected]

Pág. 47

Universidad Nacional de Ingeniería Una vez cambiadas las propiedades de nuestra base de datos, haremos clic derecho sobre la base de datos de la que queremos una copia de seguridad, en la opción “Tasks”, seleccionamos “Back Up..” (ver figura).

Luego aparecerá la siguiente pantalla, en la cual seleccionaremos el tipo de Backup a realizar.

Pág. 48

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Una vez que hayamos realizado las configuraciones del caso, procederemos a hacer clic sobre el botón “OK”, luego de algunos instantes, aparecerá la siguiente pantalla.

Restaurando una BD Para realizar la restauración de una Base de Datos, podemos hacer uso de la instrucción RESTORE, o de los contrario, utilizar el management Sql Server. RESTORE (Transact-SQL) Restaura copias de seguridad realizadas con el comando BACKUP. Este comando le permite realizar los siguientes escenarios de restauración:      

Restaurar una base de datos completa a partir de una copia de seguridad completa de la base de datos (restauración completa). Restaurar parte de una base de datos (restauración parcial). Restaurar archivos o grupos de archivos en una base de datos (restauración de archivos). Restaurar páginas específicas en una base de datos (restauración de páginas). Restaurar un registro de transacciones en una base de datos (restauración del registro de transacciones). Revertir una base de datos al punto temporal capturado por una instantánea de la base de datos.

--To Restore an Entire Database from a Full database backup (a Complete Restore): RESTORE DATABASE { database_name | @database_name_var } [ FROM [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] | , [ ,...n ] | , | , | , | , } [ ,...n ] ] [;]

--To perform the first step of the initial restore sequence -- of a piecemeal restore: RESTORE DATABASE { database_name | @database_name_var } [ ,...n ] [ FROM [ ,...n ] ] WITH

SQL Administración

[email protected]

Pág. 49

Universidad Nacional de Ingeniería PARTIAL, NORECOVERY [ , [ ,...n ] | , ] [ ,...n ] [;] --To Restore Specific Files or Filegroups: RESTORE DATABASE { database_name | @database_name_var } [ ,...n ] [ FROM [ ,...n ] ] WITH { [ RECOVERY | NORECOVERY ] [ , [ ,...n ] ] } [ ,...n ] [;] --To Restore Specific Pages: RESTORE DATABASE { database_name | @database_name_var } PAGE = 'file:page [ ,...n ]' [ , ] [ ,...n ] [ FROM [ ,...n ] ] WITH NORECOVERY [ , [ ,...n ] ] [;] --To Restore a Transaction Log: RESTORE LOG { database_name | @database_name_var } [ [ ,...n ] ] [ FROM [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] | , [ ,...n ] | , | , } [ ,...n ] ] [;] RESTORE DATABASE { database_name | @database_name_var } FROM DATABASE_SNAPSHOT = database_snapshot_name

Permisos Si la base de datos que se va a restaurar no existe, el usuario debe tener permisos CREATE DATABASE para poder ejecutar RESTORE. Si la base de datos existe, los permisos RESTORE corresponden de forma predeterminada a los miembros de las funciones fijas de servidor sysadmin y dbcreator, y al propietario (dbo) de la base de datos (para la opción FROM DATABASE_SNAPSHOT, la base de datos siempre existe). Los permisos RESTORE se conceden a funciones en las que la información acerca de los miembros está siempre disponible para el servidor. Debido a que los miembros de una función fija de base de datos sólo se pueden comprobar cuando la base de datos es accesible y no está dañada, lo que no siempre ocurre cuando se ejecuta RESTORE, los miembros de la función fija de base de datos db_owner no tienen permisos RESTORE.

Pág. 50

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas La operación de copia de seguridad puede especificar opcionalmente contraseñas de un conjunto de medios, de un conjunto de copia de seguridad o de ambos. Si se ha definido una contraseña en un conjunto de medios o un conjunto de copia de seguridad, debe especificar la contraseña o contraseñas correctas en la instrucción RESTORE. Estas contraseñas impiden operaciones de restauración y anexiones no autorizadas de los conjuntos de copia de seguridad en medios que utilizan herramientas de SQL Server. No obstante, los medios protegidos con contraseña se pueden sobrescribir mediante la opción FORMAT de la instrucción BACKUP.

Ejemplos sobre el uso del RESTORE A. Restaurar una base de datos completa En el siguiente ejemplo se restaura una copia de seguridad completa de la base de datos desde un dispositivo lógico de copia de seguridad de AdventureWorksBackups RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups

B. Restaurar copias de seguridad de bases de datos completas y diferenciales En el siguiente ejemplo se restaura una copia de seguridad completa después de una copia de seguridad diferencial del dispositivo de copia de seguridad Z:\SQLServerBackups\AdventureWorks.bak, que contiene las dos copias de seguridad. La copia de seguridad de bases de datos completa que se va a restaurar es el sexto conjunto de copias de seguridad del dispositivo (FILE = 6), y la copia de seguridad de base de datos diferencial es el noveno conjunto del dispositivo (FILE = 9). En cuanto se recupere la copia de seguridad diferencial, se recuperará la base de datos. RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH FILE = 6 NORECOVERY; RESTORE DATABASE AdventureWorks FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak' WITH FILE = 9 RECOVERY;

C. Restaurar una base de datos con la sintaxis de RESTART En el ejemplo siguiente se usa la opción RESTART para reiniciar una operación RESTORE interrumpida por un error de alimentación del servidor. -- This database RESTORE halted prematurely due to power failure. RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups -- Here is the RESTORE RESTART operation. RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups WITH RESTART

D. Restaurar una base de datos y mover archivos En el ejemplo siguiente se restaura una base de datos completa y el registro de transacciones, y se mueve la base de datos restaurada al directorio C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data. RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO

SQL Administración

[email protected]

Pág. 51

Universidad Nacional de Ingeniería 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', MOVE 'AdventureWorks_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf' RESTORE LOG AdventureWorks FROM AdventureWorksBackups WITH RECOVERY

E. Copiar una base de datos con BACKUP y RESTORE En el ejemplo siguiente se usan las instrucciones BACKUP y RESTORE para realizar una copia de la base de datos AdventureWorks. La instrucción MOVE hace que se restauren los datos y el archivo de registro en las ubicaciones especificadas. La instrucción RESTORE FILELISTONLY se usa para determinar el número y los nombres de los archivos de la base de datos que se están restaurando. La nueva copia de la base de datos se llama TestDB. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL). BACKUP DATABASE AdventureWorks TO AdventureWorksBackups ; RESTORE FILELISTONLY FROM AdventureWorksBackups ; RESTORE DATABASE TestDB FROM AdventureWorksBackups WITH MOVE 'AdventureWorks_Data' TO 'C:\MySQLServer\testdb.mdf', MOVE 'AdventureWorks_Log' TO 'C:\MySQLServer\testdb.ldf'; GO

F. Restaurar con la sintaxis de FILE y FILEGROUP En el siguiente ejemplo se restaura una base de datos llamada MyDatabase que tiene dos archivos, un grupo de archivos secundario y un registro de transacciones. La base de datos usa el modelo de recuperación completa. La copia de seguridad de la base de datos es el noveno conjunto de copia de seguridad del conjunto de medios en un dispositivo lógico de copia de seguridad llamado MyDatabaseBackups. A continuación se restauran mediante WITH NORECOVERY tres copias de seguridad de registros que están en los tres conjuntos de copia de seguridad siguientes (10, 11 y 12) en el dispositivo MyDatabaseBackups. Tras restaurar la última copia de seguridad de registros se restaura la base de datos. Tenga en cuenta que en RESTORE DATABASE hay dos tipos de opciones FILE. Las opciones FILE que preceden al nombre del dispositivo de copia de seguridad especifican los nombres de archivos lógicos de los archivos de base de datos que se van a restaurar desde el conjunto de copia de seguridad; por ejemplo, FILE = 'MyDatabase_data_1'. Este conjunto de copia de seguridad no es la primera copia de seguridad de la base de datos en el conjunto de medios; por ello, su posición en el conjunto de medios se indica mediante la opción FILE de la cláusula WITH, FILE=9. RESTORE DATABASE MyDatabase FILE = 'MyDatabase_data_1', FILE = 'MyDatabase_data_2', FILEGROUP = 'new_customers' FROM MyDatabaseBackups WITH FILE = 9, NORECOVERY; GO -- Restore the log backups. RESTORE LOG MyDatabase FROM MyDatabaseBackups

Pág. 52

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas WITH FILE = 10, NORECOVERY; GO RESTORE LOG MyDatabase FROM MyDatabaseBackups WITH FILE = 11, NORECOVERY; GO RESTORE LOG MyDatabase FROM MyDatabaseBackups WITH FILE = 12, NORECOVERY; GO --Recover the database: RESTORE DATABASE MyDatabase WITH RECOVERY; GO

Recuperando la BD desde el management

Especificamos el origen del archivo de Backup, seleccionamos “From Device”

SQL Administración

[email protected]

Pág. 53

Universidad Nacional de Ingeniería

Hacemos clic sobre el botón “Add” para especificar la ubicación del archivo de Backup.

Seleccionamos el archivo.

Pág. 54

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Confirmamos la ubicación del archivo a recuperar.

Indicamos el nombre de la Base de Datos a recuperar.

SQL Administración

[email protected]

Pág. 55

Universidad Nacional de Ingeniería

Verificamos la ubicación de los archivos de mdf, ndf y ldf.

Una vez completado, aparecerá el siguiente mensaje.

Pág. 56

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

C API TULO 4    

Administración de la Seguridad Modos de autenticidad Creación de Usuarios Uso de Credenciales y Permisos

SQL Administración

[email protected]

Pág. 57

Universidad Nacional de Ingeniería

A

D M I N I S T R A C I Ó N

D E

L A

S

E G U R I D A D

La seguridad es una consideración primordial cuando se diseña y administra un entorno de base de datos, aquí, daremos a conocer los componentes fundamentales de seguridad de SQL Server: entidades de seguridad, protegibles y el modo en que se aplican los permisos dentro del modelo de seguridad de SQL Server.

¿Qué son las entidades de seguridad? SQL Server 2008 emplea el término entidad de seguridad para referirse a las identidades autenticadas en un sistema de SQL Server. La comprensión de las diferentes entidades de seguridad que pueden existir en un sistema de SQL Server le ayudará a planear su modelo de seguridad.

Una entidad de seguridad es cualquier identidad autenticada a la que se puede conceder permiso para tener acceso a un objeto del sistema de base de datos. SQL Server distingue entre entidades principales indivisibles, que son identidades únicas (como, por ejemplo, inicios de sesión), y entidades de seguridad de colección, que son colecciones de identidades (tales como funciones fijas de servidor). Las entidades de seguridad existen en tres niveles: Microsoft Windows®, SQL Server y base de datos. Los tipos de entidad de seguridad posibles en cada uno de estos niveles

Pág. 58

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas se muestran en la tabla siguiente. Nivel Windows

SQL Server Base de datos

Entidades de seguridad Cuenta de usuario local de Windows Cuenta de usuario de dominio de Windows Grupo de Windows Inicio de sesión de SQL Server Función de SQL Server Usuario de la base de datos Función de la base de datos Función de aplicación Grupo de bases de datos (sólo compatibilidad con versiones anteriores)

para

Nota Los grupos de bases de datos se admiten principalmente por motivos de compatibilidad con versiones anteriores. Debería usar las funciones de base de datos para crear entidades de seguridad de colección en el nivel de base de datos.

¿Qué son los protegibles? Los objetos cuyo acceso está regulado por el sistema de autorización de SQL Server 2008 se denominan protegibles. Como ocurre con las entidades de seguridad, es necesario comprender los diferentes ámbitos de los protegibles en SQL Server para planear su modelo de seguridad.

Los protegibles se organizan en jerarquías anidadas llamadas ámbitos, que también se pueden proteger. Los tres ámbitos protegibles son servidor, base de datos y esquema. Los protegibles en el nivel de Windows incluyen archivos y claves del Registro. El ámbito de servidor

SQL Administración

Los protegibles que contiene el ámbito de servidor incluyen: ■ Inicios de sesión ■ Extremos ■ Bases de datos

[email protected]

Pág. 59

Universidad Nacional de Ingeniería El ámbito de base de datos

El ámbito de esquema

Los protegibles que contiene el ámbito de base de datos incluyen: ■ Usuarios ■ Funciones ■ Funciones de aplicación ■ Certificados ■ Claves simétricas ■ Claves asimétricas ■ Ensamblados ■ Catálogos de texto completo ■ Eventos DDL ■ Esquemas Los protegibles que contiene el esquema incluyen: ■ Tablas ■ Vistas ■ Funciones ■ Procedimientos ■ Tipos ■ Sinónimos ■ Agregados

Nota Tenga en cuenta que una entidad de seguridad también puede ser un protegible. Por ejemplo, un inicio de sesión es una entidad de seguridad, pero también se pueden otorgar permisos en ese inicio de sesión a otros inicios de sesión, lo que lo convierte en un protegible.

Permisos de SQL Server 2008 SQL Server 2008 usa permisos para controlar el acceso a los protegibles por parte de entidades de seguridad. Para planear su modelo de seguridad para la base de datos, es importante entender cómo se implementan los permisos en los ámbitos de los protegibles.

Pág. 60

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Los permisos son las reglas que gobiernan el nivel de acceso de las entidades de seguridad a los protegibles. Se pueden otorgar, revocar o denegar permisos en un sistema de SQL Server. Todos los protegibles de SQL Server tienen permisos asociados que pueden otorgarse a cada entidad de seguridad.

Ejemplo de permiso La única manera de que una entidad de seguridad pueda tener acceso a un recurso en un sistema de SQL Server es recibir permiso para ello, directa o indirectamente a través de la suscripción de una entidad secundaria como una función o un grupo. Puede administrar los permisos usando el Explorador de objetos en SQL Server Management Studio o mediante la ejecución de instrucciones GRANT, REVOKE o DENY. Los permisos concretos asociados a cada uno de los protegibles varían según los tipos de acciones que son compatibles con un protegible.

Permisos heredados Determinados permisos en SQL Server 2008 se pueden heredar a través de un permiso concedido en un nivel más alto de la jerarquía de ámbito del protegible. Por ejemplo: ■ Una entidad de seguridad a la que se le ha concedido el permiso SELECT en un esquema hereda automáticamente el permiso SELECT en todos los objetos del esquema. ■ Una entidad de seguridad a la que se la ha concedido el permiso CONTROL en un objeto de base de datos hereda automáticamente el permiso CONTROL en todos los protegibles que contiene esa base de datos y todos los protegibles que contienen los esquemas incluidos en esa base de datos. Permisos efectivos Los permisos efectivos para una entidad de seguridad se evalúan de la misma manera que en versiones anteriores de SQL Server. Una entidad de seguridad puede realizar una acción determinada si: ■ El permiso se ha concedido explícitamente a la entidad de seguridad o a una colección de la que es miembro la entidad de seguridad, y… ■ El permiso no se ha denegado explícitamente a la entidad de seguridad o a una colección de la que es miembro la entidad de seguridad. Nota Una instrucción DENY explícita siempre reemplaza a una instrucción GRANT. Por ejemplo, si a un usuario se le ha concedido explícitamente el permiso SELECT en una tabla determinada pero es miembro de una función a la que se le ha denegado explícitamente el permiso SELECT en la tabla, el usuario no podrá ejecutar una instrucción SELECT en la tabla.

¿Qué son los modos de autenticación de SQL Server? SQL Server 2008 puede configurarse para usar uno de los dos modos de autenticación siguientes:

SQL Administración

[email protected]

Pág. 61

Universidad Nacional de Ingeniería Modo de autenticación de Windows. Los usuarios se autentican con Windows y se les concede el acceso a SQL Server mediante un inicio de sesión asignado a su cuenta de Windows (o a un grupo de Windows del que son miembros). Cuando se realiza la solicitud de conexión inicial, el símbolo de acceso del usuario, que se emitió cuando se inició sesión en Windows, se presenta a SQL Server y, si se encuentra un inicio de sesión coincidente, se concede al usuario el acceso a SQL Server.

Modo de autenticación de Windows y SQL Server. Los usuarios que se conectan a SQL Server mediante una conexión de confianza (una conexión de red a través de la cual se puede pasar el símbolo de acceso de Windows del usuario) tienen acceso a SQL Server mediante la autenticación de Windows. Además, SQL Server mantiene inicios de sesión no asignados a usuarios de Windows y los usuarios pueden conectarse a SQL Server tras indicar un nombre de inicio de sesión válido y la contraseña que SQL Server valida de forma independiente a Windows. El modo de autenticación de Windows y SQL Server se conoce a veces como modo mixto.

Nota Los inicios de sesión en SQL Server asignados a los usuarios de Windows se conocen como inicios de sesión de Windows. Los inicios de sesión autenticados en SQL Server se conocen como inicios de sesión de SQL. Las necesidades de seguridad de sus entornos de servidor y de red determinarán el modo de autenticación que se usará para SQL Server. Puede usar SQL Server Management Studio para establecer el modo de autenticación de su servidor.

CUANDO USAR EL MODO DE AUTENTICACIÓN WINDOWS Use el modo de autenticación de Windows en entornos de red en los que todos los usuarios estén autenticados mediante cuentas de usuario de Windows. La autenticación de Windows proporciona varias ventajas sobre la autenticación de SQL Server, como por ejemplo: Le permite agregar grupos de usuarios a SQL Server mediante la agregación de una cuenta de inicio de sesión única. Permite a los usuarios un rápido acceso a SQL Server sin tener que recordar otra cuenta de inicio de sesión y contraseña.

Pág. 62

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

CUANDO USAR EL MODO DE AUTENTICACIÓN SQL Use el modo de autenticación de Windows y SQL Server cuando deba permitir que se conecten a SQL Server usuarios o aplicaciones que no tienen las credenciales de Windows. A menos que necesite específicamente conexiones a SQL Server que no sean de Windows, no debería habilitar el modo de autenticación de Windows y SQL Server por las razones siguientes: La autenticación de Windows no exige que los nombres de usuario y las contraseñas pasen por la red al conectarse a SQL Server. En su lugar, se usa el símbolo de acceso de usuario de Windows, lo que hace más segura la autenticación de Windows. La autenticación de Windows requiere menos sobrecarga administrativa, ya que el acceso a SQL Server puede lograrse mediante un inicio de sesión que se asigna a un grupo de Windows, y la administración de cada uno de los usuarios se confina al dominio de Windows. El modo de autenticación de Windows y SQL Server aumenta la superficie del sistema de SQL Server, lo que lo hace más vulnerable ante cualquier ataque. Importante Independientemente del modo de seguridad empleado, asegúrese de que la contraseña para el inicio de sesión del administrador del sistema (sa) no esté en blanco.

Cómo funcionan las directivas de contraseñas En Microsoft Windows Server™ 2003 y 2008, puede usar la Directiva de grupo para definir las configuraciones de usuarios y equipos para grupos de usuarios y equipos. Puede usar la Directiva de grupo para configurar muchas opciones, incluidas las directivas de cuentas. Las directivas de contraseñas son útiles para garantizar que todas las contraseñas sean lo suficientemente complejas y que se cambien periódicamente para maximizar la seguridad y evitar el acceso no autorizado. En SQL Server 2008, las directivas de cuentas locales o de dominio se pueden aplicar a inicios de sesión de SQL, así como a los inicios de sesión de Windows, cuando SQL Server se instala en equipos que usan Windows Server 2003 / 2008 o posterior.

SQL Administración

[email protected]

Pág. 63

Universidad Nacional de Ingeniería

Directivas de complejidad de contraseñas Las directivas de complejidad de contraseñas están diseñadas para disuadir los ataques de fuerza bruta por medio del aumento del número de contraseñas posibles. Cuando se aplica la directiva de complejidad de contraseñas, las nuevas contraseñas deben cumplir los requisitos de directiva establecidos por la directiva de contraseñas de Windows. Un ejemplo de este tipo de directiva sería: La contraseña no contiene todo o parte del nombre de cuenta del usuario. Una parte de un nombre de cuenta se define como tres o más caracteres alfanuméricos consecutivos delimitados en ambos extremos por un espacio en blanco (espacio, tabulación, retorno, etc.) o por cualquiera de los caracteres siguientes: , . - _ # La contraseña debe tener una longitud de siete caracteres como mínimo. La contraseña contiene caracteres de tres de las cuatro categorías siguientes: Abecedario inglés en mayúsculas (de la A a la Z) Abecedario inglés en minúsculas (de la a a la z) Dígitos en base decimal (del 0 al 9) Caracteres no alfanuméricos (por ejemplo: !, $, #, o %)

Directiva de caducidad de contraseña Las directivas de caducidad de contraseñas se usan para administrar el tiempo de vida de una contraseña. Cuando se usa una directiva de caducidad de contraseñas, se recuerda a los usuarios que cambien las contraseñas anteriores y las cuentas con contraseñas caducadas se deshabilitan.

Cómo administrar inicios de sesión de SQL Server Puede administrar los inicios de sesión mediante el Explorador de objetos en SQL Server Management Studio o por medio de la ejecución de las instrucciones Transact-SQL CREATE LOGIN, ALTER LOGIN y DROP LOGIN.

Pág. 64

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Nota De manera predeterminada, SQL Server está configurado para usar el modo de autenticación de Windows. Todavía puede crear inicios de sesión de SQL, pero no podrán conectarse al servidor hasta que se cambie el modo de autenticación al modo de autenticación de Windows y SQL Server.

CREANDO INICIOS DE SESIÓN Puede usar la instrucción CREATE LOGIN para crear inicios de sesión de Windows o SQL Server. Las opciones concretas que puede usar dentro de la instrucción CREATE LOGIN dependen de si está creando un inicio de sesión de Windows o un inicio de sesión de SQL Server. El ejemplo siguiente muestra una instrucción CREATE LOGIN que crea un inicio de sesión de Windows para un grupo de Windows local denominado SalesDBUsers: CREATE LOGIN [SERVERX\Vendedor] FROM WINDOWS WITH DEFAULT_DATABASE = AdventureWorks

El ejemplo siguiente muestra una instrucción CREATE LOGIN que crea un inicio de sesión de SQL: CREATE LOGIN DRamos WITH PASSWORD = 'Pa$$w0rd', DEFAULT_DATABASE = AdventureWorks

Las cuentas de usuario de Windows están sujetas a directivas de contraseñas aplicadas por Windows. SQL Server 2008 proporciona restricciones de directiva similares para inicios de sesión de SQL cuando está instalado en Windows Server 2003/2008. Cuando una directiva de contraseñas está habilitada para el servidor, SQL Server la habilita de forma predeterminada para nuevos inicios de sesión de SQL; puede cambiar este comportamiento mediante las opciones de la instrucción CREATE LOGIN mostradas en la tabla siguiente. Opción HASHEDloca

MUST_CHANGE

SQL Administración

Descripción Especifica que la contraseña ya se ha comprobado aleatoriamente. Si no está especificada, la cadena se comprobará aleatoriamente antes del almacenamiento. Solicita a un inicio de sesión que cambie su contraseña la primera vez que se conecta. Si se especifica esta opción,

[email protected]

Pág. 65

Universidad Nacional de Ingeniería

CHECK_EXPIRATION

CHECK_POLICY

CHECK_EXPIRATION y CHECK_POLICY deben establecerse en ON. Cuando se encuentra en ON (el valor predeterminado), esta opción especifica que la directiva de caducidad de contraseñas de Windows Server 2003/2008 debería aplicarse al inicio de sesión de SQL Server. Si esta opción se encuentra en ON, la opción CHECK_POLICY también debe estar en ON o se producirá un error en la instrucción. Cuando se encuentra en ON (el valor predeterminado), esta directiva especifica que la directiva de complejidad de contraseñas de Windows Server 2003/2008 debería aplicarse al inicio de sesión de SQL Server.

El ejemplo siguiente muestra una instrucción CREATE LOGIN que crea un inicio de sesión de SQL que no está sujeto a la directiva de contraseñas definida para el servidor: CREATE LOGIN LeoRamos WITH PASSWORD = 'password', DEFAULT_DATABASE = AdventureWorks, CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF

Importante CHECK_EXPIRATION y CHECK_POLICY sólo se aplican en Windows Server 2003/2008 y posteriores. Además, un problema conocido en Windows Server 2003 podría evitar que se restablezca el recuento de la contraseña incorrecta una vez se haya alcanzado el umbral de bloqueo. Esto podría producir un bloqueo inmediato en los subsiguientes intentos fallidos de inicio de sesión. Puede restablecer manualmente el recuento de la contraseña incorrecta con solo establecer CHECK_POLICY = OFF, seguido por CHECK_POLICY = ON.

MODIFICANDO INICIOS DE SESIÓN Puede modificar un inicio de sesión viendo sus propiedades en el Explorador de objetos o mediante la ejecución de la instrucción ALTER LOGIN. Un uso común de la instrucción ALTER LOGIN es desbloquear un inicio de sesión bloqueado por una contraseña caducada. El ejemplo siguiente muestra cómo desbloquear una cuenta bloqueada: ALTER LOGIN dRamos WITH PASSWORD = 'NewPa$$w0rd' UNLOCK

Eliminando inicios de sesión Puede eliminar un inicio de sesión haciendo clic sobre él con el botón secundario en el Explorador de objetos y haciendo clic a continuación en Eliminar, o ejecutando la instrucción DROP LOGIN como se muestra en el ejemplo siguiente: DROP LOGIN dRamos

¿Qué son las funciones fijas de servidor? Las funciones proporcionan un medio de agrupar usuarios en una sola unidad a la que se pueden aplicar permisos.

Pág. 66

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

SQL Server proporciona funciones de servidor predefinidas para funciones administrativas comunes, de manera que resulte sencillo otorgar una selección de permisos administrativos a un usuario determinado. Las funciones fijas de servidor proporcionan agrupaciones de privilegios administrativos en el nivel de servidor. Se administran de forma independiente a las bases de datos de usuarios en el servidor. Además de las funciones fijas de servidor mostradas en la tabla anterior, cada instancia de SQL Server contiene una función fija de servidor especial denominada pública, de la que todos los inicios de sesión son miembros. La función fija de servidor pública recibe el permiso VIEW ANY DATABASE. Asignar una cuenta de inicio de sesión a una función fija de servidor Puede usar las Propiedades de inicio de sesión de SQL Server en SQL Server Management Studio o el procedimiento almacenado del sistema sp_addsrvrolemember para agregar una cuenta de inicio de sesión como un miembro de una función fija de servidor. Sólo los miembros de funciones fijas de servidor pueden ejecutar el procedimiento almacenado del sistema sp_addsrvrolemember. Al agregar una cuenta de inicio de sesión a una función de servidor, la cuenta consigue los permisos asociados a la función de servidor. Para asignar cuentas de inicio de sesión a funciones fijas de servidor, tenga en cuenta los puntos siguientes: No puede agregar, modificar o eliminar funciones fijas de servidor. Cualquier miembro de una función fija de servidor puede agregar otras cuentas de inicio de sesión a esa función. El procedimiento almacenado del sistema sp_addsrvrolemember no puede ejecutarse dentro de una transacción definida por el usuario. También puede usar el procedimiento almacenado del sistema sp_dropsrvrolemember para eliminar un miembro de una función fija de servidor

SQL Administración

[email protected]

Pág. 67

Universidad Nacional de Ingeniería

Requisitos para la delegación SQL Server y Windows se pueden configurar para permitir que una instancia de SQL Server se conecte a otra instancia de SQL Server en el contexto de un usuario de Windows autenticado. Esta técnica se conoce como delegación.

Por ejemplo, un procedimiento almacenado en una base de datos en Servidor1 podría consultar una tabla en una base de datos en Servidor2. Cuando se usa la delegación, el procedimiento almacenado usa la identidad de seguridad del usuario que lo llamó al solicitar los datos desde Servidor2.

Requisitos para la delegación Para usar la delegación, todos los servidores a los que está conectando deben tener instalado Windows 2003 o Windows Server 2008 con el soporte técnico de Kerberos habilitado; además, debe estar usando el servicio de directorios de Active Directory®. Windows Server 2008 admite una delegación más concreta que las versiones anteriores de Windows. Windows Server 2003 permite la concesión de derechos de delegación a determinadas combinaciones de servicios. Se dice que estas combinaciones son de confianza para la delegación restringida. Esta configuración es la configuración preferida y más segura en dominios que tienen la funcionalidad completa de Windows Server 2003/2008. Configurar Active Directory para la delegación Debe establecer las opciones de cuenta siguientes en Active Directory para que la delegación funcione: La cuenta es confidencial y no se puede delegar. No debe seleccionar esta opción para el usuario que solicita la delegación. La cuenta es de confianza para la delegación. Debe seleccionar esta opción para la cuenta de servicio de SQL Server. El equipo es de confianza para la delegación. Debe seleccionar esta opción para el equipo que ejecuta SQL Server. Configurar SQL Server para la delegación Para usar la delegación de la cuenta de seguridad, SQL Server debe tener un Nombre principal de servicio (SPN) asignado por el administrador de dominio de cuenta de Windows Server 2003 a la cuenta de servicio de SQL Server y debe usar un Protocolo de control de transmisión/Protocolo de Internet (TCP/IP). Si el servicio de SQL Server se está ejecutando en la cuenta LocalSystem, el servicio SQL Server registra un SPN automáticamente al inicio del servicio y anula el registro cuando se cierra SQL Server.

Pág. 68

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

¿Qué son las credenciales? Una credencial es una representación alternativa de un inicio de sesión que contiene la información de autenticación necesaria para conectarse a un recurso fuera de SQL Server. La mayoría de las credenciales están compuestas por un inicio de sesión y una contraseña de Windows. Las credenciales permiten a los usuarios que se conectan a SQL Server mediante el modo de autenticación de SQL Server conectarse a Windows (u otros recursos) fuera de SQL Server. Por ejemplo, un usuario conectado a SQL Server con un inicio de sesión de SQL podría ejecutar un procedimiento almacenado que llama a un servicio web ASP.NET que está configurado para la autenticación de Windows. El procedimiento almacenado pasaría al servicio web el nombre de cuenta y la contraseña de Windows en la credencial asignada al inicio de sesión de SQL Server.

CREANDO CREDENCIALES Puede crear una credencial mediante el uso de SQL Server Management Studio o de la instrucción CREATE CREDENTIAL de Transact-SQL. La sintaxis de la instrucción CREATE CREDENTIAL puede verse en la siguiente muestra de código. CREATE CREDENTIAL credential_name WITH IDENTITY = 'identity_name' [ , SECRET = 'secret' ]

Las cláusulas y parámetros de la instrucción CREATE CREDENTIAL son como se describen a continuación: credential_name. Especifica el nombre de la credencial que se está creando. credential_name no puede comenzar con el signo almohadilla (#). Las credenciales del sistema empiezan por ##. identity_name. Especifica el nombre de la cuenta que se va a usar al conectarse fuera del servidor. secret. Especifica el secreto requerido para superar la autenticación. Esta cláusula es opcional. El ejemplo siguiente crea la credencial llamada AlterEgo. La credencial contiene el usuario de Windows Francesca y la contraseña Pa$$w0rd. CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'ADVENTURE-WORKS\Francesca', SECRET = 'Pa$$w0rd' GO

SQL Administración

[email protected]

Pág. 69

Universidad Nacional de Ingeniería

Permisos de ámbito de servidor Los protegibles del ámbito de servidor incluyen objetos como el mismo servidor, los inicios de sesión y las bases de datos.

La tabla siguiente muestra algunos permisos de ejemplo en el ámbito de servidor. Para obtener una lista completa de los permisos, consulte “Permisos” en los Libros en pantalla de SQL Server. Protegible Servidor

Permiso CONNECT_SQL CREATE LOGIN ALTER ANY LOGIN CONTROLSERVER

Login

ALTER IMPERSONATE CREATE TABLE

Base de datos

ALTER ANY USER CONTROL

Descripción Conectarse al servidor. Crear un inicio de sesión. Modificar cualquier inicio de sesión en el ámbito de servidor. Control administrativo de todo el sistema. Modificar el inicio de sesión. Suplantar el inicio de sesión. Crear una tabla en la base de datos. Modificar cualquier usuario de la base de datos. Control completo de la base de datos.

Conceder los permisos a protegibles de ámbito de servidor Para conceder permisos a protegibles en el ámbito de servidor: Use el Explorador de objetos en SQL Server Management Studio para ver las propiedades del inicio de sesión al que desea conceder los permisos. En la ficha Elementos que pueden protegerse, agregue los protegibles requeridos y establezca los permisos necesarios. También puede otorgar permisos del ámbito de servidor mediante el uso de la instrucción GRANT de Transact-SQL con la sintaxis siguiente: GRANT { securable_permission [ ,...n ] } [ON securable_type :: securable_name] TO login [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]

Las cláusulas y parámetros de la instrucción GRANT para protegibles del ámbito de servidor se describen en la tabla siguiente. Cláusula/Parámetro securable_permission securable_type

securable_name

Pág. 70

Descripción El permiso específico que se concede al protegible. El tipo de protegible del ámbito de servidor al que se aplica el permiso. Esta cláusula se omite si el permiso se aplica al propio servidor. El nombre del protegible del ámbito de servidor.

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Inicio de sesión WITH GRANT OPTION AS group | role

Un inicio de sesión al cual se otorga el permiso. Una opción que permite que el cesionario conceda el mismo permiso a otros. Una especificación de una entidad de seguridad con los permisos necesarios para conceder este permiso del ámbito de servidor. Se requiere en escenarios en los que el otorgante no tiene todos los permisos necesarios para conceder el permiso, pero es miembro de una función o grupo que sí los tiene.

El ejemplo siguiente muestra cómo otorgar el permiso de servidor ALTER ANY DATABASE y el permiso ALTER a un inicio de sesión denominado AWWebApp para un inicio de sesión denominado ADVENTUREWORKS\Naty: USE master GRANT ALTER ANY DATABASE TO [ADVENTUREWORKS\Naty] GRANT ALTER ON LOGIN :: AWWebApp TO [ADVENTUREWORKS\Naty]

Cómo administrar usuarios Los inicios de sesión se usan para permitir el acceso al sistema SQL Server. Sin embargo, el acceso a cada una de las bases de datos se logra creando usuarios en esas bases de datos. Puede crear usuarios mediante el uso del Explorador de objetos en SQL Server Management Studio o la ejecución de la instrucción CREATE USER en la base de datos adecuada.

Asignar usuarios a inicios de sesión En la mayoría de los casos, los usuarios de la base de datos están asignados a inicios de sesión. Por ejemplo, podría crear una usuaria llamada Eliana en la base de datos AdventureWorks para hacer que esa base de datos sea accesible para un inicio de sesión denominado ADVENTUREWORKS\ Eliana. De forma predeterminada, todos los inicios de sesión suscritos a la función fija de servidor sysadmin están asignados al usuario dbo en todas las bases de datos. Cuando se ha creado un inicio de sesión para un grupo de Windows, puede crear un usuario para que el inicio de sesión permita que todos los usuarios de Windows del grupo tengan acceso a la base de datos. Además, puede crear un usuario para un miembro individual del grupo Windows incluso si no existe ningún inicio de sesión individual para ese usuario. Por ejemplo, si un grupo de Windows local denominado DBSERVER1\SalesUsers contiene los usuarios de dominio ADVENTUREWORKS\Naty y ADVENTUREWORKS\Leyla, puede crear un inicio de sesión único para el grupo DBSERVER1\SalesUsers para dar acceso a SQL Server a ambos usuarios. Por ejemplo, podría crear un usuario denominado SalesUsers en la

SQL Administración

[email protected]

Pág. 71

Universidad Nacional de Ingeniería base de datos AdventureWorks que se asigne al inicio de sesión denominado DBSERVER1\SalesUsers para permitir que ambos usuarios tengan acceso a la base de datos. Sin embargo, si deseara conceder los permisos concretos a Naty y no a Leyla, puede crear un usuario denominado Naty en la base de datos AdventureWorks para ADVENTUREWORKS\Naty, aunque no hay ningún inicio de sesión individual para ADVENTUREWORKS\Naty. Cuando Marta tiene acceso a la base de datos AdventureWorks, lo hace usando la identidad SalesUsers, pero cuando Rosa tiene acceso a la base de datos, lo hace con la identidad Naty. Ejemplo de creación de un usuario Puede crear un usuario en SQL Server Management Studio mediante el uso del Explorador de objetos o la instrucción CREATE USER de Transact-SQL, como se muestra en los ejemplos siguientes: -- Crear un usuario para un inicio de sesión con el mismo nombre CREATE USER Leonardo -- Crear un usuario con un nombre diferente a partir del inicio de sesión asignado CREATE USER Angello FOR LOGIN [ADVENTUREWORKS\Angello] -- Crear un usuario con un esquema predeterminado explícitamente definido CREATE USER SalesUser FOR LOGIN [DBSERVER1\SalesUsers] WITH DEFAULT_SCHEMA = 'Sales'

Modificar un usuario Puede modificar un usuario cambiando sus propiedades en el Explorador de objetos o mediante la ejecución de la instrucción ALTER USER. Quitar un usuario Puede quitar un usuario eliminándolo en SQL Server Management Studio o ejecutando la instrucción DROP USER. Debe transferir la propiedad de los objetos de un usuario antes de anularlo.

Usuarios especiales Los usuarios especiales de una base de datos son usuarios predefinidos que tienen funciones especiales como la de permitir el acceso administrativo o de invitado.

Pág. 72

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas dbo El inicio de sesión sa y los miembros de la función sysadmin están asignados a una cuenta de usuario especial, que se encuentra dentro de todas las bases de datos, denominada dbo. Cualquier objeto creado por un administrador del sistema pertenece automáticamente a dbo. El usuario dbo es una cuenta predeterminada y no puede eliminarse. invitado La cuenta de usuario guest (invitado) permite inicios de sesión sin cuentas de usuario para tener acceso a una base de datos. Las cuentas de inicio de sesión asumen la identidad del usuario guest cuando se cumplen las condiciones siguientes: La cuenta de inicio de sesión tiene acceso a SQL Server pero no tiene acceso a la base de datos a través de su propia cuenta de usuario. Se ha habilitado la cuenta de invitado. La cuenta de invitado puede habilitarse mediante la instrucción GRANT para conceder el permiso CONNECT al usuario invitado. El código siguiente muestra cómo habilitar la cuenta de invitado en la base de datos AdventureWorks: USE AdventureWorks GRANT CONNECT TO guest; GO

Los permisos se pueden aplicar al usuario invitado como si el usuario invitado fuera cualquier otra cuenta de usuario. Puede habilitar al usuario invitado en cualquier base de datos excepto la master y las bases de datos tempdb.

¿Qué son las funciones de base de datos? SQL Server proporciona dos tipos de funciones en el nivel de base de datos: funciones fijas de base de datos y funciones de base de datos definidas por el usuario.

Las funciones fijas de base de datos proporcionan a las agrupaciones privilegios administrativos en el nivel de base de datos a las que se han concedido permisos para las

SQL Administración

[email protected]

Pág. 73

Universidad Nacional de Ingeniería tareas comunes de la base de datos. Las funciones fijas de base de datos de una base de datos se describen en la tabla siguiente. Función db_accessadmin db_backupoperator db_datareader db_datawriter db_ddladmin db_denydatareader db_denydatawriter db_owner db_securityadmin public

Descripción Agregar o quitar usuarios, grupos y funciones de la base de datos. Realizar una copia de seguridad de la base de datos. Leer datos de cualquier tabla. Agregar, cambiar o eliminar datos de cualquier tabla. Agregar, modificar o eliminar objetos de la base de datos. No poder leer los datos de ninguna tabla. No poder cambiar los datos de ninguna tabla. Realizar cualquier actividad de función de base de datos. Cambiar las funciones de la base de datos, cambiar las funciones de aplicación, crear esquemas. Mantener los permisos predeterminados.

La función public es una función fija de base de datos especial a la que pertenece cada usuario de la base de datos y no se puede eliminar. La función public: Mantiene todos los permisos predeterminados para los usuarios de una base de datos. No puede tener usuarios, grupos o funciones asignados porque los usuarios, grupos y funciones ya le pertenecen de forma predeterminada. Está definida en cada base de datos, incluidas las bases de datos master, msdb, tempdb, model y todas las bases de datos de usuario. No se puede eliminar. Sin los permisos adecuados, un usuario puede tener acceso a una base de datos de SQL Server pero sólo podrá realizar tareas limitadas. Sin permisos, un usuario posee todos los permisos que se conceden a la función public y puede realizar las acciones siguientes: Ejecutar las instrucciones que no requieren permisos, como la instrucción PRINT. Ver información de la tabla del sistema y ejecutar ciertos procedimientos almacenados del sistema para la base de datos master y las bases de datos de usuario a las que tenga acceso. Obtener acceso a cualquier base de datos con una cuenta de invitado habilitada Funciones de base de datos definidas por el usuario Cuando ninguna de las funciones fijas de base de datos se adecúa a sus propósitos, puede crear sus propias funciones de base de datos para agrupar a varios usuarios que requieran los mismos permisos en una base de datos. La creación de una función de base de datos definida por el usuario le permite crear un grupo de usuarios con un conjunto de permisos comunes. Puede crear una función de base de datos definida por el usuario mediante el Explorador de objetos en SQL Server Management Studio o por medio de la instrucción CREATE ROLE de Transact-SQL, como se muestra en los ejemplos siguientes: USE AdventureWorks CREATE ROLE auditors

Puede modificar o eliminar una función de base de datos definida por el usuario en el Explorador de objetos o mediante el uso de las instrucciones ALTER ROLE y DROP ROLE de Transact-SQL.

Asignar una entidad de seguridad a una función de base de datos

Pág. 74

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Después de crear una función, use el Explorador de objetos en SQL Server Management Studio o el procedimiento almacenado del sistema sp_addrolemember para agregar usuarios o funciones como miembros de la función. Sólo los miembros de las funciones fijas de servidor sysadmin, db_securityadmin y db_owner o el propietario de la función pueden ejecutar sp_addrolemember para agregar un miembro a una función de base de datos definida por el usuario. Considere los datos siguientes cuando asigne cuentas de seguridad a una función de base de datos definida por el usuario: Cuando agrega una cuenta de seguridad a una función, cualquier permiso aplicado a la función se aplicará al nuevo miembro. Cuando agrega una función de base de datos como un miembro de otra función de base de datos, no es posible crear funciones recursivas. Por consiguiente, SalesManager no podría agregarse como miembro de SeniorEmployee si SeniorEmployee ya fuera miembro de SalesManager. Para quitar una entidad de seguridad de una función de base de datos, use el Explorador de objetos o el procedimiento almacenado del sistema sp_droprolemember.

¿Qué son las funciones de aplicación? Las funciones de aplicación permiten cumplir con la seguridad para una aplicación determinada. Proporcionan un contexto de seguridad alternativo para que un usuario tenga acceso a una base de datos. El usuario ejecuta una aplicación asociada a una función de aplicación y el contexto de seguridad de la función de aplicación se usa en lugar del usuario individual.

Funciones de aplicación frente a otras funciones de base de datos Las funciones de aplicación difieren de otras funciones. A continuación se muestra una lista de las diferencias fundamentales entre las funciones de aplicación y otras funciones: Las funciones de aplicación no tienen miembros: se activan para los usuarios cuando los usuarios ejecutan la aplicación. Las funciones de aplicación permiten que los usuarios dispongan de permisos especiales cuando usan la aplicación y evitan la necesidad de conceder permisos directamente a los usuarios. Las funciones de aplicación exigen activar una contraseña.

SQL Administración

[email protected]

Pág. 75

Universidad Nacional de Ingeniería Al activar una función de aplicación, los usuarios: Pierden todos los permisos existentes en la base de datos actual para sus cuentas de usuario y cualquier función a la que pertenezcan, salvo los permisos que se aplican a la función public. Heredan todos los permisos concedidos a la función de aplicación en la base de datos actual.

Crear una función de aplicación Use SQL Server Management Studio o el comando CREATE APPLICATION ROLE (TransactSQL) para crear una nueva función de aplicación. Sólo los miembros de las funciones db_owner, db_securityadmin y sysadmin pueden crear funciones de aplicación; la instrucción requiere el permiso ALTER ANY APPLICATION ROLE en la base de datos. Cuando se crea una función de aplicación, debe especificarse una contraseña. Esta contraseña se usa a continuación para activar la función de aplicación. El ejemplo siguiente muestra cómo crear una función de aplicación denominada weekly_receipts con una contraseña compleja: CREATE APPLICATION ROLE weekly_receipts WITH PASSWORD = '987Gbv876sPYY5m23' GO

Activar una función de aplicación El procedimiento almacenado sp_setapprole se usa para activar una función de aplicación. sp_setapprole puede ejecutarse sólo mediante instrucciones Transact-SQL y no puede ejecutarse dentro de otro procedimiento almacenado o dentro de una transacción definida por el usuario. El ejemplo siguiente muestra el procedimiento sp_setapprole utilizado para activar la función de aplicación weekly_receipts creada en el ejemplo anterior: EXEC sp_setapprole 'weekly_receipts', '987Gbv876sPYY5m23' GO

Permisos de ámbito de base de datos Los permisos de base de datos son permisos para que una entidad de seguridad pueda ejecutar ciertas tareas dentro de la base de datos. Por ejemplo, el permiso ALTER ANY USER permite que una entidad de seguridad cree, modifique y quite usuarios de una base de datos.

Pág. 76

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

Los permisos del ámbito de base de datos son permisos que pueden aplicarse a protegibles en el ámbito de base de datos, como usuarios, esquemas, funciones, ensamblados y objetos de service broker. La tabla siguiente muestra algunos de los permisos del ámbito de base de datos. Protegible Usuario Esquema

Permiso ALTER SELECT ALTER TAKE OWNERSHIP

Descripción Modificar el usuario especificado. Seleccionar filas de cualquier objeto del esquema. Modificar cualquier objeto del esquema. Hacerse con la propiedad del esquema.

Permisos de ámbito de esquema Los protegibles del ámbito de esquema incluyen objetos como tablas, vistas, procedimientos almacenados y tipos.

SQL Administración

[email protected]

Pág. 77

Universidad Nacional de Ingeniería

La tabla siguiente muestra algunos de los permisos aplicables en el ámbito de esquema. Protegible Esquema

Permiso SELECT ALTER TAKE OWNERSHIP

Tabla

SELECT ALTER CONTROL

Descripción Seleccionar filas de cualquier objeto del esquema. Modificar cualquier objeto del esquema. Hacerse con la propiedad del esquema. Seleccionar filas de la tabla. Modificar la tabla. Control completo de la tabla.

Concesión de permisos de protegible del ámbito de esquema Puede conceder permisos a algunos de los protegibles de la base de datos mediante el uso del Explorador de objetos en SQL Server Management Studio o por medio de la instrucción GRANT de Transact-SQL. La sintaxis de la instrucción GRANT es diferente para los tipos definidos por el usuario que para otros protegibles del ámbito de esquema. La sintaxis usada para conceder permisos en un tipo definido por el usuario se muestra en el ejemplo siguiente, que muestra cómo conceder el permiso EXECUTE en un tipo llamado addressType: USE AdventureWorks GRANT EXECUTE ON TYPE :: Person.addressType TO SalesUser

Para otros protegibles de ámbito de esquema (como tablas, vistas y procedimientos almacenados), use la sintaxis mostrada en el ejemplo siguiente, que muestra cómo conceder el permiso SELECT en una tabla llamada orders en el esquema sales: USE AdventureWorks GRANT SELECT ON sales.orders TO SalesUser

Pág. 78

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

¿Qué son las claves? Una clave es un valor que se puede aplicar a una función criptográfica para cifrar o descifrar un valor de datos seguro. El algoritmo criptográfico que se usa para crear la clave y la longitud de la clave determinan su complejidad. Las claves son la base fundamental para toda la criptografía y se pueden implementar en dos formas: simétrica y asimétrica.

Claves simétricas Una clave simétrica es un valor que se usa tanto para cifrar como para descifrar datos. Cuando se usa una clave simétrica, deben compartirla tanto la persona o sistema que cifra los datos como la persona o sistema que los descifra. SQL Server admite claves simétricas para la encriptación de datos. Puede crear una clave simétrica en SQL Server mediante la ejecución de la instrucción CREATE SYMMETRIC KEY, como se muestra en el ejemplo de código siguiente: CREATE SYMMETRIC KEY SymKey WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'j7%ga5c$b+£hdb05'

Tenga en cuenta que debe cifrar la propia clave simétrica para mantenerla en secreto. En el ejemplo anterior, se usa una contraseña para cifrar la clave simétrica. Las opciones alternativas para cifrar una clave simétrica son usar un certificado, una clave asimétrica u otra clave simétrica.

Claves asimétricas Las claves asimétricas están compuestas de un par de valores que pueden usarse en una función aritmética unidireccional de manera que los datos puedan cifrarse con un valor y descifrarse con el otro. Los pares de claves asimétricas están compuestos de una clave pública, que puede compartirse públicamente, y una privada, que el propietario de la clave debe mantener en secreto. Los datos cifrados con la clave pública sólo pueden descifrarse con la clave privada.

SQL Administración

[email protected]

Pág. 79

Universidad Nacional de Ingeniería Además, la clave pública puede usarse para comprobar que una parte de los datos ha sido cifrada por la clave privada (aunque no puede usarse para descifrar los datos). Este enfoque se usa para crear una firma digital que puede usarse para autenticar el origen de los datos. Puede crear claves asimétricas en SQL Server mediante la ejecución de la instrucción CREATE ASYMMETRIC KEY, como se muestra en el ejemplo siguiente: CREATE ASYMMETRIC KEY AsymKey WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = 'bmsA$dk7i82bv55'

Tenga en cuenta que la clave privada de una clave asimétrica se cifra con una contraseña. Si se omite la cláusula ENCRYPTION BY PASSWORD, SQL Server cifra la clave privada con la clave de base de datos para la base de datos en la que se crea la clave. Las claves de base de datos se analizan más adelante en este módulo.

¿Qué son los certificados? Los certificados son instrucciones firmadas digitalmente que asocian una clave pública a la identidad de la persona o sistema que posee la clave privada correspondiente. Una entidad emisora de certificados de confianza puede emitir los certificados y usarlos para autenticar un gran número de usuarios sin necesidad de mantener una contraseña para cada usuario.

Contenido de un certificado Un certificado suele contener la siguiente información: La clave pública del sujeto (la persona o sistema al que se emitió el certificado). La información identificativa del sujeto, como el nombre y la dirección de correo electrónico. El período de validez. Ésta es el tiempo durante el que el certificado se considera válido. Información identificadora y firma digital del emisor. Certificados en SQL Server SQL Server 2008 admite certificados para la autenticación, autorización y criptografía; también proporciona la funcionalidad para crear, exportar e importar certificados, como se muestra en el ejemplo de código siguiente:

Pág. 80

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas -- crear un nuevo certificado CREATE CERTIFICATE AWCustRelationsCert ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y' WITH SUBJECT = 'Adventure Works Customer Relations', EXPIRY_DATE = '31/10/2009' -- Exportar el certificado BACKUP CERTIFICATE AWCustRelationsCert TO FILE = 'c:\certs\AWCustRelationsCert.cer' -- Importar un certificado CREATE CERTIFICATE SupplierCert FROM FILE = 'c:\certs\SupplierCert.cer'

Arquitectura de criptografía de SQL Server SQL Server 2008 usa una jerarquía de claves y certificados para implementar la funcionalidad criptográfica. Cada nivel de la jerarquía se usa para proteger los elementos del nivel inmediatamente inferior.

Clave principal de servicio La Clave principal de servicio es una clave Triple DES en la base de la jerarquía de cifrado de SQL Server 2008. Esta clave se genera automáticamente cuando se necesita por primera vez, y está protegida por la protección de datos de Windows API (DPAPI). Clave principal de base de datos Una clave principal de base de datos es una clave simétrica Triple DES que se puede usar para proteger las claves privadas de certificados y claves asimétricas de una base de datos. Cuando se crea una clave principal de base de datos, se cifra mediante el uso del algoritmo Triple DES y una contraseña proporcionada por el usuario. Para habilitar el descifrado automático de la clave principal, una copia de la clave se cifra mediante el uso de la Clave principal de servicio tanto en la misma base de datos como en la base de datos master. La muestra de código Transact-SQL siguiente muestra cómo crear una clave principal de base de datos. USE AdventureWorks CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'

SQL Administración

[email protected]

Pág. 81

Universidad Nacional de Ingeniería Claves y certificados en una base de datos Puede crear claves y certificados en una base de datos para cifrar los datos confidenciales o implementar una autenticación y autorización basadas en certificados. Las claves privadas en una base de datos se pueden proteger mediante la clave principal de base de datos o mediante una contraseña.

Cuándo usar claves y certificados Hay varias maneras de usar claves y certificados en una solución de base de datos de SQL Server. Cifrado de datos Puede usar claves y certificados para cifrar datos para el almacenamiento seguro en la base de datos. SQL Server incluye las funciones en la tabla siguiente para cifrar y descifrar datos. Funciones EncryptByKey y DecryptByKey

KeyGUID. EncryptByAsymKey y DecryptByAsymKey

EncryptByCert y DecryptByCert

Descripción Use estas funciones para cifrar y descifrar datos con una clave simétrica. Estas funciones requieren un GUID que identifique la clave asimétrica que debe usarse, lo que puede obtenerse llamando a la función Use estas funciones para cifrar y descifrar datos con una clave asimétrica. Estas funciones requieren un Id. que identifique la clave asimétrica que debe usarse, lo que puede obtenerse llamando a la función AsymKey_ID. Use estas funciones para cifrar y descifrar datos con un certificado. Estas funciones requieren un Id. Que identifique la clave asimétrica que debe usarse, lo que puede obtenerse llamando a la función Cert_ID

Los algoritmos de criptografía asimétrica, como los usados por claves y certificados asimétricos, son intensivos para el procesador y pueden conducir a la sobrecarga de rendimiento cuando se usan para cifrar grandes cantidades de datos. Por esta razón, generalmente debería cifrar los datos con una clave simétrica, que a su vez se cifra con una clave asimétrica o un certificado. Firma de módulos de código Puede usar una clave asimétrica o un certificado para firmar un módulo de código, como un procedimiento, función o desencadenador almacenado. Cualquier modificación subsiguiente en un módulo de código firmado invalidará la firma. La firma y contrafirma sólo pueden realizarla las personas con acceso a la clave privada. Además de comprobar que el módulo de código no ha sido forzado, una firma crea una identidad secundaria para el módulo de código. Puede crear un usuario a partir del certificado usado para firmar el módulo de código mediante la cláusula FOR CERTIFICATE de la instrucción CREATE USER y conceder permisos al usuario basado en certificados en lugar de a los usuarios que ejecutarán el módulo de código. Para firmar un módulo de código, la clave privada debe estar presente y usar la instrucción ADD SIGNATURE como se muestra en el ejemplo siguiente: ADD SIGNATURE TO Sales.AddOrder BY CERTIFICATE SalesDevCert

Contexto de suplantación SQL Server 2008 proporciona la cláusula EXECUTE AS para controlar el contexto de seguridad para la ejecución del módulo de código. Si un módulo de código que cambia de contexto de ejecución usando la cláusula EXECUTE AS obtiene acceso a los recursos de otra base de datos, la base de datos de destino debe confiar en el autenticador usado para

Pág. 82

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas establecer el contexto de la suplantación para extender el contexto de la suplantación de la base de datos de origen. Una manera de extender el contexto de la suplantación por varias bases de datos es firmar el módulo de código que contiene la cláusula EXECUTE AS con un certificado. La firma realiza dos funciones: actúa como autenticador para el contexto de la suplantación y proporciona una identidad secundaria para el módulo de código. En la base de datos de destino, debe crear un usuario que esté asignado al certificado y conceder el permiso AUTHENTICATE (si el código requiere permisos del ámbito de base de datos) o el permiso AUTHENTICATE SERVER (si el código requiere permisos del ámbito de servidor). Esto permite que el certificado usado como autenticador en la base de datos de origen compruebe la identidad del módulo de código en la base de datos de destino. También deben concederse al usuario asignado al certificado los permisos necesarios para tener acceso a los objetos de base de datos referenciados por el módulo de código. Esto permite usar la identidad secundaria del módulo de código firmado para tener acceso a los recursos necesarios. Autenticación entre servidores Puede usar certificados para implementar la autenticación por las instancias del servidor para el reflejo del service broker y de la base de datos. Esto permite que las instancias del servidor se autentiquen entre sí para comunicarse de forma segura.

SQL Administración

[email protected]

Pág. 83

Universidad Nacional de Ingeniería

C A PI TULO 5   

Pág. 84

Transferencia de Datos Modos de Transferencia de Datos Introducción al SQL Server Integration Services

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas

¿ Q

U É

E S

L A

T R A N S F E R E N C I A

D E

D A T O S

?

La transferencia de datos es el movimiento de datos entre almacenes de datos. El proceso puede ser desde muy simple hasta muy complejo. Prácticamente todas las soluciones de bases de datos requieren algún tipo de transferencia de datos. Normalmente, el proceso de transferir datos de un sistema a otro implica los pasos siguientes: ■ Extraer datos del origen de datos. ■ Transformar los datos (opcional). ■ Cargar los datos en el almacén de datos de destino.

Escenarios comunes Los siguientes son escenarios comunes para la transferencia de datos:  Trasladar los datos a sistemas de almacenamiento de datos.  Consolidar datos en un lugar a partir de varios orígenes. Por ejemplo, una oficina comercial central puede contar con una base de datos con datos consolidados de todos sus sistemas de almacenamiento remotos.  Mover datos de un sistema heredado a un sistema nuevo.  Mover datos de un sistema no relacional, como el de Excel® de Microsoft Office, a un sistema relacional, como SQL Server 2008.

¿Qué es la transformación de datos? Cuando seleccione datos para importarlos a su sistema, los datos podrían no estar en el formato necesario o no cumplir con sus reglas de validación. Con la transformación de los datos se pueden eliminar incoherencias. La transformación de los datos puede significar un simple cambio de los tipos de datos o una transformación compleja mediante código de procedimiento.

SQL Administración

[email protected]

Pág. 85

Universidad Nacional de Ingeniería

Cambiar el formato de los datos Si integra datos de diferentes orígenes, a sus formatos serán diferentes. El cambio del formato de los datos podría implicar la simple modificación del tipo de datos char a varchar, pero también puede conllevar una transformación más compleja, como el cambio de un campo de fecha basado en cadenas a un tipo de datos datetime. Agregar los datos A menudo, necesitará copiar datos desde un sistema de Procesamiento de transacciones en línea (OLTP) a un Sistema de ayuda a la toma de decisiones (DSS). Con frecuencia, el DSS no requiere la granularidad fina de datos del sistema OLTP. Un DSS suele generar informes agregados, y la transformación de los datos podría mejorar el rendimiento mediante la agregación previa de estos datos y su almacenamiento en un formulario resumido. Mantener la coherencia de los datos Al tratar con datos de sistemas diferentes, existe con frecuencia más de una versión de los mismos datos. Los nombres, direcciones y números de teléfono tienen, por lo general, ortografías o estructuras diferentes y la transformación de los datos puede garantizar la coherencia en el destino. Validar los datos Si tiene cualquier duda sobre la validez de los datos de origen, debería validarlos antes de colocarlos en el sistema de destino. Puede resolver automáticamente algunos errores de validación, pero puede que necesite hacerlo manualmente en el caso de que los errores sean más complejos. Escenarios comunes A continuación se presentan algunos escenarios habituales en los que se puede usar la transformación de los datos: Almacenamiento de datos. Los almacenes de datos son colecciones de datos de varios orígenes, que con frecuencia necesitan un esquema diferente al de estos sistemas originales y podrían contener datos agregados. Un almacén de datos es una herramienta clave para la toma de decisiones, por lo que resulta fundamental que los datos sean coherentes, válidos, y que se almacenen en la estructura adecuada.

Pág. 86

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Integración de aplicación empresarial (EAI). La EAI es el uso compartido de todos los datos disponibles dentro de una organización. Será más eficaz si los datos son coherentes y válidos. Integración negocio a negocio (B2B). Los sistemas B2B necesitan asignar estructuras de datos de una organización a las de otra. Integración con un sistema heredado. Muchas compañías confían en exceso en sistemas heredados, que a menudo generan datos en un formato que no es el ideal para el almacenamiento y el análisis en un sistema moderno. La transformación de los datos modifica su estructura y formato antes de cargarlos en el nuevo sistema.

Herramientas para la transferencia de datos SQL Server 2008 tiene varias herramientas para transferir datos. Cada una de ellas es adecuada para escenarios concretos.

Programa de copia masiva Un Programa de copia masiva (PCM) es un programa de línea de comandos para importar y exportar los datos a archivos de texto. Es una herramienta útil cuando es necesario importar o exportar datos desde la línea de comandos o un archivo de proceso por lotes; proporciona un rendimiento rápido con una carga mínima para el sistema. BULK INSERT BULK INSERT es la versión de Transact-SQL del PCM y tiene muchos de los mismos parámetros. Es útil cuando es necesario incluir la funcionalidad de importación de datos en su lógica de Transact-SQL. Componente de carga masiva XML La Carga masiva XML es un Modelo de objetos componente (COM) independiente que le permite cargar los datos del Lenguaje de marcado extensible (XML) en las tablas de SQL Server. Debería usar el componente Carga masiva de XML cuando necesite importar una gran cantidad de datos XML y distribuirlos en una o más tablas relacionales. Réplica La réplica es útil cuando dos o más sistemas tienen la misma estructura y no es necesario transformar los datos. Los cambios en el sistema editor se replican en los suscriptores con una frecuencia preconfigurada y algunas formas de réplica permitirán que los propios suscriptores

SQL Administración

[email protected]

Pág. 87

Universidad Nacional de Ingeniería modifiquen los datos. La réplica no es adecuada si los datos deben transformarse o si proceden de un sistema no relacional. SQL Server Integration Services Los SQL Server Integration Services son un sistema mucho más avanzado para la transferencia y transformación de los datos. Proporciona una arquitectura flexible, rápida y escalable que permite la integración de datos de forma eficaz en entornos empresariales actuales. La transferencia y transformación de los datos puede ser muy sencilla mediante los SSIS, pero también puede conllevar una compleja asignación y validación de datos.

Introducción a SQL Server Integration Services SSIS es una aplicación compleja. SSIS tiene dos motores: un motor en tiempo de ejecución y un motor de flujo de datos. El motor de flujo de datos controla las tareas de extracción, transformación y carga; el motor en tiempo de ejecución controla todo lo demás, incluidas la repetición y la comunicación con procesos externos.

¿QUÉ ES SSIS? SQL Server 2008 Integration Services (SSIS) es una plataforma para generar soluciones de integración de datos de alto rendimiento, incluidas la extracción, la transformación y la carga (ETL) de paquetes para el almacenamiento de datos. SSIS se compone de un motor en tiempo de ejecución orientado a operaciones y de un motor de flujo de datos escalable y rápido. El flujo de datos existe en el contexto de un flujo de tareas global. El motor en tiempo de ejecución es el que proporciona el recurso en tiempo de ejecución y el soporte operativo para el motor de flujo de datos.

Herramientas y asistentes de SSIS SSIS incluye las herramientas y asistentes siguientes, que pueden usarse para crear, configurar, implementar y ejecutar paquetes SSIS: Diseñadores. SSIS ofrece diseñadores integrados en SQL Server Business Intelligence Development Studio. Juntos, proporcionan el principal entorno de desarrollo para crear paquetes SSIS.

Herramientas administrativas. SSIS incluye varias herramientas administrativas que se pueden usar solas, o bien, se puede obtener acceso a ellas desde SQL Server Management Studio.

Pág. 88

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Estas herramientas administrativas pueden usarse para configurar, implementar y ejecutar paquetes SSIS. Utilidades del símbolo de sistema. SSIS incluye utilidades del símbolo de sistema que pueden usarse para ejecutar paquetes SSIS desde la línea de comandos o en un archivo de proceso por lotes. Asistentes. Los asistentes de SSIS proporcionan una sencilla interfaz de usuario que puede usarse para llevar a cabo las tareas SSIS más habituales.

Terminología SSIS Cuando se crea una solución SSIS, es importante entender la terminología siguiente: Paquete. Un paquete es una colección organizada de conexiones, elementos de flujo de control, elementos de flujo de datos, controladores de eventos, variables y configuraciones que se ensamblan mediante las herramientas de diseño gráfico que proporciona SSIS o que se generan mediante programación. A continuación, se debe guardar el paquete finalizado en SQL Server 2008, el Almacén de paquetes SSIS o el sistema de archivos. El paquete es la unidad de trabajo que se recupera, se ejecuta y se guarda. Tarea. Las tareas realizan el trabajo en paquetes. SSIS incluye tareas para la realización de diversas funciones. Contenedor. Los contenedores son objetos que proporcionan la estructura a los paquetes. Admiten los flujos de control repetidos en paquetes y agrupan tareas y otros contenedores en unidades de trabajo significativas.

CÓMO PROCESA SSIS LAS TAREAS Un paquete está compuesto por un flujo de control y, opcionalmente, por uno o más flujos de datos.

Flujo de control SSIS tiene tres tipos de componentes de flujo de control: contenedores, tareas y restricciones de precedencia.

SQL Administración

[email protected]

Pág. 89

Universidad Nacional de Ingeniería  

 

Los contenedores agrupan las tareas en unidades significativas de trabajo y son compatibles con la repetición a través del contenedor para cada miembro de una colección o hasta que una expresión determinada se evalúa como FALSE. Las tareas realizan el trabajo en paquetes. Las tareas pueden: o Extraer, transformar y cargar datos. o Copiar datos. o Comunicarse con otros procesos. o Trabajar con objetos y datos de SQL Server. o Trabajar con objetos de Analysis Services y procesarlos. o Ejecutar trabajos administrativos como copias de seguridad. Las tareas también contienen secuencias de comandos para implementar funcionalidades personalizadas. Las restricciones de precedencia crean una secuencia ordenada de ejecución para los contenedores y las tareas.

Flujo de datos El flujo de datos es un tipo especial de tarea dentro de un flujo de control. SSIS tiene tres tipos de componentes de flujo de datos: orígenes, destinos y transformaciones. ■ Los orígenes extraen los datos de una amplia gama de almacenes de datos que incluyen bases de datos relacionales, archivos de texto y hojas de cálculo. ■ Las transformaciones modifican los datos entre el origen y el destino, e incluyen la validación, agregación y asignación de datos. ■ Los destinos cargan los datos en cualquiera de los almacenes de datos.

HERRAMIENTAS SSIS SSIS cuenta con una amplia gama de asistentes y herramientas con las que es posible desarrollar paquetes con rapidez. Asistentes SSIS incluye las herramientas y asistentes siguientes, que pueden usarse para crear y administrar paquetes SSIS:  El Asistente para importación y exportación es el método más simple de crear un paquete. Puede importar y exportar de SQL Server, archivos de texto, Microsoft Office Access, Excel, BD OLE y proveedores de Microsoft ADO.NET.  El Asistente para la instalación de paquetes transfiere los paquetes al sistema de archivos o a otra instancia de SQL Server 2008. Antes de ejecutar el Asistente para la instalación de paquetes, debe construir una utilidad de implementación para el proyecto que contiene los paquetes que desea implementar.  El Asistente para la configuración de paquetes crea configuraciones para cambiar los valores de las propiedades de objeto en tiempo de ejecución.  El Asistente para la migración de paquetes convierte los paquetes de los Servicios de transformación de datos (STD) de SQL Server 2000 en paquetes SSIS de SQL Server 2008. Diseñador SSIS El Diseñador SSIS es una herramienta gráfica para crear paquetes. Puede usarla para crear el flujo de control o el flujo de datos, agregar controladores de eventos, ver el contenido del paquete y ver el progreso de ejecución en tiempo de ejecución. El flujo de control, el flujo de datos, los controladores de eventos y el Explorador de paquetes tienen una ficha cada uno en el Diseñador SSIS y una ficha Progreso aparece cuando un paquete se está ejecutando. Hay también un área de Administradores de conexión para agregar y configurar los administradores de conexión que usa un paquete para conectarse a los datos. Utilidades del símbolo de sistema SSIS incluye las siguientes utilidades del símbolo del sistema:

Pág. 90

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas La utilidad del símbolo del sistema dtexec ejecuta un paquete en el equipo local. Puede usar la utilidad Paquete de ejecución (dtexecui.exe) para administrar dtexec a través de un cliente gráfico. ■ La utilidad del símbolo del sistema dtutil copia, elimina, mueve, firma y comprueba paquetes desde el símbolo del sistema. ■

Usar SQL Server Integration Services Para crear paquetes SSIS es necesario entender cómo se crea cada objeto. A menudo los paquetes se crean en sistemas de desarrollo y se implementan en entornos de producción.

¿QUÉ SON LOS ORÍGENES DE DATOS Y LAS VISTAS DE ORIGEN DE DATOS? SSIS incluye dos objetos en tiempo de diseño que facilitan la implementación de las conexiones en paquetes: orígenes de datos y vistas de origen de datos. Los orígenes de datos y las vistas de origen de datos se crean en un proyecto. A continuación, estarán disponibles para cada paquete de ese proyecto. Los orígenes de datos y las vistas de origen de datos son objetos en tiempo de diseño que no se implementan. En su lugar, SSIS usa las propiedades de los orígenes de datos y las vistas de origen de datos para crear administradores de conexiones.

Orígenes de datos Un origen de datos es una referencia en tiempo real a una conexión de almacén de datos. Los orígenes de datos no son necesarios, pero pueden acelerar el desarrollo de un proyecto o de un paquete, dado que muchos administradores de conexión pueden usar el mismo origen de datos. El uso de orígenes de datos en paquetes SSIS proporciona las ventajas siguientes:  Los orígenes de datos están disponibles para un proyecto completo. Puede definir un origen de datos una vez y, a continuación, hacer referencia a él en los administradores de conexión de varios paquetes dentro del proyecto.  Cuando se crea un administrador de conexión mediante un origen de datos, el administrador de conexión copia la cadena de conexiones del origen de datos. El

SQL Administración

[email protected]

Pág. 91

Universidad Nacional de Ingeniería



administrador de conexión no exige que el origen de datos funcione y que continúe funcionando si el origen de datos no está disponible. Si cambia las propiedades de un origen de datos, las cadenas de conexión de todos los objetos basadas en el origen de datos cambiarán.

Vistas de origen de datos Una vista de origen de datos proporciona un subconjunto de datos de un origen de datos. Puede incluir una o más tablas o vistas del almacén de datos definidas en el origen de datos y puede aplicar un filtro a una vista de origen de datos para quitar las filas no deseadas. Puede agregar columnas calculadas y nuevas relaciones entre las tablas y reemplazar las tablas en el origen de datos con consultas. Cuando un componente usa una vista de origen de datos, almacena una instrucción TransactSQL. Por consiguiente, el objeto no se ve afectado incluso si la vista de origen de datos no está disponible. Si la vista de origen de datos cambia las tablas a las que hace referencia, este cambio no se reflejará en los objetos basados en ella. El uso de vistas de orígenes de datos en paquetes SSIS proporciona las ventajas siguientes:  Una vista de origen de datos sólo puede mostrar los objetos pertinentes. Un origen de datos mostrará cada tabla en el almacén de datos subyacente.  Las vistas de origen de datos están disponibles para un proyecto completo. Puede definir una vista de origen de datos una vez y, a continuación, hacer referencia a ella en los objetos de varios paquetes dentro del proyecto.  Puede actualizar una vista de origen de datos para reflejar los cambios en sus orígenes de datos subyacentes.  Una vista de origen de datos almacena en memoria caché los metadatos de los orígenes de datos subyacentes, lo que le permite desconectarse del almacén de datos subyacente y seguir editando las propiedades de la vista de origen de datos.

¿Qué es un administrador de conexión? Un administrador de conexión es una representación lógica de una conexión. Se crea un administrador de conexión en tiempo de diseño para describir la conexión física que SSIS crea cuando el paquete se ejecuta. SSIS crea la conexión física mediante la cadena de conexión y otros atributos del administrador de conexión. Un paquete puede tener varios administradores de conexión, y cada administrador de conexión puede tener atributos diferentes. Por esta razón, podría crear varios administradores de conexión para el mismo almacén de datos, cada uno con propiedades ligeramente diferentes.

Pág. 92

[email protected]

SQL Administración

Facultad de Ingeniería Industrial y de Sistemas Tipos de administradores de conexión Como se describe en la tabla siguiente, SSIS proporciona distintos tipos de administradores de conexión que permiten que los paquetes se conecten a diversos orígenes de datos y servidores. Tipo ADO ADO.NET EXCEL FILE FLATFILE FTP HTTP MSMQ MSOLAP100 MULTIFILE MULTIFLATFILE OLEDB ODBC SMOServer SMTP SQLMOBILE WMI

Descripción Se conecta a orígenes de datos de Objetos de datos de ActiveX® (ADO) Se conecta a un origen de datos mediante un proveedor .NET Se conecta a un archivo de libro de Excel Se conecta a un archivo o a una carpeta Se conecta a un origen de datos de archivo plano Se conecta a un servidor de Protocolo de transferencia de archivos (FTP) Se conecta a un servidor web Se conecta a una cola de mensajes Se conecta a una instancia de SQL Server 2008 Analysis Services (SSAS) o a un proyecto de Analysis Services Se conecta a varios archivos y carpetas Se conecta a varios archivos de datos y carpetas Se conecta a un origen de datos mediante un proveedor OLE DB Se conecta a un origen de datos mediante la Conectividad abierta de bases de datos (ODBC) Se conecta a un servidor de Objetos de administración SQL (SMO) Se conecta a un servidor de correo de Protocolo simple de transferencia de correo Se conecta a una base de datos SQL Server Mobile Se conecta a un servidor y especifica el ámbito del Instrumental de administración de Microsoft Windows® (WMI) en el servidor

¿QUÉ ES EL FLUJO DE CONTROL DE PAQUETES? El flujo de control de paquetes es el proceso de control de la ruta de ejecución de un paquete. Puede implantar condiciones para controlar la secuencia de las tareas basándose en el éxito o error de una tarea anterior o en los resultados de una expresión. Puede agrupar tareas con propósitos organizativos o para proporcionar capacidades transaccionales. También puede repetir grupos de tareas para ejecutar la tarea un cierto número de veces o para cada miembro de una colección.

SQL Administración

[email protected]

Pág. 93

Universidad Nacional de Ingeniería

Tareas Las tareas realizan el trabajo en paquetes. La más importante es la tarea de flujo de datos. Puede haber varias tareas de flujo de datos dentro de un paquete, y cada una puede representar varias operaciones de datos ETL. Otras tareas pueden realizar muchas operaciones diferentes, desde enviar correos electrónicos hasta recibir datos de servicios web. Restricciones de precedencia Las restricciones de precedencia combinan tareas. En su forma más simple, las restricciones de precedencia permiten un flujo estructurado de operación a través de un paquete. Sin embargo, las restricciones de precedencia pueden ser condicionales y permitir que el proceso se ramifique en base a ciertas condiciones. Puede usar el éxito, error o finalización (éxito o error) de la tarea anterior para controlar la ruta de ejecución. Las restricciones de precedencia también pueden comprobar si una expresión se evalúa como Verdadera, y esta expresión se puede usar en lugar de, o además de, la restricción de finalización. Contenedores Los contenedores permiten agrupar o repetir las tareas. Los contenedores de secuencias pueden agrupar tareas para su organización. También puede usarlos como ámbito para una variable, para mantener la privacidad de los valores frente a otras operaciones y como base para transacciones. Puede establecer el soporte transaccional y el nivel de aislamiento a nivel de contenedor de secuencias en lugar de tener que establecer las propiedades de cada tarea individualmente. El contenedor Foreach Loop repite las tareas para cada miembro de una colección. Por ejemplo, podría repetir una importación para cada archivo de una carpeta, o una acción podría realizarse en cada fila de una tabla. Los contenedores For Loop repiten una colección de tareas una o dos veces según la evaluación de una expresión. Antes de usar un contenedor For Loop, debe crear una variable. A continuación, use el contenedor For Loop para establecer un valor inicial (InitExpression), una iteración (AssignExpression) y una evaluación (EvalExpression) para esta variable. Por ejemplo, si tuviera una variable llamada Contador, podría establecer un valor inicial de @Contador=1, una iteración de @Contador=@Contador+1, y una evaluación de @Contador
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF