Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывести ошибку при подключении  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Доброго времени суток!

СУБД: Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Охота следующее:
Вести мониторинг доступности БД. Т.е. раз в какое то время подключаться к БД и если по какой то причине БД недоступна то выводить имя ошибки.

Моделируем сбой - береводим БД в offline

Имеем БД:
[111test]

пишем
BEGIN TRY

	use [111test]
	--select 1/0
END TRY

BEGIN CATCH

	select ERROR_MESSAGE()
END CATCH


но получаем ошибку
Msg 942, Level 14, State 4, Line 3
Database '111test' cannot be opened because it is offline.


как можно отлавливать ошибки при невозможности подключиться к БД?
3 сен 12, 11:35    [13104085]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
andrew shalaev
как можно отлавливать ошибки при невозможности подключиться к БД?


На клиенте, проверить.

А ваш код - за это по рукам надо давать, надо же в голову такое прйти, валидировать через исключение.

Проверить состояние БД:

SELECT * FROM sys.databases
3 сен 12, 11:51    [13104207]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Ken@t,
то что Вы предложили вернет состояние БД
SELECT NAME ,STATE_DESC AS [Database Status]
FROM SYS.DATABASES
where name = '111test'


но если допустим, что закончилось свободное место на диске где лежит лог транзакций, то БД будет в онлайне, но подключиться к ней не смогут.
3 сен 12, 12:00    [13104277]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
andrew shalaev
но если допустим, что закончилось свободное место на диске где лежит лог транзакций, то БД будет в онлайне, но подключиться к ней не смогут.

Щаз, ага, может не надо херню нести ? Подключится смогут, не смогут обновить данные если потребуется увеличить размер файла журнала. Для того что бы отслеить это , используйте алерты настроив их проверку дисковых массивов.
3 сен 12, 12:40    [13104677]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Ken@t,

Алерты на проверку дисковых массивов настроены. Хорошо, БД может быть переведена в однопользовательское подключение, и пользователи не подсоединятся.
3 сен 12, 12:59    [13104842]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
skorpk
Member

Откуда: Волгоград
Сообщений: 273
SELECT NAME ,STATE_DESC AS [Database Status], user_access_desc
FROM SYS.DATABASES
where name = '111test'

Тоже решаемо
3 сен 12, 13:14    [13104998]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
skorpk
Member

Откуда: Волгоград
Сообщений: 273
Большую часть можно взять из служебных таблиц и DMV
3 сен 12, 13:16    [13105012]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
andrew shalaev
Ken@t,

Алерты на проверку дисковых массивов настроены. Хорошо, БД может быть переведена в однопользовательское подключение, и пользователи не подсоединятся.

На клиенте будет исключение. Я вот ни как не могу понять , зачем вам эти городушки ?
3 сен 12, 13:16    [13105022]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
Ken@t
andrew shalaev
Ken@t,

Алерты на проверку дисковых массивов настроены. Хорошо, БД может быть переведена в однопользовательское подключение, и пользователи не подсоединятся.

На клиенте будет исключение. Я вот ни как не могу понять , зачем вам эти городушки ?


Что бы во время моего отсутствия за рабочим местом, я получал смс уведомления с интересной для меня информацией.
3 сен 12, 14:42    [13106013]     Ответить | Цитировать Сообщить модератору
 Re: Вывести ошибку при подключении  [new]
andrew shalaev
Member

Откуда: Moscow
Сообщений: 610
skorpk
SELECT NAME ,STATE_DESC AS [Database Status], user_access_desc
FROM SYS.DATABASES
where name = '111test'

Тоже решаемо


спасибо.
3 сен 12, 14:44    [13106041]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить