PDA

View Full Version : suspectشدن distribution



dorna1985
چهارشنبه 20 شهریور 1387, 21:04 عصر
سلام
اساتید محترم،با مشکل sqlی مواجه شدم که بصورت کامل شرح میدهم و امیدوارم بخوانید و راهنمایی کنید
به دلیل قطع برق Db distribution سرور که مربوط به replication هاست suspectشده و من به کمک تاپیک هایی که در سایت وجود داشت توانستم dbرو به حالت(read only/offline/emergency mode) تبدیل کنم و خوستم با استفاده از کد زیر log file رو بازسازی کنه و درنتیجه Db به وضعیت عادی رسید ه و Replicationها ادامه پیدا کنه ولی خطاهای زیر ظاهر شد.


DBCC TRACEON (3604)


DBCC REBUILD_LOG(yourdatabasename,'c:\yourdatabasename_ log.ldf')

خطا:
The database could not be exclusively locked to perform the operation.

Declare @DB sysname;set @DB = 'DBName';-- Put the database in emergency modeEXEC('ALTER DATABASE [' + @DB + '] SET EMERGENCY');--Set single user modeexec sp_dboption @DB, 'single user', 'TRUE';-- Repair databaseDBCC checkdb (@DB, repair_allow_data_loss);-- Turn off single user modeexec sp_dboption @DB, 'single user', 'FALSE';
خطا:
Server: Msg 102, Level 15, State 6, Line 1
Incorrect syntax near 'EMERGENCY'.
Server: Msg 5070, Level 16, State 2, Line 1
Database state cannot be changed while other users are using the database 'distribution'
Server: Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
sp_dboption command failed.
Server: Msg 7919, Level 16, State 2, Line 8
Repair statement not processed. Database needs to be in single user mode.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

؟؟؟؟آیا میشه این خطا ها را از بین برد و db زنده شه و احتیاج به ایجاد و کپی تمام object ها نباشه؟
در مرحله بعد خواستم جداول وview, spها رو کپی کنم که دو تا از جدول ها که حجم db(حدود 7 gig) را گرفته با استفاده از دستور select into کپی نمی شه و time outمی ده (حجم به حدی بالاست که حتی نتیجه count(*) هم نشون داده نمیشه) ، در ضمن امکان export هم وجود نداره
؟؟؟آیا راهی برای کپی کامل این دو جدول وجود داره((mrepl_commands, mrepl_errors؟
ایجاد مجدد این replication ها خیلی سخت و زمانبره ، شما راه حلی برای این دو سوال دارین؟
ممنون

AminSobati
پنج شنبه 21 شهریور 1387, 13:49 عصر
سلام،
خطای اولی که نوشتین نشون میده به این دیتابیس هنوز Connection وجود داره. شاید از سرویس Agent باشه. اون رو Stop کنین، بعد با کمک exec sp_who ببینید آیا هنوز Connection هست یا خیر. اگر وجود داشت اون رو KILL کنین

dorna1985
جمعه 22 شهریور 1387, 13:24 عصر
سلام
ممنون از پاسختان
طبق توضیحات شما Db به فرم عادی برگشته، ولی هنوز مشکلاتی وجود داره:
1-کنار نام Db این عبارت وجود داره :dbo use only
2-با فرض درست شدن db شروع به start این Replicationها کردم که با این خطا مواجه شد:

Table error: Database ID 7, object ID 5575058, index ID 0. Chain linkage mismatch. (1:756)->next = (1:755), but (1:755)->prev = (1:780360).
sp_dboption command failed.

3- برای Repairهم باز این مشکلات وجود داره (برای این db آیا واقعا نیازی به repairهست؟)

Incorrect syntax near 'EMERGENCY'.
Server: Msg 5066, Level 16, State 1, Procedure sp_dboption, Line 470
Database options single user and dbo use only cannot be set at the same time.
Server: Msg 7919, Level 16, State 2, Line 8
Repair statement not processed. Database needs to be in single user mod

captain_black81
جمعه 22 شهریور 1387, 14:41 عصر
این تاپیک رو ببینید
http://barnamenevis.org/forum/showthread.php?t=110226&highlight=mdf

AminSobati
جمعه 22 شهریور 1387, 17:42 عصر
سلام
ممنون از پاسختان
طبق توضیحات شما Db به فرم عادی برگشته، ولی هنوز مشکلاتی وجود داره:
1-کنار نام Db این عبارت وجود داره :dbo use only
2-با فرض درست شدن db شروع به start این Replicationها کردم که با این خطا مواجه شد:

Table error: Database ID 7, object ID 5575058, index ID 0. Chain linkage mismatch. (1:756)->next = (1:755), but (1:755)->prev = (1:780360).
sp_dboption command failed.

3- برای Repairهم باز این مشکلات وجود داره (برای این db آیا واقعا نیازی به repairهست؟)

Incorrect syntax near 'EMERGENCY'.
Server: Msg 5066, Level 16, State 1, Procedure sp_dboption, Line 470
Database options single user and dbo use only cannot be set at the same time.
Server: Msg 7919, Level 16, State 2, Line 8
Repair statement not processed. Database needs to be in single user mod

از پیغام مشخصه که آدرس Pageها صدمه دیده و لینک بینشون قطع شده. از dbcc checkdb سعی کردین برای repair استفاده کنین؟ ضمنا دیتابیس رو از طریق alter database میتونین به حالت multi user در بیارین
ALTER DATABASE MyDB SET MULTI_USER

dorna1985
جمعه 22 شهریور 1387, 23:08 عصر
با اجرای dbcc checkdb کلی Error وجود داره که نشونه همون آسیب دیدن pageهاست .چطور میشه این آسیب ها رو ترمیم؟ آیا راهی وجود داره؟ اصلا امیدی هست؟

dorna1985
شنبه 23 شهریور 1387, 14:13 عصر
بعد از چند بار اجراي dbcc ظاهرا replication ديگه خطا نداره البته نميدونم درست كار مي كنه يا نه

AminSobati
شنبه 23 شهریور 1387, 17:14 عصر
DBCC CHECKDB چند گزینه برای Repair داره، در Books Online ببینید