ด่วน..ต้องการกู้ ดาต้า .mdf กะ log .ldf ของ Sql server

   
โดย physical data ยังอยู่ครบ แต่ attach ไม่ได้ครับ...
fox8
5 ม.ค. 48 เวลา 11:41:50 น. --> 61.90.24.123, ,
   
   
แวะเข้ามาช่วยเดาครับ....


SQL SERVER 7

1. Detach database ซะก่อน:
use master
go
sp_detach_db 'mydb'
go


2. Re-attach database :
use master
go
sp_attach_db 'YourDatabaseName','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
go


3) Verify ความเปลี่ยนแปลง :
use YourDatabaseName
go
sp_helpfile
go


สำหรับ 2000
1)- เปิด SQL Server Enterprise Manager คลิ๊กขวาที่ server name แล้ว คลิ๊ก Properties
ที่ General tab, คลิ๊กที่ปุ่ม Startup Parameters ใส่ -T3608 เข้าไปในช่อง parameter
แล้วคลิ๊กที่ปุ่ม Add , OK ,OK เสร็จแล้วก็ Stop SQL Server ซะก่อน แล้วค่อย restart SQL Server

2) ทำแบบเดียวกับ SQL SERVER 7 ครับ
เดาสุ่ม
5 ม.ค. 48 เวลา 12:23:24 น. --> 202.142.218.162
  
   
ขอบคูณครับจะลองดูแล้วแจ้งผลให้ทราบ.รอท่านอื่นด้วย
fox8
5 ม.ค. 48 เวลา 13:48:50 น. --> 61.90.24.123, w
  
   
Error 9004. *** ไม่สามารถ attach ได้ เกิดจาก ระหว่างที่ write data แล้วไม่เสร็จ มีวิธีอื่นอีกหรือไม่ ใช้ MsSqlRecovery Versoin 2.0 แล้วยังไม่ได้ มีท่านใดเคยเจอปัญหาบ้าง โดยไม่ต้องใช้ข้อมูลจาก
Back up
fox8
5 ม.ค. 48 เวลา 14:05:30 น. --> 61.90.24.123, w
  
   
ยังไม่ทราบอยู่ดีว่าคุณใช้ SQL SERVER รุ่นไหน? OS?
ตอบแบบกว้างๆ...ไว้ก่อน

คุณลอง Apply SP ล่าสุดของ SQL-SERVER รุ่นที่คุณใช้งานอยู่ซะก่อน
จากนั้นก็ เข้าสู่ Single User Mode
แล้วลองใช้ Query Analyzer run คำสั่งต่อไปนี้

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\YourSQLDB_DIR\Your_DB.mdf',
@filename2 = c:\YourSQLDB_DIR\Your_DB.ldf'
เดาสุ่ม
5 ม.ค. 48 เวลา 17:03:02 น. --> 61.90.122.152,
  
   
แก้นิด.... )

EXEC sp_attach_db @dbname = N'Your_DB',
@filename1 = N'c:\YourSQLDB_DIR\Your_DB.mdf',
@filename2 = c:\YourSQLDB_DIR\Your_DB.ldf'
เดาสุ่ม
5 ม.ค. 48 เวลา 17:04:38 น. --> 61.90.122.152,
  
   
ขอบคุณครับ ..ทำไปก่อนหน้าแล้วยังไม่ได้ ติดตัว Log file ทำไงจึงจะ attach เฉพาะ data ก่อนโดยไม่ใช้ Log file ครับ Sql server ที่ ใช้ V.2000 ครับ
fox8
5 ม.ค. 48 เวลา 17:20:00 น. --> 61.90.24.123, w
  
   
sp_attach_single_file_db [dbname], [filename]
เดาสุ่ม
5 ม.ค. 48 เวลา 17:58:20 น. --> 61.90.122.152,
  
   
sp_attach_single_file_db [dbname], [filename]

Remarks
When sp_attach_single_file_db attaches the database to the server, it builds a new log file and performs additional cleanup work to remove replication from the newly attached database.

*****Use sp_attach_single_file_db only on databases that were previously
detached from the server using an explicit sp_detach_db operation.

****Use sp_attach_single_file_db only on databases that have a single log file. Do not use this stored procedure on databases that have multiple log files.

เดาสุ่ม
5 ม.ค. 48 เวลา 18:02:16 น. --> 61.90.122.152,
  
   
error Server:Msg 1813, level 16, state 2, line 1
Could not open new database 'Data_777'. CREATE DATABASE IS a borted.
Device activation error. The Physical file name "E:\mssql2k\mssql\data\data_log_777.ldf" may be incorrect.

คือ สงสัยว่าทำไมยังชี้ไปที่ Log อีก ทั้งๆที่ต้องการทำที่ดาต้า ตัวเดียว..........
fox8
6 ม.ค. 48 เวลา 9:42:00 น. --> 61.90.24.153, w
  
   
รบกวนคุณ เดาสุ่ม หรือท่านใดที่คิดว่าจะเสนอทางแก้ให้รบกวนโทรมาแล้วผมจะโทรกลับ
เพื่อแก้ปัญหา งานไม่เดินมา 2 วันแล้ว ขอบคุณมากครับ......
fox8
6 ม.ค. 48 เวลา 9:56:50 น. --> 61.90.24.153, w
  
   
ลืมไปกะลังกลุ้มมาก ดาต้าเดี้ยงตอนโบนัสจะออก...........01-8380232 ครับ
fox8
6 ม.ค. 48 เวลา 9:58:31 น. --> 61.90.24.153, w
  
   
ขอโทษครับพอดีตอนนี้ภรรยาผมใก้ลครบกำหนดวันคลอดเต็มทีเลยไม่ค่อยมีเวลาตอบกระทู้เท่าใดนัก..
ได้แต่อ่านผ่านๆ....

ถ้า log file เสียหายลองดู Article นี้มีเพียง 10 ขั้นตอนเท่านั้นแต่มันเคยช่วยผมกู้ระบบ
ให้ลูกค้ามา2-3 ครั้งแล้วครับ...

http://www.spaceprogram.com/knowledge/sqlserver_recover_from_deleted_log.html
เดาสุ่ม
6 ม.ค. 48 เวลา 15:50:54 น. --> 202.142.218.162
  
   
แจ้งผล ต้องทำใจครับexport ออกมาไม่ได้ สงสัย too big file ขนาด7 GB กว่าๆ ไง ก็ขอขอบคุณครับ..
fox8
7 ม.ค. 48 เวลา 10:09:53 น. --> 61.90.24.95, ww
  
   
อย่าเพิ่งท้อครับ....
...ใน DATABSE ของคุณมีกี่ Tables ครับ ? ไม่ทราบว่าคุณทดลอง import/export
ทีละ Table หรือยังครับ ?
เดาสุ่ม
7 ม.ค. 48 เวลา 10:30:02 น. --> 202.142.218.162
  
   
ผมได้ลองทำตามที่ได้แนะนำแล้วนะครับ Status ของ Database กลับมาเป็น Emegency Mode แล้วครับ และได้ลอง Import/Export ดู ปรากฏว่าได้มาบาง Table ครับ บาง Table เกิด Error ว่า I/O error (bad page ID) detected during read at offset 0x0000189fb2000 in file 'E:\Data\TData.MDF'
พอมีทางแก้ไขไม๊ครับ
fox8
7 ม.ค. 48 เวลา 10:47:50 น. --> 61.90.24.95, ww
  
   
สำหรับ Table ที่มีปัญหา I/O error (bad page ID) detected during read
ให้ Import/export ทีหลังสุดครับ โดย Disable กลไก Discaching ของ OS ก่อน
...ว่าแต่ว่าคุณใช้ Windows ไหนครับ
เดาสุ่ม
7 ม.ค. 48 เวลา 11:01:51 น. --> 202.142.218.162
  
   
xp ครับ Disable กลไก Discaching ของ OS ทำไงครับ
fox8
7 ม.ค. 48 เวลา 11:07:58 น. --> 61.90.24.95, ww
  
   
การ Disable กลไก Discaching ของ OS ทำโดยการ Disable opportunistic locking (oplocks)
โดยใช้ regedit แก้ไขค่าใน Registry ของ Windows 2 ค่าดังนี้ครับ


1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters EnableOpLockForceClose
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters EnableOplocks

1. EnableOpLockForceClose

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

EnableOpLockForceClose REG_DWORD 0 or 1
Default: 0 (not disabled)

To disable oplocks, the value of EnableOpLockForceClose must be set to 1.

You can verify (or change or add, if necessary) this Registry value using the Windows Registry Editor (regedit.exe).
If you do change this Registry value, you will have to reboot the PC to ensure that the new setting goes into effect.

Please read the Microsoft disclaimer regarding editing of the Windows registry here.

STEPS:

1. Start > Run > Regedit.exe
2. Click on the + (plus sign) next to HKey_Local_Machine
3. Click on the + (plus sign) next to System
4. Click on the + (plus sign) next to CurrentControlSet
5. Click on the + (plus sign) next to Services
6. Click on the + (plus sign) next to LanManServer
7. Click on the Parameters entry on the left-hand side of Registry Editor

8. If the EnableOpLockForceClose registry value already exists (on the right-hand side of Registry Editor), ensure that its value is 1

9. If the EnableOpLockForceClose value already exists but its value is not 1, double-click on EnableOpLockForceClose to change its value to 1

10. If the EnableOpLockForceClose entry does not exist, right-click in the white space of the right-hand side of Registry Editor
11. Select New > DWORD value
12. Rename the value to EnableOpLockForceClose
13. Double-click on EnableOpLockForceClose to change its value to 1

2. EnableOplocks

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

EnableOplocks REG_DWORD 0 or 1
Default: 1 (true)
To disable oplocks, the value of EnableOplocks must be set to 0.

You can verify (or change or add, if necessary) this Registry value using the Windows Registry Editor (regedit.exe).
If you do change this Registry value, you will have to reboot the PC to ensure that the new setting goes into effect.
เดาสุ่ม
7 ม.ค. 48 เวลา 11:37:42 น. --> 202.142.218.162
  
   
อันนี้สำหรับ Windows ในตระกูล NT (NT/2000/XP ) ครับ..
เดาสุ่ม
7 ม.ค. 48 เวลา 11:41:46 น. --> 202.142.218.162
  
   
จะลองดูแล้วแจ้งให้ทราบครับเพราะกระทู้ มีคนสนใจอยู่หลายท่าน
fox8
7 ม.ค. 48 เวลา 13:20:26 น. --> 61.90.24.95, ww
  
   
หลังทำ Disable กลไก Discaching ของ OS แก้ค่าตามที่แนะนำแล้ว ยังขึ้น I/O error เดิม
ครับ ใน row ที่ 88 arcusfil_sql ซึ่ง แฟ้มนี้ไม่ใหญ่นัก
fox8
7 ม.ค. 48 เวลา 13:39:03 น. --> 61.90.24.95, ww
  
   
ทำขั้นตอน นี้หรือยังครับ ?
If you do change this Registry value,

**you will have to reboot the PC to ensure that the new setting goes into effect.**

ถ้าทำแล้ว....แต่ยัง Error คงต้องหลัง 3 ทุ่มครับผมถึงจะกลับบ้านไปค้นดูขั้นตอนการแก้ไขที่ผมเคยใช้
เดาสุ่ม
7 ม.ค. 48 เวลา 16:32:47 น. --> 202.142.218.207
  
   
อ้อลอง DBCC CHECKDB ('E:\Data\TData.MDF' , REPAIR_REBUILD )
ไปพลางๆก่อนก็แล้วกันครับ ...อย่าลืม copy .mdf ไว้กันเหนียว
เดาสุ่ม
7 ม.ค. 48 เวลา 17:01:13 น. --> 202.142.218.207
  
   
locate หาดาต้าไม่เจอทั้งๆ ที่เก็บดาต้าไว้ที่นั่น........'E:\MsSql2k\mssql\data\data_777.mdf'
fox8
8 ม.ค. 48 เวลา 12:50:18 น. --> 61.90.24.131, w
  
   
สรุปผล ยังไง ก็ขอขอบคุณ คุณเดาสุ่ม มากเลยได้พยายามช่วยแก้ปัญหามาตลอด แม้ว่าสุดท้ายไม่ได้ก็ไม่ได้
นำเอา backup มาใช้ครับ.....ถึงจะหลายวันก็ตามแต่ แต่ขอแถมเล่าไว้เป็นประสบการณ์ ครับจริงๆ
แล้วผม สำรองไว้ทุกวันแหละ และ success ด้วย แต่ restore กลับมาแล้ว กลับ query ไม่ได้เปิดได้จาก
enterprise ครับ เลยกลับไปใช้ backup ย้อนกลับ เป็นเดือน ผมถึงพยายามกู้ข้อมูลนี่แหละครับ..วิธีการที่คุณเดาสุ่มให้มาถือว่าถูกต้องครับ แต่ ข้อมูลคงเสียหายเกินแก้ครับ.......
fox8
10 ม.ค. 48 เวลา 9:11:58 น. --> 61.90.24.202, w
  
ขอเชิญร่วมตอบคำถามครับ
 
ผู้ตอบ :
รหัสผ่าน :
รูปภาพ :
คำตอบ :