Come faccio a sapere quale innesco stored procedure o utilizza una tabella in SQL Server 2008 R2?

dba.stackexchange https://dba.stackexchange.com/questions/7956

Domanda

Questo è il caso che nel DB Sto controllando, v'è una tabella di archivio che conserva la storia dell'utente, e non v'è una procedura di attivazione o negozio che dopo qualche tempo Elimina righe di questa tabella, al fine di evitare il Oversize dello stesso, non ho progettare DB, sto solo prendendo il mantenimento di un'applicazione che utilizza questo DB, quindi non so il nome di queste stored procedure o trigger, quello che voglio fare è individuare questa stored procedure o un trigger, controllare il codice e modificarlo per lasciare questa "storia utente" è più sul tavolo.

Qualcuno mi ha detto di controllare la tabella "sysobjects", dove posso effettivamente vedere qualcosa con lo stesso nome della tabella, ma questa è l'unica informazione sono stato in grado di recuperare, qualche consiglio?

Grazie.

È stato utile?

Soluzione

Cerca tutto il codice utilizzando sys.sql_modules

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules sm
WHERE definition LIKE '%Mytable%'

In alternativa, utilizzare Red Gate SQL Cerca che è completamente gratuito

non di uso syscomments o INFORMATION_SCHEMA.RUBBISH

Altri suggerimenti

Prova ApexSQL Ricerca

ApexSQL Search è un libero di SQL Server Management Studio e Visual Studio add-in che, tra le altre caratteristiche, ha la funzione di visualizzare le dipendenze. La funzione di visualizzare le dipendenze ha la capacità di visualizzare le relazioni tutti gli oggetti di database SQL, comprese quelle tra oggetti di sistema criptato e, Server 2012 oggetti specifici SQL, e gli oggetti conservati in banche dati crittografati con Transparent Data Encryption (TDE)

La funzione di visualizzare le dipendenze consente inoltre di impostare e personalizzare il layout schema dipendenze visivo, tra cui le relazioni che saranno presentate, il layout e le dimensioni del diagramma generato, e il drill-down approfondita delle dipendenze

Disclaimer: lavoro che per ApexSQL come un tecnico di supporto

Per riferimento futuro a partire dal 2008 c'è anche un DMV che può essere utilizzato. sys.dm_sql_referencing_entities. Io generalmente preferisco a utilizzare SQL_Modules in quanto evita i falsi positivi tra le altre cose. Ne ho discusso qui ma in fondo se si dispone di un pezzo di codice come questo:

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id) 
FROM sys.sql_modules WHERE [definition] LIKE '%ABC%'

Si finirà con risultati per la tavola ABC, la tabella ABCLog la vista vw_ABC, la stored procedure sp_Update_ABC ecc anche al meglio della mia conoscenza del DMV gestirà SP crittografati nonché in chiaro mentre il metodo funziona solo sql_modules con SP in chiaro.

La versione del DMV la stessa query è questa:

SELECT * FROM sys.dm_sql_referencing_entities('dbo.ABC', 'OBJECT')

Inoltre è possibile utilizzare la sys.sql_expression_dependencies vista del catalogo . Utilizzare questa query:

SELECT 
referencing_object_name = obj.name, 
referencing_object_type_desc = obj.type_desc, 
referenced_object_name = referenced_entity_name
FROM sys.sql_expression_dependencies sd 
INNER JOIN sys.objects obj 
ON sd.referencing_id = obj.[object_id] 
WHERE referenced_entity_name = 'MyTable'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top