4.- Arquitectura Cliente/Servidor


1.- Arquitectura Cliente/Servidor



Los sistemas cliente/servidor están construidos de tal modo que la base de datos puede residir en un equipo central, llamado servidor y ser compartida entre varios usuarios. Los usuarios tienen acceso al servidor a través de una aplicación de cliente o de servidor:
  • En un sistema cliente/servidor de dos capas, los usuarios ejecutan una aplicación en su equipo local, llamado cliente, que se conecta a través de la red con el servidor que ejecuta SQL Server.
  • La aplicación de cliente ejecuta las reglas de la compañía y el código necesario para presentar el resultado al usuario; también se conoce como cliente amplio.
  • En un sistema cliente/servidor de varios componentes, la lógica de la aplicación de cliente se ejecuta en dos capas:
      1. El cliente reducido se ejecuta en el equipo local del usuario y se encarga de presentar los resultados al usuario.
      2. La lógica de la compañía se encuentra en aplicaciones de servidor que se ejecutan en un servidor. Los clientes reducidos solicitan funciones a la aplicación de servidor, que, a su vez, es una aplicación multiproceso capaz de operar con varios usuarios simultáneos. La aplicación de servidor es la que abre las conexiones con el servidor de la base de datos y se puede ejecutar en el mismo servidor que la base de datos, o se puede conectar a través de la red con otro servidor que opere como servidor de base de datos. Éste es el escenario típico de las aplicaciones de Internet. Por ejemplo, una aplicación de servidor se puede ejecutar en un equipo con Microsoft Internet Information Services (IIS) y dar servicio a miles de clientes reducidos que se ejecuten en Internet o en una Intranet. La aplicación de servidor utiliza un grupo de conexiones para comunicarse con una copia de SQL Server. SQL Server puede estar instalado en el mismo equipo que el IIS o en otro servidor de la red.

El tener los datos almacenados y administrados en una ubicación central ofrece varias ventajas:
  • No se almacenan copias separadas del elemento en cada cliente, lo que elimina los problemas de hacer que todos los usuarios trabajen con la misma información actualizada.
  • Las reglas de la organización y las reglas de seguridad se pueden definir una sola vez en el servidor para todos los usuarios. Esto se puede hacer en una base de datos mediante el uso de restricciones, procedimientos almacenados y desencadenadores. También se puede hacer en una aplicación de servidor.
  • Los servidores de base de datos relacionales optimizan el tráfico de la red al devolver sólo los datos que la aplicación necesita.
  • Los gastos en hardware se pueden minimizar. Como los datos no están almacenados en los clientes, éstos no tienen que dedicar espacio de disco a almacenarlos. Los clientes tampoco necesitan la capacidad de proceso para administrar los datos localmente y el servidor no tiene que dedicar capacidad de proceso para presentar los datos. El servidor se puede configurar para optimizar la capacidad de E/S de disco necesaria para obtener los datos y los clientes se pueden configurar para optimizar el formato y presentación de los datos obtenidos desde el servidor.
  • El servidor puede estar situado en una ubicación relativamente segura y estar equipado con dispositivos como Sistemas de alimentación ininterrumpida (SAI), lo que resulta más económico que si se protegieran todos los clientes.
  • Las tareas de mantenimiento como las copias de seguridad y restauración de los datos son más sencillas porque están concentradas en el servidor central



Las aplicaciones SQL Server se pueden ejecutar en el mismo equipo que SQL Server.
La aplicación conecta con SQL Server utilizando componentes de comunicación entre procesos (IPC, Interprocess Communications) de Windows, como la memoria compartida, en lugar de la red. Esto permite que SQL Server se utilice en sistemas pequeños en los que las aplicaciones tienen que almacenar los datos localmente.
En los sistemas cliente/servidor grandes, miles de usuarios pueden estar conectados con una instalación de SQL Server al mismo tiempo.
SQL Server tiene una protección completa para dichos entornos, con barreras de seguridad que impiden problemas como tener varios usuarios intentando actualizar el mismo elemento de datos a la vez.
SQL Server también asigna eficazmente los recursos disponibles entre los distintos usuarios, como la memoria, el ancho de banda de la red y la E/S de disco.

