Lorenzo Benaglia


Storie di un SQLlaro mannaro...
Archivio Posts
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Calendario
ottobre 2024
lmmgvsd
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

SQL Dependency Viewer Beta 1 from Red Gate Software

Sappiamo tutti che lavorando con schemi complessi può risultare difficile (e noioso) stabilire le dipendenze tra i vari oggetti di un database.
SQL Server ci offre nativamente la stored procedure di sistema sp_depends per valutare le dipendendenze ma purtroppo si basa sull'interrogazione della tabella di sistema sysdepends che è risaputo non essere molto affidabile.
Ad esempio se creo una stored procedure basata su un oggetto che non è ancora stato definito nel database la sysdepends non verrà popolata:

USE tempdb 
GO 

/* Definisco la sp1 */ 
CREATE PROCEDURE dbo.sp1 
AS 
EXEC dbo.sp2 
GO 

/* Output: 

Cannot add rows to sysdepends for the current stored procedure because it 
depends on the missing object 'dbo.sp2'. The stored procedure will still be 
created. 

*/ 

/* Definisco la sp2 */ 
CREATE PROCEDURE dbo.sp2 
AS 
SELECT 1 AS [Output] 
GO 

/* Output: 

The command(s) completed successfully. 

*/ 

/* vediamo se la sp1 funziona... */ 
EXEC dbo.sp1 
GO 

/* Output: 

Output 
----------- 
1 

(1 row(s) affected) 

*/ 

/* OK, la sp1 funziona correttamente 
** ma vediamo un po' se ha dipendenze 
*/ 
EXEC sp_depends [dbo.sp1] 
GO 

/* Output: 

Object does not reference any object, and no objects reference it. 

*/ 

/* Male, noi sappiamo che sp1 ha come dipendenza sp2. 
** Eliminiamo le due procedure e definiamole nell'ordine corretto 
*/ 
DROP PROCEDURE dbo.sp1, dbo.sp2 
GO 

/* Definisco la sp2 */ 
CREATE PROCEDURE dbo.sp2 
AS 
SELECT 1 AS [Output] 
GO 

/* Definisco la sp1 */ 
CREATE PROCEDURE dbo.sp1 
AS 
EXEC dbo.sp2 
GO 

/* Riverifichiamo le dipendenze */ 
EXEC sp_depends [dbo.sp1] 
GO 

/* Output: 

In the current database, the specified object references the following: 
name 
-------- 
dbo.sp2 

*/ 

/* Pulizia */ 
DROP PROCEDURE dbo.sp1, dbo.sp2 
GO 

Giusto pochi minuti fa ho ricevuto una mail da Kathryn Lye di Red Gate Software che mi invita a partecipare al programma Beta del loro nuovo prodotto: SQL Dependency Viewer.

La prima cosa che mi ha colpito è stato l'impatto grafico: veramente d'effetto!
Inoltre un'altra sorpresa è relativa alla presenza di un engine assolutamente autonomo dalla sysdepends.

Dopo aver installato il software ho subito eseguito il test riportato poco fa (che bastardo che sono ).

Avviando il SQL Dependency Viewer apparirà la form in Figura 1 che permette di selezionare l'istanza, la login ed il database che si intenede analizzare:


Figura 1


Premendo il bottone OK il software procederà all'analisi delle dipendenze di tutti gli oggetti (Figura 2):


Figura 2

Al termine del calcolo (operazione estremamente veloce) apparirà un grafo che visualizza le dipendenze (Figura 3):


Figura 3

Come potete notare le dipendenze tra dbo.sp1 e dbo.sp2 risultano corrette anche se la sysdepends non ne tiene traccia!
Vi allego anche il grafo generato per il database Northwind (Figura 4):


Figura 4

Selezionando un oggetto verranno evidenziati in blu gli oggetti che lo referenziano ed in marrone gli oggetti referenziati rendendo estremamente agevole la lettura.

Una funzionalità che secondo me manca è la stampa del grafo con la possibilità di impostare lo stile di impaginazione.
Inoltre sarebbe comodo poter riarrangiare a proprio piacimento la posizione di un oggetto.

Vi ricordo che per eseguire il SQL Dependency Viewer sarà necessaria la presenza del .NET Framework 1.1 e dell'MDAC 2.8.

La Beta è pubblica quindi se lo desiderate potrete contribuire alla valutazione ed alla comunicazione di eventuali bugs a Red Gate inoltrando le vostre segnalazioni al seguente indirizzo di posta: sqlbeta@red-gate.com

Happy Beta

Categoria: SQL Server
giovedì, 22 set 2005 Ore. 17.07
Statistiche
  • Views Home Page: 964.233
  • Views Posts: 713.651
  • Views Gallerie: 13.509.735
  • n° Posts: 300
  • n° Commenti: 314
Mappa





















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003