2013-09-30 2 views
0

У меня есть файл резервной копии базы данных, когда мне нужно запустить приложение. Я хочу показать предупреждение, если база данных частично восстановлена.Обнаружение текущей базы данных частично восстановлено

Как я могу обнаружить/распознать на C#, что текущая база данных будет восстановлена ​​с полным или частичным режимом.

+1

Что вы подразумеваете под "* partial restore *"? – RBarryYoung

+0

Простая модель восстановления базы данных без потоковых файлов. http://technet.microsoft.com/en-us/library/ms190388.aspx –

ответ

0

Я нашел способ решить проблему, спасибо за помощь!

var restoreType = dbContext.Database.SqlQuery<string>(@"Select restore_type FROM [msdb].[dbo].[restorehistory]").FirstOrDefault<string>(); 

Таким образом, я retrive базы данных типа восстановления: - Если restoreType = «D», чем базы данных полна восстановлена! - Иначе, если «F», чем я знаю, что база данных частично восстановлена!

Этот DbContext из EF, если вы используете другой тип соединения, вы можете просто использовать инструкцию T-Sql.

1

пользователь не сможет подключиться к БД, если БД не является AccessReady/ONLINE. , связанное с подключением к серверу базы данных, убедитесь, что вы подключились к одной из системных БД. Master/MSDB/TEMPDB и т. Д. После этого вам понадобится хранимая процедура, установленная в одной из этих системных БД, которую вы можете вызывать из приложения, повторяется, каждые 5 секунд дает вам возможность возобновить, если ваша БД является reday для доступа или нет , ваша процедура будет нуждаться в этом простой запрос

IF EXISTS (SELECT TOP 1 1 ОТ sys.databases ГДЕ имя = 'Ваше имя DB' И state_desc = 'Интернет' )

SELECT 'DB is ready to Access' 

ELSE SELECT 'DB не готов к доступу'

+0

Да, но у меня есть вариант использования, который пользователь может подключиться к базе данных. он просто частично восстановил базу данных, не удаляя старый, поэтому у него есть все данные, но мне нужно в этом случае показать предупреждение и спасибо –

+1

Ну, я не знаю всех возможностей, где вы можете поместить этот код, но у вас есть точка. всякий раз, когда вы ожидаете, что пользователь получит предупреждающее сообщение, вам нужно найти безопасное место в коде, где вы можете сделать такой вызов, чтобы определить, действительно ли DATABASE готова. Вы также можете инициировать этот вызов на основе ошибки, возникшей при первом сбое. –

Смежные вопросы