Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Состояние базы данных  [new]
стьюдент
Guest
Добрый день.
Скажите, какой командой определить, что в данный момент база архивируется или восстанавливается?
Я настроил SQL Profiler и там вижу эти события, но стоит задача получить это из своей программы, подойдет любой вариант - и из хранимой процедуры, и из процедуры на дельфи.
Спасибо!
8 дек 04, 11:38    [1166145]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
То, что база архивируется не узнать никак, окромя как предварительно запустив профайлер и отловив инструкцию BACKUP. На то он и "горячий бэкап".

А на счет восстановления, запрос

USE master
GO

SELECT DATABASEPROPERTYEX('DatabaseName', 'Status')

будет возвращать RESTORING
8 дек 04, 11:47    [1166186]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
стьюдент
Guest
Спасибо!
Тут мне еще один гуру подсказал, что во время архивирования возникают специфичные блокировки базы, это видно при запуске процедуры sp_lock. Так оно и оказалось, но насколько это надежный вариант?
8 дек 04, 11:57    [1166232]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А какие точно он не сказал? И еще вопрос можно, зачем Вам это все понадобилось?
8 дек 04, 12:00    [1166250]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Запрос

SELECT DATABASEPROPERTYEX('DatabaseName', 'Status')

вернёт RESTORING только если база уже существует на сервере.
8 дек 04, 12:10    [1166316]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
стьюдент
Guest
Я сам увидел, что там два вида блокировки возникают: [BULK-OP-LOG] и [BULK-OP-DB].
Понадобилось вот для чего: в большой базе периодически возникает необходимость запускать очень большие процедуры пересчета и если это совпадает по времени с архивированием базы, то суммарное время увеличивается в несколько раз. Архивирование у нас несколько раз в день по требованию руководства. Поэтому нужно разнести процессы во времени.
В основном это касается архивирования, но я хотел на всякий случай исключить запуск процедуры и во время восстановления.
8 дек 04, 12:12    [1166323]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
но я хотел на всякий случай исключить запуск процедуры и во время восстановления.


А это Вам и не удасться сделать, ибо нельзя к базе подконнектиться, пока она восстанавливается.
8 дек 04, 12:15    [1166339]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
стьюдент
Guest
Тогда тем более.

Кстати, нашел в документации такой фрагмент:

DB

Identifies the database lock.

DB is represented in Trace Flag 1204 in one of the following ways:

DB: db_id


DB:db_id[BULK-OP-DB], which identifies the database lock taken by the backup database.


DB:db_id[BULK-OP-LOG], which identifies the lock taken by the backup log for that particular database.

Похоже, что так и есть! Спасибо всем за ответы.
8 дек 04, 12:21    [1166365]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
стьюдент
В основном это касается архивирования, но я хотел на всякий случай исключить запуск процедуры и во время восстановления.


Так в чём проблема - если запуск процедур и запуск BACKUP/RESTORE под контролём, то можно реализовать механизм синхронизации.
8 дек 04, 12:26    [1166394]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
стьюдент
Guest
запуск процедур и запуск BACKUP/RESTORE под контролём, точнее он идет по расписанию, а вот запуск той процедуры пересчета выполняют пользователи совершенно стохастически
8 дек 04, 12:29    [1166416]     Ответить | Цитировать Сообщить модератору
 Re: Состояние базы данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
1. RESTORE невозможно будет запустить если у базы есть активные коннекты. Возникнет ошибка

2. При запущенном RESTORE с базой невозможно будет соединиться. И соответственно невозможно будет запустить процедуру этой базы.
8 дек 04, 12:46    [1166501]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить