YetAnotherForum
სალამი სტუმარს ძებნა | აქტიური თემები | შესვლა | რეგისტრაცია

ფავორიტებში დამატება
Suspect Mode
vajaGM Offline
#1 Posted : Tuesday, May 04, 2010 7:05:28 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
-- Version : SQL Server 2000

--== პრობლემა == -----------------------------------------------------------
-- სერვერის HD დისკი, რომელზეც მოთავსებული იყო transaction log
-- ფაილი მწყობრიდან გამოვიდა და მონაცემთა ბაზა გადავიდა suspect რეჟიმში.
-- ამ დროს ხშირ შემთხვევებში ბაზის detach-ის შესრულება შესაძლებელია EM-იდან,
-- თუმცა არ ხერხდება მისი ხელახლა attach-ი (attach_single_file_db - პროცესი)
-- და მხოლოდ ბაზის მიერთება log-ის გარეშე აბრუნებს შეცდომას.
-- შეცდომის შეტყობინება შემდეგი სახისაა :


ქუოტა (Quote):
/*
Server: Msg 945, Level 14, State 2, Line 1
Database '<db_name>' cannot be opened because some of the files could not be activated.
Server: Msg 1813, Level 16, State 2, Line 1
Could not open new database '<db_name>'. CREATE DATABASE is aborted.
*/


BB კოდი:

--== პრობლემის გადაწყვეტა == -----------------------------------------------------------

--    ყურადღება ! ეს მეთოდი მუსაობს მხოლოდ SQL2000-ისათვის (გარკვეულ შემთხვევებში ის იმუშავებს SQL2005, SQL2008 -ისთვისაც)

--    1. შევქმნათ ახალი მონაცემთა ბაზა იგივე სახელითა და მდებარეობის იგივე სახელის მისამართით, როგორიც იყო ძველი .mdf და .ldf ფაილები

--    2. გამოვრთოთ სერვერი (STOP) და გამოვცვალოთ .mdf ფაილი

--    3. დავსტარტოთ სერვერი. (ნუ მიაქცევთ ყურადრებას ბაზის status მნიშვნელობას) 

--    4. QA-დან შეასრულეთ შემდეგი ბრძანება

    Use master
    go
    sp_configure 'allow updates', 1
    reconfigure with override
    go

--4. დავიზღვიოთ თავი და შევინახოთ ბაზის status მნიშვნელობა, რაც დაგვჭირდება იმ შემთხვევაში თუ
--   rebuilt ოპერაცია დამთავრდება წარუმატებლად.

    select status from sysdatabases where name = '<db_name>'

--5. აქვე QA-დან შეასრულეთ შემდეგი ბრძანება

    update sysdatabases set status= 32768 where name = '<db_name>'

--6. გადავტვირთოს  SQL Server

--7. ბაზა გამოჩნდება emergency სტატუსში

--8. QA-დან შეასრულეთ ბრძანება

    DBCC REBUILD_LOG('<db_name>', '<.ldf ფაილის სახელი მისი სრული მისამართითურთ>')

--9. თუ SQL Server-მა დააბრუნა პასუხი: 'Warning: The log for database '<db_name>' has been rebuilt.'
--   ე.ი. ყველაფერი რიგზეა და აქვე შევასრულოთ ბრძანება

    Use master
    go
    sp_dboption '<db_name>', 'single user', 'true'
    go
    USE <db_name>
    GO
    DBCC CHECKDB('<db_name>', REPAIR_ALLOW_DATA_LOSS)
    go

--    9a. თუ მე-9 პუნქტის პირველი ბრძანებით, ვერ შეძელით ბაზის გადართვა single user სტატუსში,
--        მაშინ მონაცემთა მთლიანობის კონტროლის მიზნით შეგიძლიათ სცადოთ 'dbo only mode'

    sp_dboption '<db_name>', 'dbo use only', 'true'

--    10. თუ ყველაფერი რიგზეა, მაშინ შეასრულეთ:

    sp_dboption '<db_name>', 'single user', 'false'
    go
    Use master
    go
    sp_configure 'allow updates', 0
    go
ქუოტა (Quote):
Sponsor  
 
Apex ltd. http://www.apex.ge
vova Offline
#2 Posted : Saturday, September 18, 2010 12:38:14 PM

Rank: Newbie

Medals:

Groups: Registered
Joined: 9/7/2010
Posts: 3
Points: 12

Thanks: 0 times
Was thanked: 1 time(s) in 1 post(s)
--SQL SERVER 2008 ბაზისათვის



ქუოტა (Quote):
Alter database <<DatabaseName>> set Single_User

Alter database <<DatabaseName>> set Emergency

DBCC CheckDB ('<<DatabaseName>>') -- This will tell you the Repair level to use

DBCC CheckDB ('<<DatabaseName>>', REPAIR_ALLOW_DATA_LOSS )

Alter database <<DatabaseName>> set Multi_User


1 user thanked vova for this useful post.
ZOK on 9/18/2010
tbiliso Offline
#3 Posted : Thursday, October 06, 2011 5:11:12 PM

Rank: Newbie

Medals:

Groups: Registered
Joined: 10/6/2011
Posts: 1
Points: 3
Location: Georgia

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
2008-ში Suspect-ჳს მორჩენა

1) დავადისეიბლოთ რეპლიკაციის ჯობები
2) გადავტვირთოთ Suspect-იანი კომპიუტერი
3) ეტაპობრივად გავუშვათ ქვევით მოცემული სკრიპტები:

1) Alter database <<DatabaseName>> set Single_User

2) Alter database <<DatabaseName>> set Emergency

3) DBCC CheckDB ('<<DatabaseName>>') -- This will tell you the Repair level to use

4) DBCC CheckDB ('<<DatabaseName>>', REPAIR_ALLOW_DATA_LOSS )

5) Alter database <<DatabaseName>> set Multi_User
Users browsing this topic
Guest
ფავორიტებში დამატება
Forum Jump  
თქვენ არ შეგიძლიათ დაწეროთ ახალი თემა ამ ფორუმში.
თქვენ არ შეგიძლიათ გასცეთ პასუხი, თემას, ამ ფორუმში .
თქვენ არ შეგიძლიათ წაშალოთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ ჩაასწოროთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ შექმნათ გამოკითხვა ამ ფორუმში.
თქვენ არ შეგიძლიათ ხმის მიცემა ამ ფოუმში.

YAFVision Theme by Jaben Cargman (Tiny Gecko)
Powered by YAF | YAF © 2003-2009, Yet Another Forum.NET
This page was generated in 0.091 seconds.