Dec 15, 2010

¡No me puedo conectar remotamente a sql server 2008! ¿Qué sucede? ¿Tendrá algo que ver que he Instalado SQL SERVER con un nombre de Instancia que yo he definido y nó el por defecto?

www.felipedonoso.cl
felipe@felipedonoso.cl
RC6016
1NF3RNU5



Si les sucede que después de haber Instalado SQL Server 2008 o 2005, y desean conectarse remotamente desde algún cliente, obtienen el error:

"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) (Microsoft SQL Server, Error: 10060)"

¡¡¡¡No se desesperen por el error anterior!!!!









 Esto puede tener solución.


Lo que deberían hacer es habilitar las respectivas reglas del firewall en el sistema Operativo. Windows Server 2008 es algo más complicado en este sentido, y la administración del firewall cambió algo con respecto a windows server 2003. Por defecto lo que deberiamos hacer es habilitar las reglas INBOUND y OUTBOUND, para los puertos 1433 del servicio SQL SERVER y el 1434 para el servicio SQL BROWSER que se encarga de mostrar en nuestro mangement studio las otras instancias de sql server presentes en la red.

Pero puede suceder el caso de que aún así habilitando dichas reglas (excepciones mejor dicho) en el firewall la conexión aún no funciona y volvemos a tener el mismo error. ¿Qué puede suceder? La respuesta puede ser esta: Si han instalado la base de datos SQL Server con un nombre de Instancia propio definido por ustedes, se habilitará automáticamente el puerto dinámico de SQL SERVER, es decir la Instancia recibirá peticiones a través de cualquier puerto que probablemente no sea el 1433. Por default sólo las Instancias nombradas pueden usar puerto dinámico.

Por ejemplo si revisaran los archivos log de SQL SERVER se darían cuenta que en ellos aparece el mensaje en dónde se indica el puerto a través del cual se están recibiendo peticiones, algo así:

SQL server listening on ip_servidor:puerto

Una manera rápida de revisar los archivos de log y buscar el puerto de sql server actual puede ser utilizar el siguiente procedimiento:

Use master 
Go 
exec Xp_readerrorlog

Ejecutando dicho procedimiento se percatarán de que no están usando el puerto por defecto 1433. Recuerden como mencioné anteriormente que esto sucede sólo para las Instancias nombradas. Para solucionar esto lo que debemos hacer es reasignar el puerto por defecto a la Instancia de SQL Server, que es el 1433.

¿Cómo se logra hacer esto?


Pues bien es bastante sencillo. Primero procedemos a ingresar al SQL SERVER Configuration Manager (que esta dentro del grupo de programas de SQL SERVER), luego dentro de la pestaña SQL Server Network Configuration, seleccionamos Protocols for Instancia (En este caso mi instancia se llama MIRROR). Dentro de esa ventana debemos seleccionar las propiedades del elemento TCP/IP (click secundario). En la nueva ventana seleccionamos la pestaña IP Addresses, y buscamos las propiedades TCP Dynamic ports y TCP Port. En el caso de TCP Dynamic ports procedemos a dejarlo en blanco, y para TCP Port procedemos asignar el 1433 o el que estimemos conveniente, luego reinicien la Instancia. Dejo una imágen como referencia.



Para revisar nuestra configuración podemos ver el puerto que tenemos asignado para sql server luego de reiniciar esta instancia y revisando los logs con el procedimiento exec Xp_readerrorlog, o también revisando la siguiente clave de registro windows (regedit)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSQLServer\SuperSocketNetLib\Tcp\IPAll


(la x corresponde a su versión de SQL SERVER, por ejemplo si es la versión 2008 debería decir 10)


Eso sería todo lo que es necesario ejecutar.
Mis saludos.






Dec 9, 2010

Soporte Oracle para bases de datos bajo ambientes VMware

He encontrado una interesante noticia para aquellas empresas que les gusta Oracle y la virtualización por Vmware. Oracle soportará (distinto de certificar, en eso Oracle es explícito) que su base de datos corra bajo ambientes vmware. Esto quiere decir que Oracle aceptara recibir solicitudes de soporte para resolver issues y permitir aplicar los respectivos workaround en el ambiente de base de datos. Eso si se menciona que para los ambientes RAC sólo estará el soporte disponible desde las versiones 10.2.0.2 en adelante. Ahora bien en la nota metalink respectiva mencionan claramente que si la solución o aplicación de cierto parche, no soluciona el problema en el ambiente virtualizado pero que si lo hace en el mismo sistema operativo de manera nativa (sin virtualizar) el Cliente deberá tomar contacto con el Soporte de VMWARE. Interesante noticia.

Les adjunto la nota metalink respectiva.
Support Position for Oracle Products Running on VMWare Virtualized Environments [ID 249212.1]




Link directo: https://support.oracle.com/CSP/ui/flash.html#tab=Dashboard(page=Dashboard&id=ghhq8ziz()),(page=KBNavigator&id=ghhqcdga(userQuery=origin%20ora%2054&filterSource=KB&&searchControl=1146&searchMode=1145&viewingMode=1141)),(page=KBNavigator&id=ghhvdt5c(from=favorites&&viewingMode=1143))