wtorek, 26 kwietnia 2011
Automatyczny szablon skryptu SQL.
Miałem o tym napisać, ale skoro właśnie o tym czytam na jednym z moich ulubionych blogasków to daję tylko linka.
czwartek, 14 kwietnia 2011
Nieudokumentowane procedury.
Jakiś czas temu natknąłem się na dwie fajne procedurki :
SP_MSFOREACHDB
Są to dwie nieudokumentowane przez MS procedury SQL.
Za pomocą pierwszej z nich można wykonać kod SQL na wszystkich bazach danej instancji. Za pomocą drugiej na wszystkich tabelach danej bazy.
Postanowiłem zwrócić uwagę na te dwie procedurki, bo ułatwiają pracę. Zwłaszcza moją :).
Ostatnio miałem przypadek, że musiałem porównać wartości w jednej z tabelek we wszystkich bazach na danej instacji. Baz było dokładnie 358.
Prosty skrypcik i wynik był gotowy :
? – Zastępuje w tym przypadku nazwę bazy. W procedurze SP_MSFOREACHTABLE byłaby to nazwa tabeli.
Taki prosty kod, który zwraca nam już potrzebne informacje ze wszystkich baz, można rozbudować według własnych potrzeb. Można wyniki wrzucić do tabeli tymczasowej i już dalej na niej operować. Co istotne, błędy nie są istotne w tej procedurze ;). Tzn. jeżeli danej tabeli nie na bazie to zgłoszony zostanie błąd wykonania zapytania, ale cała procedura pojedzie dalej i zwróci nam wyniki dla baz, dla których tabela istnieje.
Szkoda tylko, że procedury nie są udokumentowane i w sumie nie wiadomo czy będą rozwijane. Może się okazać, że znikną w kolejnych wersjach MS SQL. Oby nie.
Jeden ze znajomych powiedział mi, że ważne jest na koniec posta zadać czytelnikom pytanie :). Pytam więc, czy też czujecie nieocenioną radość przy korzystaniu z powyższych procedur?
SP_MSFOREACHDB
SP_MSFOREACHTABLE
Są to dwie nieudokumentowane przez MS procedury SQL.
Za pomocą pierwszej z nich można wykonać kod SQL na wszystkich bazach danej instancji. Za pomocą drugiej na wszystkich tabelach danej bazy.
Postanowiłem zwrócić uwagę na te dwie procedurki, bo ułatwiają pracę. Zwłaszcza moją :).
Ostatnio miałem przypadek, że musiałem porównać wartości w jednej z tabelek we wszystkich bazach na danej instacji. Baz było dokładnie 358.
Prosty skrypcik i wynik był gotowy :
EXECUTE SP_MSFOREACHDB 'SELECT ''?'', * FROM ?.DBO.TABELA'
? – Zastępuje w tym przypadku nazwę bazy. W procedurze SP_MSFOREACHTABLE byłaby to nazwa tabeli.
Taki prosty kod, który zwraca nam już potrzebne informacje ze wszystkich baz, można rozbudować według własnych potrzeb. Można wyniki wrzucić do tabeli tymczasowej i już dalej na niej operować. Co istotne, błędy nie są istotne w tej procedurze ;). Tzn. jeżeli danej tabeli nie na bazie to zgłoszony zostanie błąd wykonania zapytania, ale cała procedura pojedzie dalej i zwróci nam wyniki dla baz, dla których tabela istnieje.
Szkoda tylko, że procedury nie są udokumentowane i w sumie nie wiadomo czy będą rozwijane. Może się okazać, że znikną w kolejnych wersjach MS SQL. Oby nie.
Jeden ze znajomych powiedział mi, że ważne jest na koniec posta zadać czytelnikom pytanie :). Pytam więc, czy też czujecie nieocenioną radość przy korzystaniu z powyższych procedur?
Subskrybuj:
Posty (Atom)