poniedziałek, 10 stycznia 2011

SMO i sprawdzanie, czy baza danych istnieje [PL]

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?
Promuj

2 komentarze:

  1. Warto wspomnieć o jeszcze innych możliwościach SMO, jak choćby listowanie instancji SQL Server: SmoApplication.EnumAvailableSqlServers().

    OdpowiedzUsuń
  2. 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ń

Posty powiązane / Related posts