Я хочу написать код C #, чтобы сделать резервную копию снимка , если доступно .Это поддерживается начиная с версии SQL Server 2005, но только в редакции Enterprise, но не в версии Express или Standard.
Мой вопрос: как узнать в C #, поддерживает ли подключенный сервер резервное копирование моментальных снимков (Enterprise Edition 2005 или более поздняя версия или что-то вроде hasFeature (...))?
Мой текущийРешение ставит попытку поймать следующий код:
sqlCommand.CommandText = String.Format("CREATE DATABASE {0} ON " +
(NAME = {1}, FILENAME = \"{2}\" ) AS SNAPSHOT OF {1}",
databaseBackupName,
databaseName,
filenameOfDatabseBackup);
sqlCommand.ExecuteNonQuery();
Если я поймаю SqlException
, я предполагаю, что на подключенном сервере нет поддержки.
Но, возможно, могут быть и другие причиныпотерпеть неудачу, хотя база данных поддерживает моментальные снимки (то есть что-то заблокировано, соединение разорвано, ...)
Идеальным решением было бы несколько sqlCommand.ExecuteNonQuery()
, чтобы выяснить, поддерживается ли эта функция.
Второй вариант - если бы мне пришлось добавить какую-нибудь дополнительную dll, которая может его найти (? Sqldmo?), Но это создаст дополнительную зависимость от проекта.
Третий вариант - это какая-то обработка исключений.