domingo, 27 de noviembre de 2011

Troubleshooting SQL Server [free eBook]

Os dejo un link de Red Gate dónde podréis descargar este libro:
Troubleshooting SQL Server A guide for the accidental DBA. Jonathan Kehayias and Ted Krueger. 

http://www.red-gate.com/our-company/about/book-store/accidental-dba 

 Si os gusta, también podéis comprar la edición impresa en Amazon.

jueves, 3 de noviembre de 2011

Ahora también en tu móvil

Ya podéis leer los post desde vuestros móviles. Tengo futuros post en mente que espero compartir con vosotros. Nos leemos en breve. Salu2.

lunes, 8 de febrero de 2010

Desactivar un Trigger temporalmente

Para desactivar un trigger temporalmente y luego volver a activarlo, tenemos que hacer lo siguiente:

ALTER TABLE miTabla DISABLE TRIGGER ALL
--aquí ejecutaremos lo que necesitemos y luego lo volvemos a activar
ALTER TABLE miTabla ENABLE TRIGGER ALL

Realmente desactiva todos los triggers de esa tabla, si queremos uno en concreto en lugar de ALL especificamos el nombre del trigger.

sábado, 21 de noviembre de 2009

Tips & Tricks Error SQLFile.sql

Al intentar ejecutar una consulta con el management studio nos da un error:


Para solucionarlo, podemos crearnos en ese mismo directorio un fichero que se llame SQLFile.sql sin contenido, y asunto solucionado. Otra manera es copiar el mismo fichero de otro equipo en el que tengamos SQL Server 2005 o 2008 instalado.

Recetario T-SQL

A groso modo vamos a ver el flujo que sigue una query:

Análisis -- Algebrizer (no se como traducirlo xD) -- Optimización -- Ejecución

Ahora veamos una pregunta que me llegaba vía email:
Supongamos que tenemos una tabla Prueba con dos columnas (IDPrueba y Descripcion), ejecutamos un script que elimina la columna Descripcion de la tabla y más adelante en el script encontramos lo siguiente:
IF 1=0
BEGIN
UPDATE Prueba SET Descripcion='Hola'
WHERE IDPrueba = 1
END
GO

Como 1 no es igual a cero no debe ejecutarse el contenido, pero al ejecutar el script vemos que nos devuelve un error advirtiéndonos de que el campo Descripcion es erróneo.
Mens. 207, Nivel 16, Estado 1, Línea 3
El nombre de columna 'Descripcion' no es válido.

Una solución para que no nos de este error es usar SQL dinámico y nuestro código quedaría tal que así:
IF 1=0
BEGIN
EXECUTE('UPDATE Prueba SET Descripcion=''Hola''
WHERE IDPrueba = 1')
END
GO

miércoles, 11 de noviembre de 2009

Restore Database con SMO C#

Bueno para ir completando la serie de posts con SMO hoy toca el esperado restore. Antes de nada pediros disculpas por no haberlo publicado antes, pero ando liado por casa y no he tenido tiempo para actualizar el blog.

Aquí tenéis el código:



A tener en cuenta: en la cadena de conexión sólo especificad el servidor (Data Source) y el tipo de conexión (si es trusted o con credenciales de sql).

miércoles, 30 de septiembre de 2009

Compatibilidad hacia atrás en Office

Mediante la aplicación TlbImp.exe (http://msdn.microsoft.com/es-es/library/tt0cf3sx(VS.80).aspx) podremos convertir un componente COM de Office (por ser el tema del post) en una assembly .NET Interop lista para usar y distribuir con nuestra aplicación. La manera de hacerlo es simple y directa:
1.- Lo primero es localizar dónde está situada la aplicación TlbImp.exe: se encuentra en C:\Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\Bin\
(o bien en la unidad dónde tengáis instalado Visual Studio)
2.- Copiamos el fichero (.olb ver último link del post para saber de lo que hablo) que queremos convertir en nuestra dll .NET, en un directorio por ejemplo C:\Interop
3.- Abrimos la línea de comando y vamos hasta la ruta dónde tenemos la aplicación TlbImp y escribimos
C:\Archivos de programa\Microsoft Visual Studio 8\SDK\v2.0\Bin\TlbImp.exe C:\Interop\MSWord9.olb /out=C:\Interop\FRVSoft.Office.Word.dll
Y ya tendremos creada nuestra dll.

Ahora sólo tenemos que añadirla en las referencias de nuestro proyecto. Con esto conseguimos tener una compatibilidad desde Word 2000 hasta Word 2007. Claro está que si queremos usar alguna característica nueva de Office 2007 no dispondremos de ella en nuestra dll ya que partimos de la versión 2000.

Este enlace os puede ser de utilidad algún día en el futuro, cuando tengáis que pelear con Office desde vuestras aplicaciones, en distintos clientes con diferentes versiones de Office:
http://support.microsoft.com/kb/239930/es