Sistemas de bases de datos de escritorio

Aunque SQL Server funciona muy eficientemente como servidor, también se puede utilizar en aplicaciones que necesiten bases de datos independientes almacenadas de forma local en el cliente.
SQL Server se puede autoconfigurar dinámicamente para que se ejecute más eficientemente con los recursos disponibles en el cliente, sin tener que dedicar un administrador de bases de datos a cada cliente. Los fabricantes de aplicaciones también pueden incrustar SQL Server como componente de almacenamiento de datos en su aplicativo.



Cuando los clientes utilizan bases de datos SQL Server locales, una copia del motor de bases de datos de SQL Server se ejecuta en el cliente y administra todas las bases de datos de SQL Server de dicho cliente. Las aplicaciones conectan con el motor de la base de datos casi de la misma forma en que se conectan a través de la red con un motor de base de datos que se ejecuta en un servidor remoto.


SQL Server se encarga de administrar bases de datos relacionales basadas en la arquitectura Cliente / Servidor (RDBMS: Relational Database Management System).

SQL Server utiliza la arquitectura Cliente / Servidor para coordinar el trabajo entre el equipo cliente y el equipo servidor; dependiendo del tipo de aplicación que se quiera programar la repartición de la carga de trabajo entre el cliente y el servidor.

El equipo cliente se suele encargar de la parte lógica y de mostrar la información al usuario que realiza una petición.

El equipo servidor SQL Server, se encarga de administrar la base de datos, de gestionar los recursos del servidor (CPU, memoria, etc) y por supuesto de resolver y devolver el resultado de la petición realizada por el cliente.

El sistema RDBMS se encarga de:
  • Crear una estrategia de copias de seguridad
  • Crear planes de mantenimiento para el buen funcionamiento de la base de datos (Chequeo de todos los objetos que componen una base de datos)

2.- Componentes del SQL Server 2005



SQL Server 2005 se compone de:

 Componente  Descripción
 Motor de Base de datos Relacional El motor de  base de datos relacional de SQL Server  es el corazón de SQL Server 2005 y proporciona un ambiente de alto rendimiento, escalable, seguro para almacenar y recuperar datos de modificación relacional o formato Extensible Markup Language (XML)
 Analysis Services Proporciona la base de una solución Business Intelligence para soporte de Aplicaciones Online Analytical Processing (OLAP)  y Data Miining.
 SQL Server Integration Services (SSIS) Un motor que se utiliza para: Importar, Exportar datos y transformaciones de datos mientras que se transfieren.
 Notification Services Un Framework para las soluciones en las cuales se envían a los suscriptores las notificaciones cuando ocurren los acontecimientos específicos. Las notificaciones se pueden generar eficientemente y enviar a dispositivos múltiples de diferentes tipos.
 Reporting Services Se utiliza para extraer datos desde SQL Server y generar reportes.
 Service Broker Un mecanismo confiable de Queuing, y Comunicación Transaccional  basada en mensajes entre los servicios de software.
 .NET common language runtime(CLR) Incluido dentro del SQL Server, permitiendo poner soluciones de base de datos en ejecución usando el código manejado escrito en  lenguage .NET  por ejemplo Microsoft Visual C#® .NET o Microsoft Visual Basic® .NET.
 Native HTTP Support Permite a programas de cliente conectarse con HTTP endpoints dentro de SQL Server sin requerir Internet Information Services (IIS).
 Replicación Un sistema de tecnologías para el copiado de datos y distribución de base de datos a partir de una base de datos o de un servidor a otro,  sincronizando la información entre las bases de datos para asegurar consistencia.
 Full-text search Permite la indexación rápida y flexible basada en keyword queries de texto sobre datos almacenados en una base de datos en SQL Server.

3.- El Motor de Base de Datos


Introducción

