?id=aeb3b048-a267-48a0-a6e6-b96389b4f837
Instancias de SQL Server: ¿qué son y para qué sirven?
por José M. Alarcón
Cuando instalas SQL Server se te pide que otorgues un nombre a la instancia que estás instalando. Y cuando te conectas desde una aplicación o con el SQL Server Management Studio (SSMS) también lo haces a una instancia determinada de SQL Server. Es tan común que todos lo damos por hecho, pero realmente ¿cuántos saben qué es una instancia de SQL Server y cuál es su utilidad?.
Bien, en SQL Server es posible ejecutar varias copias del servidor de datos al mismo tiempo, con sus usuarios, bases de datos y demás elementos independientes unos de otros. A cada una de esas copias se le llama “instancia”. Lo que tenemos con las instancias son varios SQL Server ejecutándose en paralelo en la misma máquina. El límite es de 50 de instancias por cada máquina.
Existen dos tipos de instancias:
- Las instancias con nombre: se accede usando una barra inclinada hacia la izquierda seguida del nombre de la instancia, que es la forma de identificarlas. Por ejemplo: (local)\Instancia, .\Instancia, localhost\Instancia, 127.0.0.1\Instancia, NombreServidor\Instancia, 192.168.1.5\Instancia.
- La instancia predeterminada: a ésta accedemos simplemente usando el nombre del servidor o su dirección IP. Por ejemplo, con todas estas expresiones: (local), . (un punto), localhost, 127.0.0.1, NombreServidor, 192.168.1.5 (la IP del servidor). No es obligatorio tenerla, por lo que podemos tener solamente instancias con nombre en el servidor y obviar esta instancia por defecto (o sin nombre).
Así, por ejemplo, cuando instalamos SQL Server Express éste suele instalarse en una instancia con nombre llamada “SQLExpress” por eso accedemos usando .\SQLExpress y similares.
Pero… ¿para qué podríamos necesitar más de una instancia? ¿Acaso no nos llega con una copia de SQL Server ejecutándose y dando servicios a todos los clientes? Pues en algunos casos no.
Es cierto que una instancia de SQL Server puede gestionar un número ilimitado de bases de datos y usuarios, y mientras la máquina aguante es capaz de hacerse cargo de tantas conexiones como le lleguen en busca de información. Lo normal, de hecho, es tener solamente una instancia instalada en nuestros servidores. Es más, en una misma máquina el hecho de tener varias instancias a la vez bajaría de hecho un poco el desempeño, ya que cada copia en funcionamiento consume memoria extra. Así que por rendimiento no es.
Las principales razones serían:
- Seguridad: Si necesitamos dar acceso y control a diferentes personas para que puedan usar con cierta libertad SQL Server es interesante tener varias instancias ya que así cada una podrá tener sus propios usuarios y ejecutarse suplantando a un usuario diferente. Así el usuario administrador puede ser distinto en cada caso y acceder solamente a sus propias bases de datos. Si hay varias aplicaciones con diferentes requisitos de seguridad de acceso a SQL Server podemos tenerlas separadas para que no interfieran unas con otras. Lo cual nos lleva a…
- Hosting o segregación por departamentos: si hacemos hosting de bases de datos para pocos clientes o queremos compartir los recursos de una máquina entre varios departamentos de una empresa, tener una instancia para cada uno de ellos nos permite dedicar una determinada memoria y procesador a cada uno y compartir el sistema entre todos ellos de la manera más apropiada y aislándolos a unos de otros en lo que respecta a la seguridad. Cada instancia tiene sus ajustes de seguridad, de uso de hardware, de la intercalación (collation) por defecto, servidores enlazados, desencadenadores de login, etc… Lo cual nos lleva también a…
- Consolidación de servidores: si tenemos aplicaciones de datos que no son muy demandantes para los servidores ¿para qué vamos a tener varios servidores de datos y pagar varias licencias por lo tanto? Un plan mucho mejor que nos permite aprovechar mejor el hardware y aún así tener una abstracción idéntica en cuanto a servidores es usar una sola máquina con múltiples instancias separadas de SQL Server. Lo cual nos lleva a….
- Tener ediciones y SP diferentes: cada instancia se actualiza por separado y es una copia física también del servidor, por lo que puedes hacer que cada instancia sea diferente. Por ejemplo, una puede tener aplicados los últimos Service Pack y actualizaciones de SQL Server y otras instancias no o tener diferentes niveles de actualización. También puede que una sea una instancia sea la edición Express pero otra sea un edición Enterprise con capacidades diferentes. Esto es especialmente útil en entornos de desarrollo y pruebas. En lugar de instalar varias máquinas con ediciones o niveles de actualización diferentes los puedes montar todos juntos en la misma máquina de pruebas o desarrollo compartida por todo un equipo de programadores.
Es interesante saber que la licencia de SQL Server (complicada como ella sola, sobre todo ahora en su versión 2012) permite ejecutar tantas instancias como queramos en una máquina (hasta el máximo soportado) sin coste adicional.
Aquí tienes la documentación de MSDN sobre las instancias de SQL Server y su manejo (aunque curiosamente no aclara bien cuáles son las ventajas de tener más de una instancia, de ahí este post).
¡Espero que te sea útil!
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.