25 ago 2011

Análisis de Performance en UDFs

El Cost UDF no es reflejado en las métricas de los costos por lo que es apropiado analizar:

EXECUTION TIME

Mediante SET STATISTICS TIME ON.


El problema principal del análisis erroneo de la performance en Stored Procedures que utilizan UDFs se basa en en que las UDFs no se incluyen en el costo estimado encontrado en el Execution Plan.

De esta manera se concluye que las estimaciones I/O son erroneas para estos casos.

24 ago 2011

Query Performance

Metricas a considerar:

Query Cost

Costo de CPU y I/O

Page Reads

Páginas leídas por SQL Server al ejecutar una query.

SET STATISTICS IO ON

Query Execution Time
Se ve afectada por el bloqueo (locks), así como la contención de recursos en el servidor

SET STATISTICS TIME ON

Execution Order (SIN UNION)

1 - FROM, JOIN, APPLY and ON
2 - WHERE
3 - GROUP BY (SUM, AVG, retc)
4 - HAVING
5 - SELECT
6 - ORDER BY
7 - TOP
8 - FOR XML

Execution Order (CON UNION)

1 - FROM, JOIN, APPLY and ON
2 - WHERE
3 - GROUP BY (SUM, AVG, retc)
4 - HAVING
5 - TOP
6 - SELECT and UNION
7 - ORDER BY
8 - FOR XML

Manejo de Campos IDENTITY

@@IDENTITY

Para retornar el útlimo identity insertado (en cualquier tabla de la BD)

SELECT @@IDENTITY;


SELECT SCOPE_IDENTITY();

Para retornar el útlimo identity insertado (en cualquier tabla de la BD, no incluye las ejecuciones de triggers)

SELECT SCOPE_IDENTITY();

IDENT_CURRENT

Retorna el último identity insertado en la tabla especificada

SELECT IDENT_CURRENT('Table');

19 ago 2011

Herramienta DTCTester

DTCTester comprueba una transacción distribuida contra un Microsoft SQL Server especificado. Esta herramienta ayuda a probar las transacciones distribuidas a través de firewalls o contra redes. DTCTester lleva a cabo las transacciones distribuidas mediante API de ODBC en una base de datos de SQL Server.

Descarga: http://download.microsoft.com/download/b/8/8/b8841bfc-8bd3-4fea-a5f5-06e1f162bd9a/dtctest.exe

29 jul 2011

XACT_STATE()

SELECT XACT_STATE()


IF XACT_STATE() = 1
ROLLBACK;

1 - TRANSACTION BEGIN
0 - NO TRANSACTION

TRY CATCH

-- Verify that the stored procedure does not exist.
IF OBJECT_ID ('usp_GetErrorInfo', 'P') IS NOT NULL
DROP PROCEDURE usp_GetErrorInfo;
GO

-- Create a procedure to retrieve error information.
CREATE PROCEDURE usp_GetErrorInfo
AS
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
GO

BEGIN TRY
-- Generate divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
-- Execute the error retrieval routine.
EXECUTE usp_GetErrorInfo;
END CATCH;
GO

SSIS - Package en blanco

Como solucionarlo: 1. Renombrar Package 2. Guardar package 3. Cerrar Solución.