El motor de base de datos es el componente principal de SQL Server. Proporciona almacenaje de datos, recuperación, y servicios de modificación que pueden escalar desde soluciones personales hasta el nivel empresa.

Mejoras al Motor de Base de Datos con respecto a versiones anteriores

SQL Server 2005 incluye un número de mejoras significativas al motor de base de datos, según lo descrito en la tabla siguiente.

Característica / Mejora Descripción
Partitioning Las tablas y los índices se pueden repartir a través de grupos múltiples de archivo. Esto puede mejorar el funcionamiento y la capacidad de mantenimiento.
DDL triggers y event notifications DDL triggers pueden ser utilizados para ejecutar stored procedures mientras DDL statements (por ejemplo CREATE) se ejecutan. Event notifications pueden ser utilizados para disparar eventos para el servicio Service Broker cuando se modifica la base de datos.
New data types Un número de nuevos tipos de datos se han incluido en esta versión, por ejemplo xml y un máximo modificable para los tipos de datos nvarchar, varchar, y varbinary types.
Multiple Active Result Sets (MARS) MARS permite que los clientes tengan más de una petición por conexión.
Transact-SQL  Transact-SQL ahora incluye palabras claves estructuradas de dirección de excepción (por ejemplo, TRY y CATCH), soporte para expresiones comunes de tabla, y nuevas funciones de graduación y operadores relacionales. Los DDL statements se han mejorado.
Seguridad  Una nueva arquitectura de seguridad proporciona la protección mejorada de base de datos a través de reglas y permisos.
XML  El soporte para XML ha sido mejorado notablemente, siendo mas flexible.
The .NET Framework  El .NET Framework CLR es integrado en el motor de SQL Server, haciendo posible construir  soluciones de base de datos con código administrado.
Replicación  La funcionalidad de replicación ha sido mejorada para hacer mas sencilla la configuración y proveer soporte de replicación transaccional para peer-to-peer, replicación sobre HTTP, y considerables mejoras para replicación heterogénea.
Mantenimiento de base de datos  Las tareas de mantenimiento fueron mejoradas, con online restore y
online index operations.

4.- Analysis Services


Introducción

Analysis Services otorga un gran alcance a la plataforma Business Intelligence para SQL Server, permitiendo poner en ejecución OLAP Data Warehouses y usar técnicas de Data Mining para analizar datos de negocio y tomar decisiones apropiadas.


Mejoras en Analysis Services con respecto a versiones anteriores:

Algunas de las mejoras de Analysis Services en SQL Server 2005 se describen en la siguiente tabla:

 Característica / Mejora Descripción
 Interfaz de usuario  Las soluciones Analysis Services son más fáciles de crear con el nuevo Business Intelligence Development Studio.
 Analysis Services Engine  Usted puede ahora instalar múltiples instancias de Analysis Services en una sola computadora.
Cubos

Los cubos se pueden ahora basar en las tablas múltiples de hecho,  por ejemplo en Key Performance Indicators (KPI) y Business Intelligence las mejoras favorecen la toma de decisión, y el soporte para los procedimientos almacenados, ampliando la funcionalidad de los cubos.

5.- SQL Server Integration Services


Introducción

SQL Server Integration Services (antes Data Transformation Services) proporciona una solución comprensiva para la transferencia y transformación de datos entre fuentes de datos diversas.

SSIS mejoras con respecto a versiones anteriores:

SQL Server Integration Services (SSIS) se ha mejorado considerablemente en SQL Server 2005. Algunas de las mejoras principales se describen en
tabla siguiente:

 Característica /Mejora Descripción
 SSIS arquitectura La arquitectura de SSIS se ha reajustado para separar flujo de paquete de control de flujo de datos. Dos motores se han introducido para manejar estos aspectos de la transformación de los datos: el SSIS Run-time engine y el SSIS Data-Flow engine.
