จะเปลี่ยนชื่อฐานข้อมูล SQL Server ได้อย่างไร?

บางครั้งเราจำเป็นต้องเปลี่ยนชื่อฐานข้อมูลเนื่องจากชื่อเดิมเป็นไปตามโปรเจ็กต์ที่ไม่เกี่ยวข้องกับข้อมูลที่จัดเก็บไว้ในฐานข้อมูลหรือคุณเคยตั้งชื่อชั่วคราวมาก่อนและตอนนี้คุณต้องการแก้ไข โดยไม่คำนึงถึงเหตุผลเบื้องหลังการเปลี่ยนชื่อฐานข้อมูลในบทความนี้เราจะมาพร้อมกับวิธีการเปลี่ยนชื่อฐานข้อมูลข้อผิดพลาดที่อาจเกิดขึ้นขณะทำเช่นนั้นและวิธีการแก้ไข

ดังนั้นในการเปลี่ยนชื่อฐานข้อมูลคุณต้องทำตามวิธีใดวิธีหนึ่งดังที่กล่าวไว้ด้านล่าง ก่อนอื่นเราต้องสร้างฐานข้อมูลซึ่งจำเป็นต้องเปลี่ยนชื่อ

การสร้างฐานข้อมูล:

เลือกฐานข้อมูลในไฟล์ ระบบการจัดการเซิร์ฟเวอร์ SQL (SSMS). หากคุณไม่มีคุณสามารถสร้างได้โดยทำตามขั้นตอนนี้

  1. คลิกขวาที่“ฐานข้อมูล" ใน “ Object Explorer” และเลือกตัวเลือก “ ฐานข้อมูลใหม่”
  2. หน้าต่างจะปรากฏขึ้นในบานหน้าต่างด้านซ้าย
  3. เลือก "ทั่วไป" พิมพ์ชื่อฐานข้อมูลลงในถาดด้านขวาแล้วกด "ตกลง". ฐานข้อมูลจะถูกสร้างขึ้น

มีหลายวิธีในการเปลี่ยนชื่อฐานข้อมูลใน SQL Server ซึ่งจะกล่าวถึงรายละเอียดด้านล่างพร้อมกับเวอร์ชันที่รองรับโดยวิธีการเฉพาะใด ๆ ในภายหลังเราจะพูดถึงข้อผิดพลาดที่เกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูลและขั้นตอนในการแก้ไข

วิธีที่ 1: การใช้ตัวเลือกการเปลี่ยนชื่อ SSMS เพื่อเปลี่ยนชื่อฐานข้อมูลเซิร์ฟเวอร์ SQL

นี่เป็นวิธีที่ง่ายที่สุดในการเปลี่ยนชื่อฐานข้อมูล คุณต้องดำเนินการเช่นนี้จึงจะทำได้

  1. คลิกขวาที่ชื่อฐานข้อมูลจาก object explorer
  2. เลือก “ เปลี่ยนชื่อ”พิมพ์ชื่อฐานข้อมูลและกด “ เข้า”

วิธีที่ 2: การใช้ SSMS เพื่อเปลี่ยนชื่อฐานข้อมูล SQL Server

อีกวิธีที่ง่ายที่สุดในการเปลี่ยนชื่อฐานข้อมูลเช่นเดียวกับการเปลี่ยนชื่อโฟลเดอร์ใด ๆ ในหน้าต่าง คุณต้องทำเช่นนี้ต่อไปจึงจะทำได้ คลิกที่ฐานข้อมูลเพื่อเปลี่ยนชื่อเหมือนกับการเปลี่ยนชื่อโฟลเดอร์ windows

วิธีที่ 3: การใช้ T-SQL เพื่อเปลี่ยนชื่อฐานข้อมูล SQL Server

สำหรับ SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 และ 2017 คำสั่งนี้ใช้งานได้ ดำเนินการตามคำสั่งต่อไปนี้

แก้ไขฐานข้อมูล [ทดสอบ] MODIFY NAME = [test_cases]

ผลลัพธ์จะเป็น "ชื่อฐานข้อมูล" test_cases "ถูกตั้งค่าแล้ว" ดังที่เห็นในรูปด้านล่าง.

คุณสามารถใช้คำสั่ง T-SQL ด้านล่างเพื่อเปลี่ยนชื่อของฐานข้อมูลได้หากคุณใช้ SQL Server 2000 สำหรับ SQL 2005, 2008, 2008R2, 2012, 2014, 2016 และ 2017 ยังคงใช้งานได้ แต่ในบางขั้นตอน Microsoft อ้างว่าจะยุติ

วิธี 4: การใช้การถอดและแนบเปลี่ยนชื่อ SQL Server

การใช้คุณลักษณะถอดและแนบของ SQL Server สามารถใช้เพื่อลบฐานข้อมูลออกก่อนและกำหนดชื่ออื่นให้กับฐานข้อมูลเมื่อคุณแนบฐานข้อมูลอีกครั้ง สามารถใช้คำสั่ง T-SQL ต่อไปนี้เพื่อทำสิ่งนี้

การถอดฐานข้อมูล โดยเรียกใช้รหัสต่อไปนี้:

EXEC sp_detach_db 'ทดสอบ', 'จริง'

ผลลัพธ์จะเป็นแบบนี้

การแนบฐานข้อมูล

EXEC sp_attach_db @dbname = N'test ', @ filename1 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ filename2 = N'C: \ Program Files \ Microsoft เซิร์ฟเวอร์ SQL \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

ผลลัพธ์จะเป็น:

การใช้ SSMS เพื่อแยกและเชื่อมต่อฐานข้อมูลใหม่

นอกจากนี้ยังสามารถทำได้โดยใช้ SSMS โดยทำตามขั้นตอนเหล่านี้

  1. คลิกขวาที่ฐานข้อมูลเลือก "งาน" จากนั้นคลิกที่ “ ปลด”
  2. ตอนนี้คลิกที่ "ตกลง"
  3. ตอนนี้เพื่อแนบฐานข้อมูลคลิกขวาที่ “ ฐานข้อมูล” ใน “ Object Explorer” แล้วคลิก "แนบ". หน้าจอจะปรากฏขึ้นให้คลิกที่เพิ่ม อีกหน้าต่างหนึ่งจะปรากฏขึ้นพร้อมชื่อฐานข้อมูลตามที่แสดงด้านล่างให้เลือก "ทดสอบ".
  4. แต่เราต้องการเพิ่มเป็นชื่อฐานข้อมูลที่แก้ไข “ test_cases” พิมพ์เลย “ test_case” ใน "แนบเป็น" กล่อง. ตอนนี้แบบนี้. การดำเนินการนี้จะเปลี่ยนชื่อฐานข้อมูลของคุณ

นอกจากนี้เราจะพูดถึงข้อผิดพลาดที่อาจเกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูล คุณจะต้องมีสิทธิ์เข้าถึงฐานข้อมูลแบบเอกสิทธิ์เฉพาะบุคคลเพื่อเปลี่ยนชื่อฐานข้อมูลซึ่งทำให้มั่นใจได้ว่าฐานข้อมูลไม่มีการเชื่อมต่อฐานข้อมูลอื่น ๆ แต่หากไม่เป็นเช่นนั้นอาจส่งผลให้เกิดข้อผิดพลาดดังที่แสดงด้านล่าง ข้อผิดพลาดอาจเกิดขึ้นได้เมื่อเราเปิดหน้าต่างอื่นโดยไม่ได้ตั้งใจด้วยชื่อฐานข้อมูลเดียวกันซึ่งต้องเปลี่ยนชื่อ

ข้อผิดพลาดที่เกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูลผ่าน SSMS และดำเนินการค้นหา:

ข้อผิดพลาดสองข้อที่กล่าวถึงด้านล่างนี้มีสองมุมมองที่แตกต่างกันเนื่องจากเกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูลโดยใช้สองวิธีที่แตกต่างกัน ข้อผิดพลาด 1 เกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูลโดยใช้ SSMS และข้อผิดพลาดที่สองเกิดขึ้นขณะเปลี่ยนชื่อฐานข้อมูลโดยใช้แบบสอบถาม ข้อผิดพลาดทั้งสองแสดงข้อความเดียวกัน “ ฐานข้อมูลไม่สามารถล็อคเฉพาะเพื่อดำเนินการได้”, นั่นหมายความว่าข้อผิดพลาดเกิดขึ้นเนื่องจากผู้ใช้ไม่ได้รับสิทธิ์พิเศษในการเข้าถึงฐานข้อมูลเพื่อเปลี่ยนชื่อฐานข้อมูล ดังนั้นในการเปลี่ยนชื่อฐานข้อมูลเราต้องตั้งค่าฐานข้อมูลใน“โหมดผู้ใช้คนเดียว“.

ข้อผิดพลาด 1: เกิดข้อผิดพลาดขณะเปลี่ยนชื่อฐานข้อมูลผ่าน SSMS

“ ไม่สามารถเปลี่ยนชื่อการทดสอบได้ (ObjectExplorer)
ข้อมูลเพิ่มเติม:
การเปลี่ยนชื่อล้มเหลวสำหรับการทดสอบฐานข้อมูล (Microsoft.SqlServer.Smo)
เกิดข้อยกเว้นขณะเรียกใช้คำสั่ง Transact-SQL หรือชุดงาน
(Microsoft.SqlServer.ConnectionInfo)
ไม่สามารถล็อกฐานข้อมูลเฉพาะเพื่อดำเนินการได้ (Microsoft SQL Server ข้อผิดพลาด: 5030)”

ข้อผิดพลาด 2: เกิดข้อผิดพลาดขณะเปลี่ยนชื่อฐานข้อมูลโดยใช้แบบสอบถาม

“ ข่าวสารเกี่ยวกับ 5030 ระดับ 16 สถานะ 2 บรรทัดที่ 2 ไม่สามารถล็อกฐานข้อมูลเพื่อดำเนินการได้โดยเฉพาะ”

