วิธีการย้ายฐานข้อมูล SQL Server ไปยังตำแหน่งใหม่โดยการใช้ฟังก์ชัน แยกออก และฟังก์ชัน แนบ ใน SQL Server

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 224071 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการเปลี่ยนตำแหน่งที่ตั้ง ของแฟ้มข้อมูล และไฟล์บันทึกของฐานข้อมูล Microsoft SQL Server 2005, SQL Server 2000 หรือ SQL Server 7.0 ใด ๆ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการย้ายฐานข้อมูลของระบบใน SQL Server 2008ดูหัวข้อ "ฐานขณะย้ายระบบข้อมูล" ใน SQL Server หนังสือออนไลน์ เพื่อดูหัวข้อนี้ ไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

ข้อมูลเพิ่มเติม

ขั้นตอนที่คุณต้องทำตามการเปลี่ยนตำแหน่งที่ตั้งสำหรับฐานข้อมูลบางระบบของเซิร์ฟเวอร์ SQL ที่แตกต่างจากขั้นตอนที่คุณต้องทำตามการเปลี่ยนตำแหน่งที่ตั้งสำหรับฐานข้อมูลผู้ใช้ กรณีเหล่านี้จะระบุไว้แยกต่างหาก

หมายเหตุ:ฐานข้อมูลของระบบ sql Server 7.0 จะไม่เข้ากันได้กับ SQL Server 2000 ไม่แนบ SQL Server 7.0วางแผนหลัก,รูปแบบจำลอง,msdbหรือฐานข้อมูลการกระจายไปยัง SQL Server 2000 ถ้าคุณใช้ SQL Server 2005 คุณสามารถแนบฐานข้อมูลของ SQL Server 2005 กับอินสแตนซ์เท่านั้น ตัวอย่างทั้งหมดในบทความนี้อนุมานว่า มีการติดตั้ง SQL Server ในโฟลเดอร์ D:\Mssql7 นอกจากนี้ ตัวอย่างนี้อนุมานว่า แฟ้มข้อมูลและไฟล์บันทึกทั้งหมดจะอยู่ในโฟลเดอร์ D:\Mssql7\Data เริ่มต้น ตัวอย่างการย้ายแฟ้มข้อมูลและไฟล์บันทึกของฐานข้อมูลทั้งหมดไป E:\Sqldata ในโฟลเดอร์

ตำแหน่งข้อมูลการเริ่มต้นสำหรับ SQL 2000 และรุ่น 2005 เป็นดังนี้:

ข้อกำหนดเบื้องต้น

  • ทำการสำรองข้อมูลของฐานข้อมูลทั้งหมด ปัจจุบันเป็นโดยเฉพาะวางแผนหลักฐานข้อมูล จากตำแหน่งปัจจุบัน
  • คุณต้องมีสิทธิ์ของผู้ดูแลระบบ (sa) ระบบ
  • คุณต้องทราบชื่อและตำแหน่งที่ตั้งปัจจุบันของแฟ้มข้อมูลทั้งหมด และแฟ้มสำหรับฐานข้อมูลการเข้าสู่ระบบ

    หมายเหตุ:คุณสามารถกำหนดชื่อและตำแหน่งที่ตั้งปัจจุบันของแฟ้มทั้งหมดที่ใช้ในฐานข้อมูล โดยใช้การsp_helpfileกระบวนงานที่เก็บไว้:
    use <database_name>
    go
    sp_helpfile
    go
  • คุณควรสามารถเข้าถึงฐานข้อมูลที่คุณกำลังย้ายแบบเอกสิทธิ์เฉพาะบุคคล ถ้าคุณประสบปัญหาในระหว่างกระบวนการ และ ถ้าคุณไม่สามารถเข้าถึงฐานข้อมูลที่คุณย้าย หรือ ถ้าคุณไม่สามารถเริ่ม SQL Server ตรวจสอบการล็อกข้อผิดพลาด SQL Server และ SQL Server หนังสือออนไลน์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่คุณประสบ