SSIS Designer El SSIS Designer es parte del Business Intelligence Development Studio, permitiendo convertir los proyectos SSIS mientras que está desconectado del servidor. Usted puede también convertir soluciones SSIS usando SQL Server Management Studio.
Transformaciones SSIS provee las siguientes transformaciones:
  • Partición de condiciones (Conditional Split )
  • Multicast
  • Union-All, Merge, and Merge
  • Sort
  • Fuzzy Grouping
  • Lookup y Fuzzy Lookup
  • Percentage Sampling and Row Sampling
  • Copy/Map, Data Conversion, and Derived Column
  • Aggregacion (Aggregation)
  • Data Mining Model Training, Data Mining Query,
  • Partition Processing, and Dimension Processing
  • Pivot and UnPivot

6.- Notification Services


Introducción 

Notification Services proporciona un Framework para el desarrollo de aplicaciones basadas en subscripciones a través de las cuales se notifica a los usuarios acerca de eventos.



Nota Importante:
Notification Services 2.0 está disponible en forma separada para SQL Server 2000. SQL Server 2005 Notification Services incluye un número  de mejoras sobre Notification Services 2.0.

Características de Notification Services

Las características principales de Notification Services en SQL Server 2005 se describen en la tabla siguiente:

Característica
Descripción
Subscription Management Objects  Una API para construir la administración de suscripción de aplicaciones a través de la cual los  usuarios pueden suscribirse a eventos.
Event APIs  Existen cuatro maneras para incorporar la información del evento en el sistema.

7.- Full-Text Search


Introducción

Búsqueda Full-Text permite indexar rápida y flexiblemente consultas keyword-based de datos.

Perfeccionamientos de Búsqueda Full-text

SQL Server 2005 incluye un numero significativo de perfeccionamientos para Búsqueda de full-text, descrito en la siguiente tabla:

Perfeccionamiento Descripción
Servidores enlazados Se pueden ejecutar consultas full-text contra servidores enlazados.
Columnas Múltiples Ya no esta limitado el uso de  una o todas las columnas en una tabla, ahora se puede especificar que columnas se quieren colocar en el argumento column_list.
Especificar LocaleID Se puede ejecutar consultas full-text usando un idioma diferente del idioma por defecto.
Backup y Restauración Los catálogos Full-text ahora pueden ser backapeados y restaurados con o sin los datos de la base de datos.
Attach y Detach Los catálogos Full-text están incluidos en las operaciones de attach y detach.
Datos XML Full-text indexes pueden ser creados en datos XML.
Performance La Performance de index populares fue mejorada.

8.- Relational Database Engine .NET CLR, Lenguaje común de los Tiempos de Ejecución


Introducción

El Lenguaje Común de Tiempos de Ejecución de .NET (CLR) provee un ambiente de administración para código escrito en lenguaje .NET como Visual C# o Visual Basic .NET.



Integración de .NET CLR en SQL Server

El motor de la base de datos SQL Server 2005 tiene alojado el .NET CLR,
haciendo posible desarrollar objetos de base de datos usando códigos escritos en un lenguaje de programación .NET.
La habilidad de desarrollar objetos de base de datos en código .NET
provee varias ventajas, incluyendo un modelo de administración de
seguridad (funcionalidad que no esta disponible o es difícil de implementar
en Transact-SQL) y es una mejor elección para realizar desarrollos.
Se pueden desarrollar las siguientes clases de objetos de base de datos
en código administrado:
  • Procesos Almacenados (Store Procedures)
  • Tipos de datos User-defined
  • Funciones User-defined
  • Triggers
  • Agregar funciones User-defined

Definir objetos de base de datos con código administrado

La unidad de despliegue de aplicaciones para .NET Framework es la Assembly. Una Assembly es un archivo DLL o EXE compilado que contiene clase de definiciones y código.
Se puede importar una assembly a una base de datos usando el documento CREATE ASSEMBLY, y use mejoras para el CREATE PROCEDURE, CREATE TRIGGER, CREATE FUNCTION, CREATE AGGREGATE, y el documento  CREATE TYPE para implementar un objeto de base de datos usando el código dentro del assembly.
Los desarrolladores pueden crear objetos de base de datos en el entorno de Visual Studio .NET y desplegarlos directamente en la base de datos.