ก่อนอื่นเราจะทำซ้ำข้อความแสดงข้อผิดพลาดดังกล่าวข้างต้นเพื่อให้เข้าใจว่าสถานการณ์เหล่านี้เกิดขึ้นในสถานการณ์ใดและจะแก้ไขได้อย่างไร

  1. คลิกขวาที่ชื่อฐานข้อมูลจาก “ Object Explorer”
  2. เลือกเปลี่ยนชื่อและพิมพ์ชื่อฐานข้อมูลแล้วกด “ เข้า” หากใช้งานได้ดี แต่หากไม่ได้ผลและส่งผลให้เกิดข้อผิดพลาดเช่นนี้ “ ไม่สามารถเปลี่ยนชื่อได้ (ObjectExplorer) ไม่สามารถล็อกฐานข้อมูลเฉพาะเพื่อดำเนินการได้ (Microsoft SQL Server ข้อผิดพลาด: 5030)” ดังที่เห็นในรูปด้านล่างแสดงว่าคุณไม่มีสิทธิ์เข้าถึงฐานข้อมูล แต่เพียงผู้เดียวเพื่อเปลี่ยนชื่อฐานข้อมูล
  3. ข้อผิดพลาดนี้หมายความว่า SQL Server จะไม่อนุญาตให้เปลี่ยนชื่อฐานข้อมูลจนกว่าจะอยู่ใน “ โหมดผู้ใช้คนเดียว”
  4. ดังนั้นคุณจะต้องมีสิทธิ์เข้าถึงฐานข้อมูลโดยเฉพาะเพื่อเปลี่ยนชื่อฐานข้อมูลเพื่อทำความเข้าใจสิ่งนี้ให้เปิดหน้าต่างแบบสอบถามอื่นและเลือกฐานข้อมูล "ทดสอบ"
  5. ตอนนี้ในหน้าต่างแรกให้ลองรันโค้ดต่อไปนี้
  6. แก้ไขฐานข้อมูล [ทดสอบ] MODIFY NAME = [test_cases]
  7. แต่จะมีข้อความแสดงข้อผิดพลาดดังนี้ “ ข่าวสารเกี่ยวกับ 5030 ระดับ 16 สถานะ 2 บรรทัดที่ 2 ไม่สามารถล็อกฐานข้อมูลเพื่อดำเนินการได้โดยเฉพาะ”

สารละลาย:

การดำเนินการนี้จะกำหนดค่าฐานข้อมูลให้ย้อนกลับธุรกรรมที่รอดำเนินการและตั้งค่าไว้ “ โหมดผู้ใช้คนเดียว” แล้วกลับเข้าไป “ โหมดผู้ใช้หลายคน”

  1. ในการแก้ไขปัญหานี้เราจำเป็นต้องปิดหน้าต่างอื่น ๆ ทั้งหมดที่มีการใช้ชื่อฐานข้อมูลเดียวกันหรือเพื่อตั้งค่าฐานข้อมูล “ โหมดผู้ใช้คนเดียว” โดยใช้คำสั่งต่อไปนี้
  2. เปลี่ยนชุดทดสอบฐานข้อมูล single_user พร้อมย้อนกลับทันทีไป EXEC sp_renamedb 'test', 'test_cases' ไปเปลี่ยนฐานข้อมูล test_cases set multi_user go
  3. ผลลัพธ์จะเป็นดังนี้: “ การทำธุรกรรมที่ไม่มีเงื่อนไขกำลังถูกย้อนกลับ การย้อนกลับเสร็จสิ้นโดยประมาณ: 0% กำลังดำเนินการย้อนกลับธุรกรรมที่ไม่มีเงื่อนไข เสร็จสิ้นการย้อนกลับโดยประมาณ: 100% ตั้งชื่อฐานข้อมูล "test_cases" แล้ว "

สรุป:

วิธีเหล่านี้มีหลายวิธีในการเปลี่ยนชื่อฐานข้อมูล หากวิธีหนึ่งไม่ได้ผลสำหรับคุณ คุณสามารถไปที่อื่น สิ่งหนึ่งที่ควรจำไว้ว่าการเปลี่ยนชื่อฐานข้อมูลโดยใช้วิธีเหล่านี้เพียงแค่เปลี่ยนชื่อฐานข้อมูล “ ไฟล์ทางกายภาพ” ยังคงมีชื่อเดิม ดังที่เราเห็นในรูปด้านล่างเราได้เปลี่ยนชื่อฐานข้อมูลจาก "ทดสอบ" ถึง “ test_cases” แต่ในตำแหน่งทางกายภาพมันยังคงเหมือนเดิม

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

นอกจากนี้นอกเหนือจากการเปลี่ยนชื่อของฐานข้อมูลแล้วคุณยังต้องตรวจสอบว่ามีการอ้างอิงในรหัสแอปพลิเคชันของคุณเป็นชื่อฐานข้อมูลหรือไม่ ซึ่งอาจเป็นได้ทั้งภายใน SQL Server หรือภายนอก SQL Server

Facebook Twitter Google Plus Pinterest