|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Tengiz Kharatishvili 2:5020/400 06 Mar 2001 11:20:17 To : All Subject : Re: MS SQL 2000 -------------------------------------------------------------------------------- "Andrey" <Andrey@p5.f13.n5083.z2.fidonet.org> wrote in message news:2857299920@p5.f13.n5083.z2.ftn... OK, MS SQL Server 2000 есть под рукой? Если нет, то и разговаривать не о чем. Как я уже говорил, тогда таким монологам самое место на митинге. Если же всё-таки таковой имеется, делаем следующий эксперимент: -- Скрипт 1 ------------------------------------------------------ -- -- создаём базу данных logtest и ставим режим полного -- журналирования RECOVERY FULL -- set nocount on go create database logtest on primary (name = [logtest.dat], filename = 'c:\logtest.dat', size = 2MB) log on (name = [logtest.log], filename = 'c:\logtest.log', size = 2MB) go alter database logtest set recovery full go use logtest go -- создаём таблицу и записываем в неё > 1000 строк -- create table t(a int identity, b int) insert t(b) values(1) while @@identity < 1000 insert t(b) select a from t go -- делаем нормальный backup -- backup database logtest to disk = 'c:\logtest.backup.dat' with init go -- добавляем в нашу таблицу ещё данных -- insert t(b) values(1) while @@identity < 10000 insert t(b) select a from t -- проверяем количество строк в таблице непостредственно -- перед "аварией" -- select count(*) from logtest..t go use master go ------------------------------------------------------------------ После этого выключаем сервер, грубо удаляем файл данных c:\logtest.dat и снова запускаем сервер. Как и ожидалось, сервер не смог активизировать базу данных так как нет файла с данными. Далее делаем следующее: -- Скрипт 2 ------------------------------------------------------ -- set nocount on go use master go -- делаем аварийную резервную копию журнала, т.к. устройтсво -- данных недоступно -- backup log logtest to disk = 'c:\logtest.backup.log' with init, no_truncate go -- В итоге имеем полный набор для восстановлеиня базы в -- состоянии, в котором она была перед "исчезновением" -- устройства с данными. -- восстанавливаем устройство данных с последней резервной -- копии -- restore database logtest from disk = 'c:\logtest.backup.dat' with norecovery go -- накатываем последнюю аварийную резервную копию журнала -- restore log logtest from disk = 'c:\logtest.backup.log' go -- убеждаемся, что в таблице столько же строк, сколько их -- было непосредственно перед "аварией" устройства данных -- select count(*) from logtest..t ------------------------------------------------------------------ Скрипты все рабочие, ошибок нет, я всё проверил, прежде, чем выложить сюда. Если этого недостаточно, чтобы закрыть тему, то неплохо было бы тогда поточнее определить, в чём, всё-таки Ваша проблема и что конкретно Вас не устраивает в том, как MS SQL Server работает с журналом. Cheers. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/65774ed66fee.html, оценка из 5, голосов 10
|