9.- Reporting Services


Introducción

Reporting Services permite la creación de informes de datos de SQL Server.
Los informes pueden ser diseñados usando Visual Studio .NET–based Report Designer y pueden ser accedidos usando un IIS Web site.



Nota Importante:
Reporting Services está disponible para descargar en forma directa separada para SQL Server 2000.
Caracteristicas Reporting Services
Las características principales de Reporting Services se describen en la tabla siguiente.

Característica Descripción
Report authoring  Se puede utilizar Report Designer en  Business Intelligence Development Studio para crear un informe.
Report management  Se utiliza para administrar la seguridad del informe, generación y distribución del informe según la agenda, y de esta forma administrar la historia del informe.
Report execution  Los reportes son ejecutados en forma conjunta, aprovechando procesos de consultas paralelas para mejoras en la performance. Los reportes son compilados mientras .NET los ensambla.
Report access  Los usuarios pueden acceder a los reportes por un IIS Web Site especial, donde puede exportar los reportes en los formatos más comunes como HTML y PDF.  También los reportes pueden ser enviados a los usuarios vía e-mail a través de una suscripción.

10.- Replicación


Introducción

La replicación permite copiar y distribuir datos y objetos de las bases de datos, de una base de datos o servidor a otro, y luego opcionalmente sincronizar entre las bases de datos para asegurar consistencia.

Perfeccionamientos de Replicación

La siguiente tabla describe un numero de perfeccionamientos significativos para la replicación en SQL Server 2005.

Perfeccionamiento Descripción
Seguridad El modelo de replicación de seguridad ha sido actualizado para permitir más control sobre las cuentas, bajo las cuales se ejecuta la replicación.
Administración
La interface de replicación de usuario ha sido mejorada e incluye un nuevo Replication Monitor.
Disponibilidad Cambios en los esquemas pueden realizarse en  tablas publicadas.
Programabilidad Un nuevo modelo de administración de programación, Replication Management Objects (RMO), permite incluir lógicas de trabajo dentro de los procesos de sincronización.
Replicación Transaccional
La Replicación Transaccional ahora puede ser iniciada desde un backup
Replicación Heterogénea Los datos pueden ser publicados desde una base de datos Oracle a una base de datos SQL Server usando replicación transaccional o instantánea.
Replicación Peer-to-peer Los datos pueden ser replicados entre múltiples peer servers. Datos a todos los servidores pueden ser actualizados y todos los servidores reciben los cambios hechos a los otros servidores.
Replicación HTTP Para simplificar las replicaciones a través de un firewall o para usuarios moviles, ha sido introducida la replicación sobre HTTP o HTTPS. Esto transmite datos en formato XML entre un suscriptor y el IIS, y usa formato binario sobre TCP/IP entre IIS y el publicador.

11.- Native HTTP Support


Introducción

Cuando usamos Microsoft Windows Server™ 2003, SQL Server 2005 responde de manera innata a los requerimientos HTTP sin la ayuda de software Web Server como IIS. Esto hace más fácil implementar Web Services basados en una base de datos SQL Server.

Administrar HTTP endpoints

Para habilitar que los requerimientos HTTP sean manejados innatamente por SQL Server, se debe crear uno o mas HTTP endpoints usando los documentos CREATE ENDPOINT. El documento CREATE ENDPOINT es usado para:
  • Registrar una URL con http.sys,  así los requerimientos a esa URL son redireccionados al  SQL Server.
  • Especificar los puertos TCP en los cuales los requerimientos van a ser aceptados.
  • Especificar un mecanismo de autenticación para el endpoint. Se puede autenticar un cliente usando métodos de autenticación básicos, integrados o resumidos. La autenticación anónima ha sido borrada.
  • Setear el estado inicial (stopped o started) del endpoint. Por defecto, los endpoint son creados en un estado stopped. Para iniciar un endpoint luego de que este ha sido creado, se debe usar el documento ALTER ENDPOINT para cambiar al estado a started.
  • Especificar las limitaciones del protocolo de Internet (IP) para controlar el acceso al  endpoint.
  • Crear uno o más métodos Web que los usuarios puedan llamar a través del endpoint. Métodos Web pueden ser procesos almacenados o funciones user-defined.
  • Una vez que un endpoint HTTP fue creado, se puede dar, revocar o negar permisos de conexión para controlar el acceso al endpoint.

