Como descobrir em que base de dados se encontra um objecto do qual sabemos o nome? (SQL Server)

Há tempos criei um objecto a partir de um script T-SQL no SQL Server Management Console, numa janela de ‘New Query’. Na altura não reparei que essa janela não estava a apontar para a base de dados pretendida, e agora, semanas depois, não conseguia descobrir a que base de dados daquela instância teria ido parar.

A resolução foi simples, utilizando uma stored procedure interna não documenta do SQL Server, a sp_MSforeachdb, corri o seguinte comando…

 

Exec sp_MSforeachdb ‘Select * From ?..sysobjects where name = ”nome do meu objecto” ‘

 

…e depois foi só procurar no meio dos resultados! Encontrado um resultado, o output não exibia o nome da base de dados onde se encontrava… uma pequena alteração, et voila!

 

Exec sp_MSforeachdb ‘Select ”?”, * From ?..sysobjects where name = ”nome do meu objecto” ‘

 

Também se pode utilizar o operador LIKE caso se saiba apenas uma parte do nome a procurar, podendo filtrar adicionalmente por campos da sysobjects para por ex. restringir os resultados a um tipo de objectos.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>