การย้ายฐานข้อมูลผู้ใช้

ตัวอย่างต่อไปนี้ย้ายฐานข้อมูลที่ชื่อmydb. ฐานข้อมูลนี้ประกอบด้วยแฟ้มข้อมูลที่หนึ่ง Mydb.mdf และ แฟ้มล็อกที่หนึ่ง Mydblog.ldf ถ้าฐานข้อมูลที่คุณกำลังย้ายแฟ้มบันทึกหรือไฟล์ข้อมูลเพิ่มเติม ระบุแฟ้มต่าง ๆ ในรายการที่กำหนดเขตจุลภาคในนั้นsp_attach_dbกระบวนงานที่เก็บไว้ กระบวนการsp_detach_dbไม่มีการเปลี่ยนแปลงวิธีการคำนึงถึงจำนวนแฟ้มฐานข้อมูลประกอบด้วยเนื่องจากการsp_detach_dbกระบวนไม่แสดงรายการแฟ้ม
  1. แยกออกฐานข้อมูลต่อไปนี้:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. ขั้นตอนถัดไป สำเนาแฟ้มข้อมูลและไฟล์บันทึกจากตำแหน่งที่ตั้ง (D:\Mssql7\Data) ปัจจุบันไปตำแหน่งที่ตั้ง (E:\Sqldata) ใหม่
  3. re-attach ฐานข้อมูล ชี้ไปที่แฟ้มในตำแหน่งที่ตั้งใหม่เป็นดังนี้:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    การตรวจสอบการเปลี่ยนแปลงในตำแหน่งที่ตั้งของแฟ้ม โดยใช้การsp_helpfileกระบวนงานที่เก็บไว้:
    use mydb
       go
       sp_helpfile
       go
    กระบวนการFileName :ค่าของคอลัมน์จะแสดงให้เห็นถึงตำแหน่งที่ตั้งใหม่
หมายเหตุ:บทความฐานความรู้ของ Microsoft 922804 อธิบายถึงปัญหาสำหรับฐานข้อมูล SQL Server 2005 ในการเก็บข้อมูลที่เชื่อมต่อเครือข่ายสำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
922804การแก้ไข: หลังจากที่คุณดึงออกฐานข้อมูล Microsoft SQL Server 2005 ที่อยู่ในการเก็บข้อมูลที่มีการเชื่อมต่อเครือข่าย คุณไม่สามารถ reattach ฐานข้อมูล SQL Server
ให้พิจารณาถึงปัญหานี้ นอกจากนี้ ให้ลองสิทธิ์ที่จะนำไปใช้กับฐานข้อมูลเมื่อมีถอนใน SQL Server 2005 สำหรับข้อมูลเพิ่มเติม ให้ดูที่ส่วน "Detaching และแนบฐานข้อมูล" ของหัวข้อ "รักษาความปลอดภัยและการบันทึกแฟ้มข้อมูล" ใน SQL Server หนังสือออนไลน์ เพื่อดูหัวข้อนี้ ไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx

การย้ายฐานข้อมูลตัวอย่าง

เมื่อต้อง การย้ายตัวอย่าง pubs ฐานข้อมูลและฐานข้อมูลตัวอย่าง Northwind ที่ ใน SQL Server 2000 หรือ ใน SQL Server 7.0 หรือ การย้ายฐานข้อมูลตัวอย่างของ AdventureWorks และฐานข้อมูลตัวอย่างของ AdventureWorksDW ใน SQL Server 2005 ทำตามขั้นตอนเดียวกันสำหรับการย้ายฐานข้อมูลผู้ใช้

การย้ายฐานข้อมูลแบบจำลอง

sql Server 7.0

  1. ตรวจสอบให้แน่ใจว่า บริษัทตัวแทนการเซิร์ฟเวอร์ SQL ไม่ทำงานในขณะนี้อยู่
  2. Follow the same procedure for moving user databases.

SQL Server 2005 and SQL Server 2000

