Diario de SQL Server

faq

Resolución problemas de DTC

Escrito por qwalgrande 30-07-2011 en General. Comentarios (2)

 

Como la mayoría de los problemas de DTC, éstos se atribuyen al servidor de bases de datos, pero no es así, nos cuestiones de este servicio, cuyas transacciones pueden o no pasar por SQL Server. Eso no le libra al DBA de tener que resolverlos. A la larga, la razón es simple, lo hacemos porque podemos (y sabemos).

 

En general, la resolución de los problemas del DTC es bastante compleja porque es muy oscura y no hay muchas herramientas que permitan aportar datos concretos sobre qué está pasando con estas transacciones que no empiezan o no terminan.

 

Lo que yo suelo hacer es ir en tres pasos, cuando estemos hablando de transacciones que pasen por un servidor de bases de datos:

  • 1.- Comprobar el acceso al servidor con un ping al nombre del servidor SQL Server. Ejemplo: ping MiServidor
  • 2.- Comprobar el acceso al puerto en el que escucha SQL Server (suele ser el puerto 1433), con un telnet. Ejemplo: telnet MiServidor 1433
  • 3.- Comprobar las transacciones con dtctester (http://support.microsoft.com/kb/293799/es).

 

Cuando el problema está en el punto 3, el error que se arroja casi siempre es el mismo, que no se puede finalizar la transacción. Ahí entramos en un amplio compendio de posibles problemas, en su mayoría de ocasiones, problemas de comunicación, algún firewall que impide la comunicación. Si hay una DMZ por medio, pues más difícil todavía. Lo único bueno es que en cada casa, los problemas suelen ser muy repetitivos. Resuelto uno o dos casos, los demás se le parecerán mucho.

 

 

Examinando un plan de ejecución

Escrito por qwalgrande 10-10-2010 en General. Comentarios (0)

En el foro, a Titojarocho le surgió un problema de running totals.

 

http://social.technet.microsoft.com/Forums/es-ES/sqlserveres/thread/d373d031-feae-4402-99d1-ff89f27391a4

 

El caso lo pudo resolver, pero quería saber si el plan de ejecución de lo obtenido era adecuado. Para poder examinarlo, me envió el plan de ejecución, ya que pegarlo en un post era muy complicado, por su tamaño. Dejo aquí la conversación que mantuvimos por mail para conocimiento del resto de usuarios del foro, incluyendo fotos de los planes de ejecución que él me envió en formato xml, salvado como .sqlplan.

 

Hola Alberto

 

Te paso el archivo del plan en xml.
 
Necesitas que te pase la imagen?
 
Saludos cordiales,

 

<Titojarocho>

 

http://qwalgrande.blogspot.es/img/Titojarocho1.gif 

 

Hola.

 

Lo que puedo decirte es que crees el índice que te sugiere el optimizador y vuelvas a pasarme el plan, indicándome también la diferencia de rendimiento que experimentes.

 

USE [DESARROLLO]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [Ventas].[P_VTASACUMXDIAVEND] ([Compania],[Fecha])
INCLUDE ([Sucursal],[Canal],[VentaDia])
GO

 

Alberto López Grande.

 


Hola Alberto, te envío el plan de ejecución el tiempo de respuesta es igual, nada más que en vez de scanear el índice agrupado ahora scanea por el índice creado.
 
Una pregunta cómo puedo determinar cuando un query necesita un índice en sql Server? Tienes algo de literatura para checar más afondo sobre este tema.
 
Te agradezco tu tiempo.
 
Saludos cordiales,

 

<Titojarocho>

 

http://qwalgrande.blogspot.es/img/Titojarocho2.gif  

 

 

Hola.

 

El actual plan es bastante mejor que el otro. Puede que rinda más o menos igual, pero el número de lecturas seguramente sea inferior.

 

Sobre cómo saber cuándo una consulta puede mejorarse con un índice, hay varias formas, pero quizá la más simple es con el plan de ejecución en modo gráfico. Si abres el primero de los ficheros que me mandaste con Management Studio, verás que aparece un texto en verde en la cabecera, es una sugerencia para la creación de índices. Si le pulsas botón derecho y le das a "Missing Index Details", te prepara la consulta de creación del índice y todo.

 

Pero quizá sea más útil crear los índices basándote en su uso. Puede que una ejecución no justifique la creación del índice, pero muchas sí. Escribí en mi blog hace poco sobre ello:

 

http://qwalgrande.blogspot.es/1284932940/crear-los-indices-que-se-necesitan...-(1/2)/

 

Ahora sólo nos queda informa de ello en el foro para que sea útil a mucha más gente. A ver si tengo un rato y lo preparo.

 

Alberto.

 

Opciones de vistas, índices, checkpoint

Escrito por qwalgrande 13-06-2010 en General. Comentarios (0)

En esta entrada hago referencia a un hilo del foro en el que un usuario, que se está preparando para certificarse como MCTS, necesitaba aclaración para varios conceptos y traté de explicárselos. En él se explican de una forma sencilla varios conceptos como:

  • with check option
  • with view_metadata
  • include y los índices
  • checkpoint
  • alter index with rebuild
  • fillfactor

http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/92fa97c8-e99e-4b4f-8ca9-4042a2bb2c6e

 

Crear una udl para comprobar una conexión

Escrito por qwalgrande 29-05-2010 en General. Comentarios (4)

En la resolución de problemas de conexión es frecuente la necesidad de verificar los parámetros de una cadena de conexión. Lo más fácil para ello es crear una udl, introducir los parámetros y hacer un test.

 

Para ello, sitúate en el escritorio (o donde quieras) y crea un fichero de texto plano. Dale cualquier nombre y ponle extensión ".udl".

 

http://qwalgrande.blogspot.es/img/udl_1.gif 

 

Luego hacer doble click sobre la udl y se abrirá un formulario en el que configurar la cadena de conexión. Rellena el proveedor (en la primera pestaña), el nombre del servidor, login, etc.

 

http://qwalgrande.blogspot.es/img/udl_2.gif 

 

Y por último, pulsas el botón "Test Connection" para comprobarla. Si lo deseas, luego puedes abrir el fichero resultante con notepad, por ejemplo, para ver qué cadena de conexión resulta. Ver esa cadena de conexión puede ser también de utilidad para resolver incidencias de este tipo.

 

http://qwalgrande.blogspot.es/img/udl_3.gif 

Reinicio pendiente que no se quita reiniciando

Escrito por qwalgrande 27-04-2010 en General. Comentarios (0)

Esta FAQ no es exclusiva de SQL Server. Pasa también con Exchange y seguramente con otros productos. Cuando se inicia la instalación, la aplicación te advierte que existe un reinicio pendiente de alguna otra circunstancia y no deja continuar con la instalación. Sin embargo, por más que reinicies, sigue saliendo el warning.

 

Desesperante... Puede ser incluso peor, una instalación desatendida pueden entrar en un bucle continuo de reinicios o con sólo ejecutar el setup reiniciarse la máquina.

 

La solución al problema está perfectamente documentada aquí:

http://technet.microsoft.com/es-es/library/cc164360(EXCHG.80).aspx

 

Sí, Exchange. El resumen, busca esta clave en el registro de la máquina:

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

 

Si existe, la eliminas y listo, ya puedes realizar la instalación. Ojo con hacerse trampas al solitario, si no has hecho ningún reinicio, no uses esto para ahorrártelo. Esta clave queda sin borrar por error, pero no se crea por capricho.