12.- Service Broker


Introducción

Service Broker habilita la creación de colas para comunicación de transacciones basadas en mensajes (message-based), para que sean confiables entre los servicios de software. Esto hace a SQL Server 2005 una mejor plataforma para soluciones basada en Servicios  (service-based).



Mejoras del Service Broker con respecto a versiones anteriores:

Las principales mejoras del Service Broker son descriptas en la siguiente tabla:

Mejora Descripción
Coordinación y orden de Mensajes  Service Broker asegura que los mensajes sean recibidos en el orden correcto y sean enviados solo una vez. Utiliza un único identificador para rastrear mensajes que pertenecen a la misma conversación, haciendo mas fácil implementar operaciones distribuidas, asincrónicas y de largo proceso.
Disponibilidad desincronizada  Service Broker usa colas para enviar mensajes asincrónicos; los mensajes pueden ser enviados a un servicio incluso cuando este no esta disponible.
Flexibilidad de Trabajo  El conjunto que desincroniza la comunicación  message-based hace posible para los sistemas que puedan distribuir sus procesos de trabajo de forma continua.
Mensajes de Bloqueo Relacionados  Cuando hay en cola muchos mensajes relacionados con la misma tarea, Service Broker asegura que los mensajes sean procesados como una unidad bloqueando todos los mensajes relacionados cuando el primero de la cola es leído.
Programa de activación automática de Servicio  Service Broker puede activar automáticamente una instancia de un servicio de programa cuando un mensaje llega a su cola.  Mientras aumenta el volumen de los mensajes recibidos, Service Broker puede activar más de una instancia de servicio de programa hasta llegar un número máximo configurado, y desactivarlos cuando el trabajo disminuye.
Integración de Base de Datos  Service Broker esta totalmente integrado con el motor de base de datos SQL Server, dando soporte para procesamiento de mensaje transaccional y simplificando así la administración.  Por ejemplo, las colas de Service Broker están implementadas como tablas de base de datos, y por lo tanto se les  puede hacer back up durante el proceso normal de back up de la base de datos.

13.- Mejoras


Mejoras del Sistema

Introducción

SQL Server 2005 introduce un numero de perfeccionamientos que impactan en la manera en que el sistema de SQL Server puede ser administrado. Las mejoras incluyen:
  • Soporte de memoria de Dynamic Address Windowing Extensions (AWE)
  • Memoria Hot-add
  • Afinidad Dinámica de CPU
Memoria Dinámica AWE
Soporte AWE permite aplicaciones 32-bit aplicaciones que puedan  direccionar memoria física mas allá de los límites de su memoria virtual configurada. La edición Windows Server 2003 puede soportar el máximo de memoria mostrados en la siguiente tabla:

Edición Windows Server 2003 Máximo de Memoria física
Standard  4 GB
Enterprise  32 GB
Datacenter  64 GB

Se puede configurar SQL Server 2005 para usar AWE, usando la opción de configuración  awe enabled. Después podes setear las opciones min server memory y max server memory para que el SQL Server use memoria AWE dinámicamente según lo requerido. El siguiente ejemplo, muestra como usar la memoria AWE:

**************************************************
sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'awe enabled', 1
RECONFIGURE
GO
*************************************************

Memoria Hot-add
Cuando se usa la memoria AWE, el SQL Server 2005 también puede sacar provecho del soporte de Windows Server 2003 para memoria hot-add. Si el hardware del Server soporta memoria hot-add, los administradores pueden agregar memoria física sin reiniciar el servicio SQL Server. El SQL Server usará memoria física adicional si es requerido.
Para aprovechar las memorias hot-add, el SQL Server debe estar ejecutándose en Windows Server 2003 Enterprise o la edición Datacenter con la opción configurada awe habilitada. 

