miércoles, 30 de abril de 2008

Office Visio 2007 Professional SQL Server Add-in

Microsoft acaba de publicar un addin imprescindible para los DBA´s de SQL Server. Hoy me ha dado una alegria al ver lo facil que nos lo han puesto los chicos de Microsoft a los que nos dedicamos a esto de las bases de datos ;)

Con este addin, podemos generar facilmente y con la ayuda de un asistente, topologias complejas de SQL Server. Incluye incluso la posibilidad de plantear topologias con los nuevos SQL Server 2008 (todavia en CTP6) y Windows Server 2008 hyper-v (recientemente liberado)

En la zona de descarga (link) podemos tanto instalarnos el addin, como descargarnos un documento donde nos explica paso a paso como utilizarlo.

Tan solo os dejo dos imágenes para abrir boca

Untitled

y una muestra de informe resultado

Untitled

Visual Studio 2008 Express Editions ya disponibles

Microsoft ha hecho por fin oficial el lanzamiento de las versiones express de Visual Studio 2008, incluido en castellano. Nos dan la posibilidad de realizar instalacion web, offline, bajarnos el conjunto completo (incluido SQL Server 2005 express), versión de MSDN Express, documentación variada...

Sin duda una buena noticia para todos aquellos que quieren iniciarse con Visual Studio 2008 y no sabian por donde empezar ;)

https://www.microsoft.com/express/

Untitled

martes, 29 de abril de 2008

Convertir valores hexadecimales a uniqueidentifier

Es un problema poco frecuente, pero sí posible (mas adelante explicaré un caso real), que necesitemos convertir un valor hexadecimal a su representación uniqueidentifier.

Pongamos por caso, que disponemos del siguiente valor hexadecimal: 0xAF410B348743A84395FA5F37A3C32C8A. Si queremos obtener su representación uniqueidentifier, lo que tenemos que hacer es un simple cast de esta forma:

select convert(uniqueidentifier,0xAF410B348743A84395FA5F37A3C32C8A)

El valor uniqueidentifier que lo representa, dado al resolver la consulta, es el siguiente: 340B41AF-4387-43A8-95FA-5F37A3C32C8A

Como vemos, no hay problema alguno en realizar la conversión...salvo que el valor que estamos convirtiendo es un valor hexadecimal que puede que no tengamos almacenado en formato binario, sino como cadena de texto. Si el valor hexadecimal lo tenemos almacenado en una variable de tipo varchar, ya no es tan sencillo hacer la conversión:

Ejecutar la sentencia

select convert(uniqueidentifier,'0xAF410B348743A84395FA5F37A3C32C8A')

Nos lanzará este fantástico error:

Msg 8169, Level 16, State 2, Line 1
Conversion failed when converting from a character string to uniqueidentifier.

Podemos pensar (como es lógico), que lo suyo es convertir el valor primero a un tipo de datos binario (varbinary), y de este ya a su representación uniqueidentifier con el cast correpondiente.

Si lanzamos entonces la sentencia:

select convert(varbinary,'0xAF410B348743A84395FA5F37A3C32C8A')

Nos damos cuenta que el resultado no se parece en nada al valor que teníamos, y por tanto la conversión de este a uniqueidentifier no será válida:

select convert(uniqueidentifier,convert(varbinary,'0xAF410B348743A84395FA5F37A3C32C8A'))

Su resultado es 46417830-3134-4230-3334-383734334138, que no se parece ni de casualidad al valor correcto 340B41AF-4387-43A8-95FA-5F37A3C32C8A.

El proceso pues, requiere que transformemos "a manita" el valor hexadecimal almacenado en la cadena de texto, a su representación varbinary.

Para ello lo que debemos hacer es crearnos una función para tal fin, como puede ser esta:

 
ALTER FUNCTION [dbo].[HexStrToVarBin](@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
DECLARE @hex char(2), @i int, @count int, @b varbinary(8000)
SET @count = LEN(@hexstr)
SET @b = CAST('' as varbinary(1))
IF SUBSTRING(@hexstr, 1, 2) = '0x'
SET @i = 3
ELSE
SET @i = 1
WHILE (@i <= @count)
BEGIN
SET @hex = SUBSTRING(@hexstr, @i, 2)
SET @b = @b +
CAST(CASE WHEN SUBSTRING(@hex, 1, 1) LIKE '[0-9]'
THEN CAST(SUBSTRING(@hex, 1, 1) as int)
ELSE CAST(ASCII(UPPER(SUBSTRING(@hex, 1, 1)))-55 as int)
END * 16 +
CASE WHEN SUBSTRING(@hex, 2, 1) LIKE '[0-9]'
THEN CAST(SUBSTRING(@hex, 2, 1) as int)
ELSE CAST(ASCII(UPPER(SUBSTRING(@hex, 2, 1)))-55 as int)
END as binary(1))
SET @i = @i + 2
END
RETURN @b
END


Una vez teniendo la función, ya podremos realizar la conversión tranquilamente:

select convert(uniqueidentifier,dbo.HexStrToVarBin '0xAF410B348743A84395FA5F37A3C32C8A'))

