SQLServerITA

SQL Server e non solo

  • marzo: 2012
    L M M G V S D
    « Feb   Apr »
     1234
    567891011
    12131415161718
    19202122232425
    262728293031  
  • Blog Stats

    • 16,179 hits
  • Inserisci il tuo indirizzo e-mail per iscriverti a questo blog e ricevere notifiche di nuovi messaggi per e-mail.

    Segui assieme ad altri 6 follower

SQL Server 2008 R2: identificare le Foreign Key disabilitate

Posted by belthazor78 su 26 marzo 2012


Può essere importante poter effettuare un controllo e identificare delle Foreign Key che risultano essere disabilitate in un database; i motivi sono tanti come ad esempio una disabilitazione degli indici (magari per velocizzare una query di popolamento) oppure operazioni mirate per disabilitare momentaneamente un controllo.

E’ fondamentale, però, ripristinare la situazione ed ecco un comodo script che potrà esservi di aiuto nell’identificare tutto il necessario di una Foregin key.

La query è la seguente:

SELECT o.object_id AS fk_id,
o.name      AS fk_name,
rt.name     AS fk_table,
ru.name     AS schemaname,
CASE o.is_disabled
WHEN 0 THEN ‘NO’
WHEN 1 THEN ‘YES’
END         AS is_disabled
FROM   sys.foreign_keys o
INNER JOIN sysreferences r
ON o.object_id = r.constid
INNER JOIN sys.objects rt
ON rt.object_id = r.rkeyid
INNER JOIN sys.schemas ru
ON rt.schema_id = ru.schema_id
INNER JOIN sys.objects t
ON t.object_id = o.parent_object_id
INNER JOIN sys.schemas u
ON t.schema_id = u.schema_id
LEFT OUTER JOIN sys.extended_properties p
ON p.major_id = o.object_id
WHERE
u.name = N’dbo’
AND o.TYPE = ‘F’
ORDER  BY rt.name

Come vedete è molto semplice, fatta solo per lo schema DBO (può essere omesso come dettaglio nella WHERE condition) ed elenca tutti i dati del database da dove state eseguendo la query con un risultato molto simile al seguente:

Facile intuire il significato di ogni colonna😀

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: