SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Risultato sondaggio "Sinonimi su SQL Server, conoscete questo tipo di oggetto?"

Eccoci qui dopo tanto tempo per controllare com'è andato il sondaggio dal titolo "Sinonimi su SQL Server, conoscete questo tipo di oggetto?"
Diciamo che mi aspettavo un risultato diverso.. ma è pur sempre un risultato su cui trarre conclusioni:


La percentuale più alta è "No, mai sentiti". Questo è il risultato che proprio non mi aspettavo. 
Forse non molte persone hanno a che fare con Linked Server, con query cross database, con necessità di refactor, però credo che ancora molti utilizzino il fully qualified name (per capirci SERVER.DATABASE.SCHEMA/OWNER.NOMEOGGETTO"). Per queste persone, consiglio vivamente la conversione in sinonimi. Certo, fatta eccezione per chi usa SQL 2000 che ancora non li aveva, ma per gli altri, anche per quelli che si trovano il fully qualified name (o partly qualified in caso di cross database) ereditato da un'aggiornamento da SQL Server 2000 mi sento di consigliare l'utilizzo di questi sconosciuti sinonimi.

Il concetto è molto semplice. Si tratta di veri e propri oggetti residenti sul database su cui vengono creati, che puntano ad oggetti residenti sui database/server da raggiungere.
Semplici esempi:

- LINKED SERVER
Ipotizziamo di avere due server, SERVER01 e SERVER02 (potrebbero anche essere IP nel peggiore dei casi).
Sul SERVER01 ho un database chiamato DB01 e sul SERVER02 ne ho uno chiamato DB02.
Devo puntare da DB01 ad una tabella chiamata Anagrafica.Utenti su SERVER02/DB02.
Come la raggiungo?
Metodo tradizionale: SERVER02.DB02.Anagrafica.Utenti
Metodo sinonimi: creo un sinonimo su DB01 chiamato ad esempio TabelleEsterne.AnagraficaUtenti e poi raggiungo l'oggetto usando quel nome.

- CROSS DATABASE
Ipotizziamo di avere due database sullo stesso server chiamati DB01 e DB02. Il DB01 necessita di eseguire una stored procedure su DB02 chiamata Anagrafica.proc_Utenti_ListAll.
Metodo tradizionale: EXEC DB02.Anagrafica.proc_Utenti_ListAll
Metodo sinonimi: creo un sinonimo su DB01 chiamato ad esempio ProcedureEsterne.proc_Utenti_ListAll e poi raggiungo l'oggetto usando quel nome.

- REFACTOR
Ipotizziamo di avere un database ereditato da sistemi legacy in cui i nomi tabelle sono tutti al massimo di 8 caratteri alfanumerici. Alcuni di voi avranno sentito parlare di ANTB0001 o qualcosa di simile 
Di solito, insieme a questi enormi catalog, viene fornita anche una descrizione relativa alla naming convention degli oggetti. Però può risultare scomodo sia rinominarle fisicamente (non sempre c'è il tempo) sia ricordarsi sempre cosa sono e cosa vogliono dire quei nomi.
Per semplificarci un po' la vita, potremmo pensare di fare un puntatore all'oggetto dal nome "poco parlante", magari dando un nome più intuitivo:

AN --> Anagrafica
TB --> Tabella
0001 --> la tabella principale dei dati anagrafici

Un sinonimo può essere Anagrafica.DatiUtente.

Insomma, a mio avviso sono veramente comodi. Pensate solamente al fatto di centralizzare la provenienza di un oggetto senza dover stare attenti ad ogni spostamento. Alla fine è un approccio molto semplice, è un segnaposto, che però aiuta tantissimo durante lo sviluppo e anche per la manutenzione dell'infrastruttura. Vi consiglio di dare un'occhiata qui.

Purtroppo, nemmeno i più avanzati tool intellisense supportano appieno i sinonimi, e, a tal proposito alcune persone hanno scritto qui e ovviamente ho dato man forte .

Via quindi al NUOVO SONDAGGIO in home!
"SQL Server Third Party Tools - Quale usi di più?". Ci sono tool free e a pagamento, in realtà ognuno di questi dovrebbe essere provato almeno una volta.
Votate e..
Stay Tuned! 


Categoria: Generale
lunedì, 16 mag 2011 Ore. 02.30
Statistiche
  • Views Home Page: 412.705
  • Views Posts: 763.536
  • Views Gallerie: 444.395
  • n° Posts: 480
  • n° Commenti: 270





















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