Por otro lado, el proceso contrario, es decir, convertir de varbinary a valor hexadecimal como cadena de texto lo podemos hacer con la función no documentada fn_varbintohexstr() que espera como argumento de entrada un valor hexadecimal (varbinary) y devuelve su misma representación, pero como cadena de texto.


SELECT master.dbo.fn_varbintohexstr(0xAF410B348743A84395FA5F37A3C32C8A)

El caso real del que os hablaba al principio es el de que querais realizar un join de la información proveniente de sysprocesses con tablas de información de jobs como por ejemplo sysjobs. En ese caso no tendreis mas remedio que realizar estas conversiones dado que en sysprocesses los identificadores de los jobs se encuentran en valor hexadecimal, mientras que los identificadores de las tablas de sysjobs (y sucesivas) se encuentran como uniqueidentifier.

domingo, 27 de abril de 2008

Seminario "Maximice el potencial de su servidor SQL Server"

Los pasados dias 23 y 24 de Abril, realizamos dos seminarios en las oficinas de Microsoft Barcelona y Microsoft Ibérica en Madrid en la que hablábamos de las características que podemos aprovechar para exprimir a tope nuestro motor de base de datos preferido...SQL Server ;)

Nos centramos principalmente en características avanzadas como vistas indexadas, mirroring asíncrono + instantaneas de bases de datos, las ventajas de la indexación con columnas incluidas, particionado de datos y escalabilidad y rendimiento en inteligencia de negocio.

Las presentaciones las hemos subido a esta web para que los asistentes puedan disponer de ellos tal y como se anunció:

lunes, 14 de abril de 2008

Liberar el espacio ocupado por la instalacion del SP1 de Windows vista

Seguro que una vez has instalado el SP1 de Windows Vista decides ya no volverlo a desinstalar. Puesto que este va a ser el caso, te recomiendo que lances el ejecutable vsp1cln.exe.

vistacleanup

Una vez lanzado, se habran liberado mas de 1.5Gb de archivos de desinstalación del service pack, ahorrándote espacio valioso de tu disco duro.

Entre otras cosas, notarás que si usas un portatil se ha deshabilitado la opción de hibernar. Para poder volver a tener la opción activa has de hacer dos cosas:

  1. Abrir un cmd.exe como administrador y teclear "powercfg -h on"
  2. Desactivar la suspensión hibrida: Opciones de energia->cambiar configuracion delplan->cambiar config avanzada

Dicho esto, volverás a disponer de tu valioso botoncito de "hibernar".

miércoles, 9 de abril de 2008

Trabajar con SQL Server 2008 desde Visual Studio 2008

Por defecto, si intentamos crear una conexión desde Visual Studio 2008 hacia SQL Server 2008, nos da un error avisándonos de que "La versión del servidor no es compatible. Se admiten sólo servidores hasta Microsoft SQL Server 2005".

Microsoft ha publicado el siguiente parche CTP para que podamos probar las características nuevas de SQL Server 2008 desde Visual Studio 2008 con sus drivers nativos. En ese caso lo que tendreis que hacer es bajaros el siguiente parche: http://support.microsoft.com/kb/945855

NOTA: Para poder conectar desde Visual Studio 2005 tambien existe un parche CTP para probar: http://www.microsoft.com/downloads/details.aspx?FamilyID=e1109aef-1aa2-408d-aa0f-9df094f993bf&displaylang=en

martes, 8 de abril de 2008

Novedades en SQL Server 2008

Hola a todos, solo comentaros que vamos a dar un compañero de Solid Quality Learning y yo dos presentaciones en el grupo de usuarios de .net GUSENET.

La agenda es la siguiente:

16:00 - 16:30 Bienvenida y registro
16:30 - 17:45 LINQ to SQL avanzado (Ruben Garrigos)
17:45 - 18:15 Descanso
18:15 - 19:45 Novedades SQL Server 2008 (Enrique Catala)

La ubicación del mismo: Aula 1.01 de la Facultad de Informatica del Campus de Espinardo de la Universidad de Murcia.

Para registraros en el evento, lo podeis hacer a traves del siguiente enlace: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032375941&Culture=es-ES 

Para mas información, dirigiros a la web del grupo de usuarios: www.gusenet.com donde encontrareis toda la información al respecto.