MS SQL Server

La forma recomendada de publicar bases de datos en Internet es utilizando un servidor de bases de datos, ya que es un sistema mucho más robusto y escalable que archivos individuales como las bases de datos de Access, archivos de texto plano, etc.

  • SQL Server es el servidor de bases de datos de Microsoft, seguro, robusto y con las más avanzadas prestaciones: transacciones, procedimientos almacenados, triggers…
  • Fácilmente gestionable, mediante acceso remoto a través de los programas:
    • MS SQL Server Management Studio Express (gratuito).
    • MS Access (solo para bases de datos hasta versión SQL Server 2000).
    • La consola de administración de SQL (en caso de tener SQL Server instalado en local).

SQL Server versus Access

Un servidor de bases de datos en un programa que almacena datos estructurados en forma de tablas relacionales, escucha un puerto TCP/IP a través del cual acepta conexiones de clientes autentificados, admite comandos en lenguaje SQL, y devuelve al cliente a través de la red los datos resultantes del procesamiento de los comandos SQL.

A lo largo de este apartado trataremos de mostrarle las diferencias entre un servidor de bases de datos y un sistema de bases de datos más sencillo como Access, FoxPro, dBase, etc.

Bajo entorno Windows es Microsoft SQL Server. Entre sus ventajas están:

  • Su perfecta integración con el sistema operativo Windows Server 2003, que es el instalado en servidores bajo Windows.
  • Disponer de una herramienta gratuita para el acceso remoto a las bases de datos: MS SQL Server Management Studio Express.
  • Además, desde el aplicativo Microsoft Access es posible crear y gestionar bases de datos de SQL Server (hasta versión 2000) tan fácilmente como se hace con las nativas de Access.

¿Qué son Access y el motor Jet de Microsoft?

Muchas veces se habla de bases de datos Access para referirse a los archivos *.mdb. Estrictamente hablando, esto no es correcto. Access no es quien crea y gestiona directamente los archivos mdb, sino el motor Jet de Microsoft.

  • El motor Jet está formado por una serie de archivos .dll de distribución gratuita que se instalan en el directorio de sistema de Windows.

    De hecho, es posible crear en Windows un archivo mdb, o incluso llenarlo de tablas y datos aun sin tener Access. Para ello basta con emplear ODBC o ADO en programas hechos en Visual Basic o incluso desde scripts en Perl.

  • Access, desde este punto de vista, no es más que un "visor" y gestor de archivos mdb.

    Desde luego es el más completo, pero un programador podría hacerse un "access a medida" utilizando Visual Basic u otro lenguaje de programación. Donde está realmente toda la lógica del proceso de estos archivos, interpretación de sentencias SQL, creación de tablas, etc., es en las DLL que forman el motor Jet.

Por tanto, a la hora de hacer comparaciones entre SQL Server y los archivos mdb, la comparación ha de hacerse entre SQL Server y el motor Jet de Microsoft.

¿Cuáles son las semejanzas y diferencias entre Jet y SQL Server?

Las semejanzas son:

  • Ambos son sistemas de almacenamiento de datos en forma de tablas relacionales.
  • Ambos admiten comandos en lenguaje SQL, aunque el de SQL Server está mucho más desarrollado, ya que realmente es el interfaz del servidor con el cliente.

En cuanto a las diferencias, éstas son más complejas:

SQL Server es un ejecutable autónomo y Jet son archivos DLL

Esta diferencia es muy importante para la publicación de bases de datos en Internet, y en el fondo es un punto clave para preferir SQL Server sobre Jet en estos casos.

  • Los archivos DLL contienen bibliotecas: funciones que han de ser llamadas desde otros ejecutables y se ejecutan en el espacio de memoria de ellos. Esto significa que la sobrecarga del manejo de los datos recae en último extremo en el ejecutable que llama a las DLL. Así, si utilizamos bases de datos mdb en la web, la sobrecarga en consumo de memoria y ciclos de CPU recae sobre el servidor web, que es quien invoca al motor Jet.
  • Sin embargo, SQL Server es una aplicación completa que realiza toda la gestión relacionada con los datos. El servidor web sólo tiene que enviarle una cadena de caracteres (la sentencia SQL) y esperar a que le devuelvan los datos. El servidor SQL se encarga de todo. Esta división de papeles es mucho más conveniente para la publicación web.

Imaginemos que utilizamos archivos mdb y hay un problema con los datos. Como Jet se está ejecutando en el espacio de memoria del servidor web, es posible que éste se vea afectado y dejen de verse todas las páginas web del dominio, lo cual resulta catastrófico. Esto nunca ocurriría con SQL Server.