In SQL Server 2005 and in SQL Server 2000, you cannot detach system databases by using thesp_detach_dbกระบวนงานที่เก็บไว้ เมื่อคุณพยายามเรียกใช้การsp_detach_db 'model'statement, you receive the following error message:
Server: Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached.
To move theรูปแบบจำลองdatabase, you must start SQL Server together with the-coption, the-moption, and trace flag 3608. Trace flag 3608 prevents SQL Server from recovering any database except theวางแผนหลักdatabase.

หมายเหตุ:You will not be able to access any user databases after you do this. You must not perform any operations, other than the following steps, while you use this trace flag. To add trace flag 3608 as a SQL Server startup parameteron SQL Server 2000, follow these steps:
  1. In SQL Server Enterprise Manager, right-click the server name, and then clickคุณสมบัติ.
  2. ในการทั่วไปแท็บ คลิกStartup Parameters.
  3. Add the following new parameter:
    -c -m -T3608
If you are using SQL Server 2005, you can use SQL Server Configuration Manager to change the startup parameters of the SQL Server service. For more information about how to change the startup parameters, visit the following Microsoft Developer Network (MSDN) Web site:
http://msdn2.microsoft.com/en-us/library/ms190737.aspx
After you add the-coption, the-moption, and trace flag 3608, follow these steps:
  1. Stop and then restart SQL Server.
  2. Detach theรูปแบบจำลองdatabase by using the following commands:
    use master
       go
       sp_detach_db 'model'
       go
  3. Move the Model.mdf and Modellog.ldf files from the D:\Mssql7\Data folder to the E:\Sqldata folder.
  4. Reattach theรูปแบบจำลองdatabase by using the following commands:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. เอาออก-c -m -T3608from the startup parameters in SQL Server Enterprise Manager or in SQL Server Configuration Manager.
  6. Stop and then restart SQL Server. You can verify the change in file locations by using thesp_helpfileกระบวนงานที่เก็บไว้ ตัวอย่างเช่น ใช้คำสั่งต่อไปนี้:
    use model
       go
       sp_helpfile
       go

Moving the MSDB database

sql Server 7.0

หมายเหตุ:If you are using this procedure while moving themsdbและรูปแบบจำลองdatabases, you must reattach theรูปแบบจำลองdatabase first, and then reattach themsdbdatabase. ทำตามขั้นตอนต่างๆ ต่อไปนี้::
  1. Make sure that the SQL Server Agent is not currently running.
  2. Follow the same procedure for moving user databases.
หมายเหตุ:If SQL Server Agent is running, thesp_detach_dbstored procedure will not succeed and you will receive the following message:
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database 'msdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server 2005 and SQL Server 2000