Afinidad Dinámica de CPU
En SQL Server 2005, puedes reconfigurar la opción affinity mask sin tener que reiniciar el servicio. El SQL Server automáticamente ajusta el numero de CPUs schedulers usadas para juntar las conversaciones.

Perfeccionamiento del Almacenamiento de Datos
SQL Server 2005 introduce un numero de perfeccionamientos de almacenamiento de datos, incluyendo nuevos y perfeccionados tipos de datos y un tamaño de fila de una tabla mayor. Estas mejoras hacen el almacenamiento de datos más eficiente y flexible.


Nuevos y mejorados tipos de datos
El SQL Server 2005 incluye los nuevos y mejores almacenamientos de datos descriptos en la siguiente tabla:

Tipo de Dato  Descripción
xml   El tipo de datos xml es usado para almacenar datos XML directamente en la base de datos.  Los valores para los datos xml pueden ser opcionalmente asociados con un  XML schema.
varchar, nvarchar, and varbinary  El máximo de Keyword que pude ser usado para extender el largo de alguno de estos tipos de datos es hasta 2^31 bytes (aproximadamente 2 GB).

Mayor tamaño de Row

En las ediciones previas de SQL Server, el máximo de una fila de una tabla era 8 KB. Mientras que este es aun el máximo físico de una pagina, el SQL Server 2005puede mover el reflujo de datos varchar, nvarchar, varbinary, o sql_variant a otra pagina manteniendo 24-byte puntero en la pagina original, haciendo posible almacenar una row que contenga mas de 8 KB de datos. Para acomodar el reflujo de esta manera, cada columna en la fila de la tabla debe tener un máximo de 8 KB. Cuando la combinación de todas las columnas es mayor a 8 KB, SQL Server va automáticamente a mover la columna más larga a una página de reflujo.

Nota Importante:
El limite 8 KB aplica solo para las columnas varchar, nvarchar, o varbinary
definidos sin el max keyword. Cuando el max keyword es usado, los datos son implementados como un gran objeto usando un puntero a las páginas donde los datos están físicamente almacenados.

Mejoras de Tablas e Indices Particionados

Introducción
El SQL Server 2005 da soporte para Tablas e Indices particionados. Esto permite a una tabla ser esparcida a través de un numero de Grupos de Archivos físicos, mejorando la performance y haciendo mas fácil administrar
los procesos archivados range-based.



Esparcimiento de Tablas de Datos a través de Grupos de Archivos
Se puede particionar una tabla horizontalmente, así las filas son expandidas
a través de múltiples Grupos de Archivos.  Implementando esta partición se obtienen los siguientes resultados:
  • Mejorar la performance en sistemas de multiprocesadores. Las tablas particionadas puede aumentar la performance cuando estan consultando grandes tablas en un sistema con 8 o mas procesadores. El optimizador de consultas de SQL Server 2005 puede ejecutar consultas sobre múltiples particiones en paralelo, reduciendo el tiempo requerido del proceso.
  • Administrar más fácil tablas grandes. Una tabla particionada hace la administración de data subsets mas facil, las cuales se pueden agrupar lógicamente por un rango de datos. por ejemplo: Un requerimiento común de datos es trabajar solo con los datos del mes en curso. Se puede especificar la columna particionada, numero de particiones y el rango de valores de las columnas particionadas para cada partición. Un beneficio de particionar es que se pueden mover datos entre las tablas particionadas muy rápido con relación a tener que hacer un INSERT INTO SELECT FROM statement. Esto es porque los datos no están siendo movidos físicamente; solo la metadata concerniente al lugar de almacenamiento es lo que se mueve.

Snapshot Isolation Level