SQL Server escucha un puerto TCP/IP y Jet no

  • SQL Server puede recibir conexiones (clientes que desean manipular datos) desde cualquier ordenador conectado a Internet.

    En este aspecto es igual que un servidor web o un servidor de correo. La diferencia es el número de puerto y, naturalmente, el protocolo con el que se comunicará con el cliente. Un navegador es un cliente para un servidor web, pero no conoce el protocolo para hablar con un servidor de bases de datos. Por ejemplo, Access 2000 o Access XP son clientes para SQL Server.

  • Por el contrario Jet no escucha ningún puerto.

    Aunque sea posible crear aplicaciones que trabajan en red con archivos .mdb (con Visual Basic o Access), el uso de la red se refiere únicamente a que el archivo mdb resida en un ordenador distinto a la aplicación. Sin embargo, todo el procesamiento se realiza en un único equipo. La red sólo actúa aquí únicamente como si fuese otro disco duro.

SQL Server admite la programación cliente-servidor y Jet no

La programación cliente-servidor se utiliza cuando queremos realizar aplicaciones que utilicen redes y que comuniquen entre sí a varios ordenadores. Básicamente consiste en que el programa se divide en dos partes:

  • La parte Cliente, que reside en el equipo donde está el usuario y se encarga de la interacción con éste.
  • La parte Servidor, que reside en un ordenador conectado a la red permanentemente y se encarga de manipular los datos.

Ambas partes de la aplicación se comunican entre sí utilizando algún protocolo de red TCP/IP. La justificación de este funcionamiento es la minimización del tráfico de red, sobre todo para evitar ralentizaciones y economizar el ancho de banda.

SQL Server admite procedimientos almacenados (stored procedures) realizados en lenguaje SQL.

  • Se trata de procedimientos que se guardan semicompilados en el servidor y que pueden ser invocados desde el cliente.
  • Los procedimientos almacenados podrían ser la "parte servidor" de una aplicación cliente-servidor.
  • La parte cliente podría ser una aplicación ASP o incluso una aplicación en Visual Basic o Access, que puede acceder directamente a SQL Server.

Potencia en el manejo de datos y conexiones simultáneas

  • El motor Jet es un sistema de bases de datos personal pensado para manejarse desde un único ordenador o a lo sumo una red local pequeña.

    Para Jet, el acceso simultáneo a los datos es una excepción más que algo habitual. Dispone de un sistema de bloqueo (los archivos ldb), pero no está pensado para que intenten acceder simultáneamente muchos clientes a los datos.

  • Por el contrario, SQL Server puede manejar perfectamente bases de datos de TeraBytes con millones de registros y funciona sin problemas con miles de conexiones simultáneas a los datos.

    Es un servidor y está pensado para gestionar tantos clientes simultáneos como admita la potencia del hardware del equipo en el que esté instalado.

¿Qué ventajas ofrece SQL Server para publicar datos en Internet?

Estabilidad para el servidor web

  • Si utilizamos bases de datos mdb y recibimos muchas visitas o la base de datos crece mucho, existen riesgos de inestabilidad para el servidor web que pueden provocar errores. Esto es debido a que el motor Jet sobrecarga el servidor web.
  • Por el contrario, SQL Server reside en un ordenador distinto al servidor web, y está preparado para admitir cualquier número de visitas y tamaño de bases de datos. Utilizando SQL Server liberamos al servidor web de las tareas relacionadas con los datos con lo que mejorará notablemente su rendimiento y estabilidad.

Acceso directo a los datos

  • Si utilizamos bases de datos mdb, cada vez que queramos actualizar la base de datos hay que enviarla completa por FTP. Esto, además de ser poco eficaz, puede dar problemas si la base está bloqueada (si en ese momento está recibiendo visitas). Lo que no podremos hacer nunca con los archivos mdb es modificar directamente desde nuestro ordenador el archivo que está en el servidor.
  • Con SQL Server es posible obtener un DSN en nuestro equipo local que apunte a una base de datos del servidor. Después podemos utilizar Access o aplicaciones propias en Visual Basic para acceder directamente a las tablas del servidor.

Por ejemplo, podríamos hacer una consulta de actualización que sincronizase las tablas locales con las del servidor, añadiendo datos donde proceda. La característica Cliente-Servidor comentada anteriormente se manifiesta aquí de esta forma: es posible acceder a la base de datos del servidor utilizando un cliente en un ordenador conectado a Internet.

