2011-01-27 4 views
5

Chcę napisać kod C#, aby uzyskać snapshot-backup, jeśli jest dostępny. Jest to obsługiwane od wersji SQL Server 2005, ale tylko w wersji Enterprise, ale nie w wersji Express lub Standard.Dowiedz się w języku C#, jeśli moja instancja SQL Server obsługuje migawki?

Moje pytanie: jak znaleźć się w C# jeśli podłączony serwer obsługuje kopii zapasowej obrazu stanu (czy Enterprise Edition 2005 lub nowszy lub jakiś „hasFeature (...))

Moje obecne rozwiązanie stawia spróbować? złapać około poniższego kodu.

sqlCommand.CommandText = String.Format("CREATE DATABASE {0} ON " + 
    (NAME = {1}, FILENAME = \"{2}\") AS SNAPSHOT OF {1}", 
     databaseBackupName, 
     databaseName, 
     filenameOfDatabseBackup); 
sqlCommand.ExecuteNonQuery(); 

Gdybym złapać SqlException Zakładam, nie ma wsparcia na podłączonym serwerze.

Ale może nie może być inne powody, by upaść, choć baza danych obsługuje migawek (czyli coś jest zamknięte połączenie jest zerwane, ...)

Idealnym rozwiązaniem byłoby wybranie numeru sqlCommand.ExecuteNonQuery(), aby sprawdzić, czy funkcja jest obsługiwana.

Drugą najlepszą rzeczą jest to, że musiałbym dołączyć trochę dodatkowej biblioteki DLL, która może ją znaleźć (? Sqldmo?), Ale spowodowałoby to dodatkową zależność od projektu.

Trzecim najlepszym rozwiązaniem byłaby obsługa wyjątków.

+0

Łącze w pytaniu zawiera wiele potencjalnych przyczyn, dla których migawka może nie działać, nawet jeśli silnik ją obsługuje. Myślę, że podejście "ssać i widzieć", z którego już korzystasz, jest prawdopodobnie najbardziej niezawodnym sposobem określenia, czy kopie zapasowe obrazów są faktycznie * możliwe * –

Odpowiedz

5

Można oczywiście zrobić coś takiego:

SELECT 
    SERVERPROPERTY('productversion') as 'Product Version', 
    SERVERPROPERTY('engineedition') as 'Engine Edition' 

Product Version daje ciąg tak: 10.50.1600.1. SQL Server 2005 to wersja 9, więc wszystko, co zaczyna się od 9., 09. lub 10., 11. będzie w porządku.

Urządzenie Engine Edition zapewnia INT (1 = osobiste/MSDE/Express, 2 = standardowe, 3 = przedsiębiorstwo/programista).

Powiązane problemy