To move the MSDB database, you must start SQL Server together with the-coption, the-mตัวเลือก และสถานะของการสืบค้นกลับ 3608 ค่าสถานะการสืบค้นกลับ 3608 ป้องกันไม่ให้ SQL Server การกู้คืนฐานข้อมูลใด ๆ ยกเว้นวางแผนหลักdatabase. เมื่อต้องการเพิ่ม-cตัวเลือก การ-mตัวเลือก และสถานะของการสืบค้นกลับ 3608 ทำตามขั้นตอนในส่วน "ขณะย้ายฐานข้อมูลของรุ่น" หลังจากที่คุณเพิ่มตัวเลือก - c ตัวเลือก -m และค่าสถานะการสืบค้นกลับ 3608 ทำตามขั้นตอนเหล่านี้:
  1. หยุด แล้ว เริ่ม SQL Server
  2. ตรวจสอบให้แน่ใจว่า บริการของบริษัทตัวแทนของเซิร์ฟเวอร์ SQL ไม่ทำงานในขณะนี้อยู่
  3. แยกออกแบบmsdbฐานข้อมูลต่อไปนี้:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. ย้ายแฟ้ม Msdbdata.mdf และ Msdblog.ldf จากตำแหน่งปัจจุบัน (D:\Mssql8\Data) ไปยังตำแหน่งที่ตั้งใหม่ (E:\Mssql8\Data)
  5. เอาออก-c -m - T3608จากเริ่มต้นใช้งานพารามิเตอร์กล่องในตัวจัดการองค์กร
  6. หยุดแล้ว เริ่ม SQL Server

    หมายเหตุ:ถ้าคุณพยายาม reattachmsdbฐานข้อมูล โดยการเริ่มการทำงานร่วมกับ SQL Server-cตัวเลือก การ-mตัวเลือก และสถานะของการสืบค้นกลับ 3608 คุณอาจได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 615 ระดับ 21 สถานะ 1 บรรทัด 1
    ไม่พบฐานข้อมูลตาราง 3 หมายเลข ชื่อ 'รูปแบบ'
  7. reattach msdb ฐานข้อมูลต่อไปนี้:
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
หมายเหตุ:ถ้าคุณใช้ขั้นตอนนี้พร้อมกับการย้ายรูปแบบจำลองฐานข้อมูล คุณพยายามที่จะแยกออกแบบmsdbฐานข้อมูลในขณะที่คุณทำการแยกออกแบบรูปแบบจำลองdatabase. เมื่อคุณทำเช่นนี้ คุณต้อง reattachรูปแบบจำลองฐานข้อมูลก่อน และ reattach แล้ว นี้msdbdatabase. ถ้าคุณ reattachmsdbฐานข้อมูลก่อน คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้เมื่อคุณพยายาม reattachรูปแบบจำลองdatabase.:
msg 0 ระดับ 11 สถานะ 0, 0 ของบรรทัด
มีข้อผิดพลาดรุนแรงที่เกิดขึ้นบนคำสั่งปัจจุบัน ผลลัพธ์ ถ้ามี ควรถูกละทิ้ง
ในกรณีนี้ คุณต้องดึงออกแบบmsdbฐานข้อมูล reattachรูปแบบจำลองฐานข้อมูล และ reattach แล้ว นี้msdbdatabase.

หลังจากที่คุณย้ายนี้msdbฐานข้อมูล คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาด 229: สิทธิ์ถูกปฏิเสธบนวัตถุที่เรียกใช้ 'ObjectName', ฐานข้อมูล 'มาสเตอร์' เจ้าของ 'dbo'
ปัญหานี้เกิดขึ้นได้เนื่องจากกลุ่มความเป็นเจ้าของได้ใช้งานไม่ได้ เจ้าของฐานข้อมูลสำหรับการmsdbฐานข้อมูล และฐานข้อมูลหลักจะไม่เหมือนกัน ในที่นี้กรณี ความเป็นเจ้าของmsdbมีการเปลี่ยนแปลงฐานข้อมูล เมื่อต้องการแก้ไขปัญหานี้ เรียกใช้คำสั่ง Transact SQL ต่อไปนี้ คุณสามารถทำได้ โดยใช้ Osql.exe โปรแกรมอรรถประโยชน์บรรทัดคำสั่ง (SQL Server 7.0 และ SQL Server 2000) หรือ Sqlcmd.exe อรรถประโยชน์บรรทัดคำสั่ง (SQL Server 2005):
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
272424การเชื่อมต่อความเป็นเจ้าของวัตถุการตรวจสอบผ่านฐานข้อมูลขึ้นอยู่กับล็อกอินที่ถูกแมปกับเจ้าของวัตถุ

การย้ายฐานข้อมูลหลัก