¿Cómo se maneja una base de datos en SQL Server?

Dispone de varias alternativas para gestionar remotamente sus bases de datos SQL Server:

  • Microsoft incorpora una herramienta gratuita, MS SQL Server Management Studio Express, desde la que es posible administrar sus bases de datos.
  • Otra posibilidad es instalar usted mismo SQL Server en su ordenador o red local.
    • La misma aplicación que utiliza para gestionar su SQL Server local (MS Management Studio) le sirve para gestionar su base de datos en nuestro servidor.
    • Podrá crear tablas y procedimientos almacenados en la base de datos del servidor.
    • Para utilizar este programa con la base de datos de nuestro servidor, en primer lugar tiene que registrar el servidor. Para ello se le pedirá el nombre, el login y contraseña de la base de datos que vaya a gestionar (datos disponibles en su panel de control).
  • Si está utilizando bases de datos SQL Server 2000, puede gestionarlas desde Access. Desde la versión de Access 2000 se incorpora una característica llamada proyectos (archivos .adp).
    • Los proyectos de Access (.adp) son como las bases mdb, con la diferencia de que los datos residen en un servidor SQL Server (son, por tanto, aplicaciones cliente-servidor).
    • También es posible vincular tablas de SQL Server sobre aplicaciones normales de Access (.mdb). Esto tiene un resultado parecido, pues la aplicación estaría trabajando a través de la vinculación con tablas que se encuentran en el servidor.

¿Cómo copio los datos de un archivo .mdb al servidor SQL Server?

Desde la versión Access 2000, se incorpora en este programa un Asistente para convertir a SQL Server. Se encuentra en Herramientas / Utilidades de la base de datos.

El asistente le solicita los siguientes datos:

Usar base de datos existente o crear nueva base de datos

Escoja usar base de datos existente. No tiene permisos para crear bases de datos en nuestro servidor, sólo para crear objetos en la suya. El asistente le presenta la ventana de "Seleccionar origen de datos". Si ya creó un DSN para acceder a SQL Server utilícelo, de lo contrario puede crearlo ahora (pulsando en el botón Nuevo). Si tiene que crear el origen de datos (el DSN) utilice los siguientes datos:

  • El controlador: Microsoft SQL Server.
  • El nombre y descripción a elegir.
  • En el campo "Servidor SQL para conectarse" escriba la dirección IP de su servidor SQL (puede obtenerla en el apartado SQL Server de su panel de control).
  • Elija "autenticación de SQL Server" y escriba el login y contraseña de acceso de su base de datos.
  • Pulse en el botón "Configuración del cliente…" y seleccione TCP/IP.
  • Deje todas las demás opciones por defecto.

Es conveniente estar conectado a Internet cuando se crea el DSN para poder probar el origen de datos.

Tablas a exportar

  • Puede elegir las tablas de su base de datos actual (.mdb) que desea exportar a SQL Server.
  • También podrá elegir si desea copiar sólo la estructura de la tabla (los campos y tipos de datos) o también los registros.

Cambio a Cliente-Servidor

Puede escoger simplemente exportar los datos a SQL Server, vincular esas tablas a una aplicación existente, o crear un nuevo archivo de proyecto (aplicación Cliente-Servidor almacenada en un archivo .adp).

Los proyectos .adp de Access no permiten modificar tablas de SQL si no tienen definida una clave primaria sobre las mismas. Téngalo en cuenta a la hora de modificar datos.

¿Cómo accedo a SQL Server desde páginas ASP?

ADO permite acceder de igual forma a bases de datos independientemente de su origen. Si utiliza actualmente ADO para acceder a bases de datos mdb, tendrá que cambiar muy poco código para utilizar SQL Server. Realmente la única diferencia está en la cadena de conexión.

Si utiliza las bases de datos .mdb, su cadena de conexión será del estilo a:

"DSN=midsn"

Si utiliza SQL Server debe añadir el login y contraseña:

"DSN=midsn;UID=login;PWD=contraseña"

Por lo demás no cambia nada.

Fíjese que es necesario escribir un login y contraseña en un archivo de texto (ASP). Extreme las precauciones tanto sobre el servidor (por ejemplo quitando permisos de lectura sobre el directorio en el que estén los ASP) como sobre las personas que tienen acceso a su ordenador habitual de trabajo o a sus copias de seguridad locales.

Consulte el apartado sobre ADO para una mayor explicación y ejemplos de acceso a bases de datos en la web a través de este sistema.

Compartir

Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someoneShare on Google+