Cambios en el CT6 de SQL Server 2008

En el CTP6 de SQL Server 2008 se dieron cambios en el estatuto MERGE y con el tipo de dato HIERARCHYID.

Cambios en el MERGE

En este CTP se soportan las siguientes claúsulas:

WHEN [TARGET] NOT MATCHED THEN

WHEN SOURCE NOT MATCHED THEN

Sin embargo en el siguiente CTP refresh se cambiará la sintaxis para que no sea tan confusa, y quedará de la siguiente forma:

WHEN NOT MATCHED [BY TARGET] THEN

WHEN NOT MATCHED BY SOURCE THEN



Cambios en HIERARCHYID

En el CTP 6, el método IsDescndent es aplicado an ancestro y acepta un hijo como entrada, por ejemplo:

.IsDescendant()

Esta sintaxis es un poco confusa y después del CTP6 se cambiará para la sintaxis sea la siguiente:

.IsDescendant()

Un ejemplo es el siguiente, utilizando sintáxis de CTP6, devuelve un empleado y todos sus subordinados en todos los niveles:

SELECT C.empid, C.empnombre, C.lvl

FROM dbo.Empleados AS P

JOIN dbo.Empleados AS C

ON P.empid = 3

AND P.hid.IsDescendant(C.hid) = 1;



Después de CTP6 quedaría de la siguiente forma:

SELECT C.empid, C.empnombre, C.lvl

FROM dbo.Empleados AS P

JOIN dbo.Empleados AS C

ON P.empid = 3

AND C.hid.IsDescendantOf(P.hid) = 1;



También el método Reparent será renombrado a GetReparentedValue.

Comments

Popular posts from this blog

Cómo identificar consultas más pesadas en SQL Server

Permitiendo la administración de los jobs a usuarios que no son System Administrators en SQL Server Agent 2005 o superior

FileTable en SQL Server 2012