Introducción
El SQL Server 2005 incluye una nueva transacción de isolation level llamada snapshot. Snapshot isolation permite a los usuarios leer previamente valores de datos usando una vista consistente transaccionalmente de la base de datos. En este isolation level, los lectores no bloquean otros lectores y escritores que están accediendo al mismo dato. Similarmente, los escritores no bloquean a los lectores. La operación de escritura en el snapshot isolation level esta basada en un mecanismo de bloqueo con detector de conflicto automático. El mecanismo de detección de conflictos evita que un usuario
haga cambios basados en datos que otro usuario haya cambiado.



Como Trabaja Snapshot Isolation?
Snapshot isolation esta basado en row versioning, el cual da consistencia de lectura siguiendo una cadena de versiones que contienen las rows comprometidas de datos. Esta cadena está situada en una versión separada de almacenamiento alojada en tempdb. Varias versiones comprometidas de rows individuales de datos son creados durante la ejecución del UPDATE statement y recuperados por la operación SELECT a través de las consultas del snapshot. Las consultas Snapshot son consultas que se ejecutan bajo el snapshot isolation que lee los datos de snapshot.

Administración de snapshot isolation
Los Administradores pueden habilitar o no la snapshot isolation en una base de datos poniendo la opción ALLOW_SNAPSHOT_ISOLATION en ON u OFF en una statement CREATE DATABASE o ALTER DATABASE. El siguiente ejemplo muestra como habilitar la snapshot isolation:
ALTER DATABASE AdventureWorks
SET ALLOW_SNAPSHOT_ISOLATION = ON
 
Cuando la snapshot isolation esta habilitada, las aplicaciones que quieran usarla deben setear el isolation level transaccional a SNAPSHOT para conectarse, según se indica en el siguiente ejemplo:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
 
Statements ejecutados en transacciones luego usarán snapshot isolation.

SQLiMail

Introducción
SQLiMail es un nuevo sistema en SQL Server 2005.  Usa el Standard Simple
Mail Transfer Protocol (SMTP) para enviar un e-mail desde una instancia de SQL Server 2005. Usando SQLiMail, las aplicaciones de base de datos pueden enviar e-mails que contengan resultados de consultas y archivos. SQLiMail esta diseñado para ser un sistema confiable, escalable y seguro para SQL Server.

La información en la siguiente tabla describe como SQLiMail implementa estos atributos:

Característica  Descripción
No Extended MAPI requirement SQLiMail usa SMTP, no Extended MAPI.
Process isolation El componente que envía e-mails se ejecuta en un proceso separado para minimizar el impacto en el SQL Server.
Failover accounts Se puede especificar mas de un servidor SMTP por perfil, así si el servidor SMTP no esta disponible, los mails aun pueden ser enviados.
Envío Desincronizado SQLiMail usa Service Broker para enviar mensajes para evitar el bloqueo de un proceso almacenado.
Perfil de Seguridad SQL Server ayuda a mejorar la seguridad dando la posibilidad de especificar que usuarios en una base de datos pueden acceder al perfil de SQLiMail.
Configuración Integrada SQLiMail almacena la información de perfiles dentro del SQL Server. No es necesario administrar el perfil en una aplicación externa.

Instalar y configurar SQLiMail
Se puede usar el SQLiMail Configuración Wizard para instalar y configurar SQLiMail en una base de datos. Se inicia el asistente desde el SQLiMail en la Management folder del Object Explorer. El asistente reune la información,
incluyendo la base de datos a instalar y la información del usuario para crear un perfil SQLiMail.

Usar SQLiMail
Luego de configurar un perfil de mail, se puede llamar el proceso almacenado  sendimail_sp para enviar un mail desde el SQL Server. El siguiente ejemplo muestra como enviar SQLiMail usando un perfil llamado SQLServer.

DECLARE @QueryResult int
SET @QueryResult = (SELECT Count(*) FROM Person.Contact)
 
EXECUTE sendimail_sp
 @profile_name='SQLServer',
 @recipients='administrator@adventure-works.com',
 @subject='Test',
 @body=@QueryResult

Comments