sql Server 7.0 และ SQL Server 2000

  1. เปลี่ยนเส้นทางสำหรับแฟ้มข้อมูลหลักและแฟ้มล็อกที่หลักในตัวจัดการองค์กรของ SQL Server

    หมายเหตุ:นอกจากนี้คุณอาจเปลี่ยนตำแหน่งที่ตั้งของแฟ้มบันทึกข้อผิดพลาดต่อไปนี้
  2. คลิกขวาที่ SQL Server ในตัวจัดการองค์กร และจากนั้น คลิกคุณสมบัติ.
  3. คลิกพารามิเตอร์การเริ่มต้นเมื่อต้องการดูรายการต่อไปนี้:
    -dD:\MSSQL7\data\master.mdf
       -eD:\MSSQL7\log\ErrorLog
       -lD:\MSSQL7\data\mastlog.ldf
    -วเส้นทางครบถ้วนของแฟ้มข้อมูลของฐานข้อมูลหลักได้

    อี-เส้นทางครบถ้วนของแฟ้มบันทึกข้อผิดพลาดได้

    -lเส้นทางครบถ้วนของแฟ้มบันทึกของฐานข้อมูลหลักได้
  4. เปลี่ยนแปลงค่าเหล่านี้เป็นดังนี้:
    1. เอารายการแฟ้ม Master.mdf และ Mastlog.ldf ปัจจุบัน
    2. เพิ่มรายการใหม่ที่ระบุตำแหน่งที่ตั้งใหม่:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. หยุดการ SQL Server
  6. การคัดลอกแฟ้ม Master.mdf และ Mastlog.ldf ไปยังตำแหน่งใหม่ (E:\Sqldata)
  7. เริ่มต้นเซิร์ฟเวอร์ SQL

sql Server 2005

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการย้ายฐานข้อมูลหลักและฐานข้อมูลของทรัพยากร ไปที่ MSDN เว็บไซต์ต่อไปนี้:http://msdn2.microsoft.com/en-us/library/ms345408.aspxคุณอาจพบความล้มเหลวเมื่อคุณย้ายฐานข้อมูลหลักและฐานข้อมูลของทรัพยากรสำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
918695คุณอาจพบความล้มเหลวเมื่อคุณติดตั้ง SQL Server 2005 Service Pack 1 บนอินสแตนซ์ของ SQL Server 2005

การย้ายฐานข้อมูล tempdb

คุณสามารถย้ายtempdbแฟ้ม โดยใช้คำสั่งฐานข้อมูลที่มีการเปลี่ยนแปลง
  1. กำหนดชื่อไฟล์แบบลอจิคัลสำหรับการtempdbฐานข้อมูล โดยใช้sp_helpfileต่อไปนี้:
    use tempdb
    go
    sp_helpfile
    go
    ชื่อทางตรรกะสำหรับแต่ละแฟ้มจะอยู่ในนั้นชื่อ:คอลัมน์ ตัวอย่างนี้ใช้ชื่อแฟ้มเริ่มต้นของtempdevและtemplog.
  2. ใช้ใบแจ้งยอดเปลี่ยนฐานข้อมูล การระบุชื่อแฟ้มแบบลอจิคัลเป็นดังนี้:
    use master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
    go
    คุณควรได้รับข้อความแสดงข้อความต่อไปนี้ที่ยืนยันการเปลี่ยนแปลง:
    ข้อความที่ 1
    แฟ้ม 'tempdev' ใน sysaltfiles การปรับเปลี่ยน ลบแฟ้มเก่าหลังจากเริ่มการทำงานของ SQL Server ใหม่
    ข้อความ 2
    ปรับเปลี่ยนแฟ้ม 'templog' ใน sysaltfiles แล้ว ลบแฟ้มเก่าหลังจากเริ่มการทำงานของ SQL Server ใหม่
  3. การใช้sp_helpfileในtempdbwill not confirm these changes until you restart SQL Server.
  4. Stop and then restart SQL Server.

ข้อมูลอ้างอิง

หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
912397The SQL Server service cannot start when you change a startup parameter for a clustered instance of SQL Server 2000 or of SQL Server 2005 to a value that is not valid
274188"Troubleshooting orphaned users" topic in Books Online is incomplete
246133How to transfer logins and passwords between instances of SQL Server
168001User logons and permissions on a database may be incorrect after the database is restored

For more information, see the following books:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit
Microsoft Press, 2001

คุณสมบัติ

หมายเลขบทความ (Article ID): 224071 - รีวิวครั้งสุดท้าย: 17 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbinfo kbmt KB224071 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:224071

ให้ข้อเสนอแนะ