Czasami istnieje potrzeba sprawdzenia czy baza danych jest dostępna na serwerze Ms SQL Server. W tym celu można wykorzystać widok sys.databases, na którym można wykonać select'a i sprawdzić czy dana baza danych występuje na liście (np. „select * from sys.databases”). Zobaczmy jednak, jak to zrobić przy pomocy SMO.
O SMO, czyli
SqlServer Management Objects pisałem już wcześniej we wpisie dot. zagadnienia jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer
Management Objects i SqlBulkCopy), więc Ci co jeszcze nie wiedzą, co to jest SMO, niech przeczytają tamten artykuł.
Być może sposób,
jaki za chwile pokażę, każdy uzna za banalny, ale przyznam, że
gdy po raz pierwszy potrzebowałem sprawdzić (za pomocą SMO), czy
baza danych istnieje, zacząłem szukać odmiennego rozwiązania,
więc niech inni też nie błądzą. Otóż wystarczy po wytworzeniu
obiektu serwera (obiekt klasy Server), sprawdzić
tablicę kryjącą się pod jego właściwością Databases,
czy jest w niej baza interesująca nas baza danych.
Poniższy kod
ilustruje opisaną czynność:
using ( SqlConnection Connection = new SqlConnection( ConnectionString ) ) { //SMO Server object setup with SQLConnection. Server MySQLServer = new Server( new ServerConnection( Connection ) ); if ( MySQLServer.Databases.Contains( DataBaseName ) ) { //DataBase with name "DataBaseName" exists, let's do sth } }
Proste prawda?
Warto wspomnieć o jeszcze innych możliwościach SMO, jak choćby listowanie instancji SQL Server: SmoApplication.EnumAvailableSqlServers().
OdpowiedzUsuńBardzo fajna i użyteczna formą sprawdzenia interesujących nas baz danych, do których dostępu szukamy. Sam kilka razy miałem potrzebę takiej weryfikacji i jak widać, nie jest to trudne :)
OdpowiedzUsuń