[Sql Server 2005] Cambiare dinamicamente all'interno di stored e funzi...

lunedì 19 ottobre 2009 - 15.38

Malkavian Profilo | Newbie

Io lavoro quasi sempre con funzioni e stored che a loro interno lavorano anche su altri database.

Quindi all'interno le procedure lavorano con un database che specifico con NomeDatabseEsterno.dbo.NomeTabelle (funzione o stored che sia)
Quello che voglio sapere è se c'e un modo piu furbo quando devo cambiare il nome del databse esterno su cui lavoro di quello di andare a cercarmi il nome del db all'interno delle
stored e cambiarlo a mano....

Grazie.

lbenaglia Profilo | Guru

>Quello che voglio sapere è se c'e un modo piu furbo quando devo
>cambiare il nome del databse esterno su cui lavoro di quello
>di andare a cercarmi il nome del db all'interno delle
>stored e cambiarlo a mano....
Se ho capito bene la domanda può essere riscritta in questo modo: "Come faccio a modificare nelle mie sp e udf il nome del db specificato nelle query?"
Un'idea potrebbe essere quella di cercare il nome del db remoto in tutti i moduli del tuo db locale interrogando la catalog view sys.sql_modules:

SELECT OBJECT_NAME(object_id) AS name, * FROM sys.sql_modules WHERE definition LIKE '%nomedb.%';

La prima colonna restituisce il nome del modulo che contiene il db che vuoi modificare mentre le altre ti forniranno tutti i dettagli.
Volendo puoi modificare ulteriormente la query per generare direttamente i comandi di ALTER ma questo esercizio lo lascio a te

>Grazie.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Malkavian Profilo | Newbie

Ottimo,
grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5