HOWTO: Configurar SQL Server Express, para que permita conexiones remotas por tcp con autenticación de servidor Si no tenemos instalado SQL Server Express, podemos descargarlo desde aquí: http://www.microsoft.com/es-es/download/details.aspx?id=1695 Por defecto, sólo nos permite conectarnos a SQL Server Express a través de memoria compartida y con autenticación de Windows; eso implica, que sólo podíamos acceder al servidor de la máquina local, con las credenciales de un usuario local. Este es nuestro típico diálogo de conexión: El equipo en el que he hecho esta captura, se llama profesor-pc y mi usuario es nocturno. 1. Para permitir conexiones por TCP a nuestro servidor SQL Server Express, comenzamos configurando el servidor para que tenga habilitado el Protocolo de conexión TCP/IP. Para ello, lanzamos la utilidad Administrador de Configuración de SQL Server Pág: 1
Habilitar TCP/IP dentro de la Configuración de rede de SQL Server Protocolos de SQLEXPRESS TCP/IP (Propiedades: Protocolo Habilitado) Conviene que nos fijemos en el Nº de puerto ya que será el puerto que tendremos que indicar en la cadena de conexión: Reiniciamos el servidor para que se apliquen las configuraciones. Pág: 2
2. Creamos un inicio de sesión con los permisos que necesitemos. Es recomendable tener varios usuarios, unos para realizar consultas y otros para realizar modificaciones de datos, altas y demás. No es conveniente tener un único usuario con todos los privilegios sobre nuestra base de datos y hacerlo todo utilizando ese usuario, ya que eso puede provocar problemas de seguridad. En este documento, vamos a ver cómo sería crear un inicio de sesión válido para consultar y modificar datos (altas, modificaciones, borrados y consultas), pero no para modificar la base de datos o crearla. Por simplicidad voy a utilizar la herramienta SQL Server Management Studio (podemos descargarla desde aquí: http://www.microsoft.com/es-es/download/details.aspx?id=7593). Arrancamos el Management Studio: Por supuesto, tendremos que conectarnos con memoria compartida y con autenticación de Windows: Pág: 3
En el servidor (localhost\sqlexpress), seleccionamos Seguridad Inicios de Sesión Nuevo inicio de sesión... Pág: 4
Se nos mostrará este diálogo: Indicamos los valores para la creación del inicio de sesión, que en el caso de mi ejemplo son: 1. En la sección General: Nombre de inicio de sesión: laura Selecciono Autenticación de SQL Server Contraseña: jueves De-selecciono Exigir directivas de contraseña (lo que estamos haciendo es deshabilitar que la contraseña caduque, que tenga que tener un número específico de caracteres y letras...) Base de datos predeterminada: NorthwindCS. Pág: 5
2. En la sección Asignación de usuarios: Usuarios asignados a este inicio de sesión. Asignar la base de datos NorthwindCS al usuario laura. El esquema predeterminado es la base de datos completa = dbo. Miembros de la función de la base de datos para: NorthwindCS: db_datareader realizar consultas. db_datawriter realizar altas, bajas y modificaciones. public (está por defecto y no se puede desactivar) Más información en http://msdn.microsoft.com/eses/library/ms189121(v=sql.100).aspx Pág: 6
Pág: 7
Ya tenemos creado nuestro nuevo inicio de sesión. 3. Desconectamos para conectarnos con nuestro nuevo inicio de sesión. Pág: 8
Volvemos a conectar pero con los nuevos datos de acceso: Y podremos acceder a la base de datos: Pág: 9
A aquellos elementos a los que no tengamos acceso, nos será notificado con este mensaje: 4. cómo es la cadena de conexión? Pág: 10
Se nos queda así: Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;User ID=laura;Initial Catalog=NorthwindCS;Data Source=localhost,4343;Initial File Name="";Server SPN="" Desde otro equipo: Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;User ID=laura;Initial Catalog=NorthwindCS;Data Source=ipServidor,4343;Initial File Name="";Server SPN="" En mi ejemplo: Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;User ID=laura;Initial Catalog=NorthwindCS;Data Source=192.168.107.10,4343;Initial File Name="";Server SPN="" (Ojo, para que nos funcione, tendremos que configurar la correspondiente regla del cortafuegos de Windows, para que permita accesos desde otros equipos al puerto 4343 de nuestra máquina servidor http://windows.microsoft.com/es-es/windows-vista/open-a-portin-windows-firewall) O, desde Visual Studio: Pág: 11
En detalle No es recomendable guardar la contraseña. Sobre todo porque se guardaría en claro: Pág: 12
Si indicamos que no la guarde, tendremos que darla con en tiempo de ejecución cada vez que necesitemos conectarnos a la base de datos. Por lo demás, pues, como siempre: Pág: 13
Pág: 14