Làm thế nào để đổi tên cơ sở dữ liệu SQL Server?
Đôi khi chúng ta cần thay đổi tên cơ sở dữ liệu vì tên ban đầu dựa trên dự án đã trở nên không liên quan đến dữ liệu được lưu trữ trong cơ sở dữ liệu hoặc bạn đã đặt tên tạm thời trước đó và bây giờ bạn muốn sửa đổi nó. Bất kể lý do đằng sau việc đổi tên cơ sở dữ liệu, trong bài viết này, chúng tôi sẽ đưa ra các cách đổi tên cơ sở dữ liệu, lỗi gì có thể phát sinh khi thực hiện và cách khắc phục chúng.
Vì vậy, để đổi tên cơ sở dữ liệu, bạn cần làm theo một trong các phương pháp như được thảo luận bên dưới. Trước hết, chúng ta phải tạo một cơ sở dữ liệu cần được đổi tên.
Tạo cơ sở dữ liệu:
Chọn bất kỳ cơ sở dữ liệu nào trong Hệ thống quản lý máy chủ SQL (SSMS). Nếu bạn không có bất kỳ cái nào, bạn có thể tạo một cái bằng cách làm theo quy trình này.
- Nhấp chuột phải vào “Cơ sở dữ liệu" bên trong “Trình khám phá đối tượng” và chọn tùy chọn “Cơ sở dữ liệu mới”
- Một cửa sổ sẽ xuất hiện, ở khung bên trái
- lựa chọn "Chung" gõ tên cơ sở dữ liệu vào chảo bên phải và nhấn "đồng ý". Cơ sở dữ liệu sẽ được tạo
Có nhiều phương pháp để đổi tên cơ sở dữ liệu trong SQL Server, được thảo luận chi tiết bên dưới cùng với các phiên bản được hỗ trợ bởi bất kỳ phương pháp cụ thể nào. Sau đó, chúng ta cũng sẽ thảo luận về các lỗi phát sinh khi đổi tên cơ sở dữ liệu và quy trình sửa chúng.
Phương pháp 1: Sử dụng tùy chọn đổi tên SSMS để đổi tên Cơ sở dữ liệu máy chủ SQL
Đây là cách đơn giản nhất để đổi tên cơ sở dữ liệu. Bạn phải tiến hành như vậy để làm như vậy.
- Nhấp chuột phải vào tên cơ sở dữ liệu từ trình khám phá đối tượng
- Lựa chọn "đổi tên", nhập tên cơ sở dữ liệu và nhấn "đi vào"
Phương pháp 2: Sử dụng SSMS để đổi tên Cơ sở dữ liệu SQL Server
Một cách đơn giản khác để đổi tên cơ sở dữ liệu giống như đổi tên bất kỳ thư mục nào trong cửa sổ. Bạn phải tiếp tục như vậy để làm như vậy. Bấm vào cơ sở dữ liệu để đổi tên nó giống như đổi tên các thư mục windows.
Phương pháp 3: Sử dụng T-SQL để đổi tên Cơ sở dữ liệu SQL Server
Đối với SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 và 2017, lệnh này hoạt động. Thực hiện câu lệnh sau.
ALTER DATABASE [test] MODIFY NAME = [test_case]
Đầu ra sẽ là “Tên cơ sở dữ liệu‘ test_case ’đã được đặt.” Như được thấy trong hình bên dưới.
Bạn có thể sử dụng lệnh T-SQL bên dưới để thay đổi tên của cơ sở dữ liệu nếu bạn đang sử dụng SQL Server 2000. Với SQL 2005, 2008, 2008R2, 2012, 2014, 2016 và 2017, điều này vẫn hoạt động, nhưng ở một số giai đoạn, Microsoft tuyên bố nó sẽ bị loại bỏ dần.
phương pháp 4: Sử dụng tách và đính kèm đổi tên SQL Server
Sử dụng tính năng tách và đính kèm của SQL Server có thể được sử dụng để xóa cơ sở dữ liệu trước tiên và gán tên khác cho cơ sở dữ liệu khi bạn đính kèm lại cơ sở dữ liệu. Các lệnh T-SQL sau có thể được sử dụng để thực hiện việc này
Tách cơ sở dữ liệu bằng cách thực thi đoạn mã sau:
EXEC sp_detach_db 'test', 'true'
Đầu ra sẽ như thế này
Đang đính kèm cơ sở dữ liệu.
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 Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';
Đầu ra sẽ là:
Sử dụng SSMS để tách và gắn lại cơ sở dữ liệu
Điều này cũng có thể đạt được bằng cách sử dụng SSMS bằng cách làm theo các bước sau.
- Nhấp chuột phải vào cơ sở dữ liệu, chọn "bài tập" sau đó nhấp vào "Tách ra"
- Bây giờ bấm vào "đồng ý"
- Bây giờ để đính kèm cơ sở dữ liệu, hãy nhấp chuột phải vào “Cơ sở dữ liệu” trong “Trình khám phá đối tượng” và bấm vào “Đính kèm”. Một màn hình hiện ra, bạn bấm vào Thêm. Một cửa sổ khác sẽ xuất hiện với tên cơ sở dữ liệu trong đó như hình dưới đây, chọn "kiểm tra".
- Nhưng chúng tôi muốn thêm nó làm tên cơ sở dữ liệu đã sửa đổi “Test_case” loại vậy “Test_case” trong "Đính kèm dưới dạng" cái hộp. Bây giờ như thế này. Điều này sẽ đổi tên cơ sở dữ liệu của bạn.
Hơn nữa, chúng tôi sẽ thảo luận về các lỗi có thể phát sinh trong khi đổi tên cơ sở dữ liệu. Bạn sẽ cần quyền truy cập độc quyền vào cơ sở dữ liệu để đổi tên cơ sở dữ liệu, điều này đảm bảo rằng cơ sở dữ liệu không có bất kỳ kết nối cơ sở dữ liệu nào khác. Nhưng nếu không đúng như vậy có thể dẫn đến lỗi như hình bên dưới. Lỗi thậm chí có thể phát sinh khi chúng ta vô tình mở một cửa sổ khác có cùng tên cơ sở dữ liệu đã được đổi tên.
Các lỗi phát sinh khi đổi tên cơ sở dữ liệu qua SSMS và bằng cách thực hiện truy vấn:
Dưới đây đề cập đến hai lỗi có hai quan điểm khác nhau vì chúng phát sinh trong khi đổi tên cơ sở dữ liệu bằng hai phương pháp khác nhau. Lỗi 1 phát sinh khi đổi tên cơ sở dữ liệu bằng SSMS và lỗi thứ hai phát sinh trong khi đổi tên cơ sở dữ liệu bằng truy vấn. Cả hai lỗi đều hiển thị cùng một thông báo “Không thể khóa riêng cơ sở dữ liệu để thực hiện thao tác”, điều đó có nghĩa là lỗi phát sinh do người dùng không được cấp quyền truy cập độc quyền vào cơ sở dữ liệu để đổi tên cơ sở dữ liệu. Vì vậy, để đổi tên cơ sở dữ liệu, chúng ta cần đặt cơ sở dữ liệu trong “chế độ một người dùng“.
Lỗi 1: Lỗi phát sinh khi đổi tên cơ sở dữ liệu qua SSMS
“Không thể đổi tên bài kiểm tra. (ObjectExplorer)
Thông tin thêm:
Đổi tên không thành công để kiểm tra Cơ sở dữ liệu (Microsoft.SqlServer.Smo)
Đã xảy ra ngoại lệ khi thực thi một lô hoặc câu lệnh Transact-SQL.
(Microsoft.SqlServer.ConnectionInfo)
Cơ sở dữ liệu không thể bị khóa riêng để thực hiện thao tác. (Microsoft SQL Server, Lỗi: 5030) ”
Lỗi 2: Lỗi phát sinh khi đổi tên cơ sở dữ liệu bằng cách sử dụng truy vấn
“Msg 5030, Mức 16, Trạng thái 2, Dòng 2. Không thể khóa riêng cơ sở dữ liệu để thực hiện thao tác.”
Trước hết, chúng tôi sẽ tạo lại các thông báo lỗi được đề cập ở trên để hiểu rằng chúng phát sinh trong trường hợp nào và cách khắc phục chúng.
- Bấm chuột phải vào tên cơ sở dữ liệu từ “Trình khám phá đối tượng”
- Chọn đổi tên và nhập tên cơ sở dữ liệu và nhấn "đi vào" nếu nó hoạt động tốt nhưng nếu nó không hoạt động và dẫn đến lỗi như thế này “Không thể đổi tên
(ObjectExplorer). Cơ sở dữ liệu không thể bị khóa riêng để thực hiện thao tác. (Microsoft SQL Server, Lỗi: 5030) ” như trong hình bên dưới, khi đó bạn không có quyền truy cập độc quyền vào cơ sở dữ liệu để đổi tên cơ sở dữ liệu. - Lỗi này có nghĩa là SQL Server sẽ không cho phép cơ sở dữ liệu được đổi tên cho đến khi nó ở trong "Chế độ một người dùng".
- Vì vậy, bạn sẽ cần quyền truy cập độc quyền vào cơ sở dữ liệu để đổi tên cơ sở dữ liệu, để hiểu điều này, hãy mở một cửa sổ truy vấn khác và chọn cơ sở dữ liệu "kiểm tra"
- Bây giờ trong cửa sổ đầu tiên, hãy thử thực thi đoạn mã sau.
ALTER DATABASE [test] MODIFY NAME = [test_case]
- Nhưng điều này sẽ dễ xảy ra thông báo lỗi như thế này: “Msg 5030, Mức 16, Trạng thái 2, Dòng 2. Không thể khóa riêng cơ sở dữ liệu để thực hiện thao tác.”
Giải pháp:
Điều này sẽ định cấu hình cơ sở dữ liệu để khôi phục mọi giao dịch đang chờ xử lý và đặt nó vào "Chế độ một người dùng" và sau đó trở lại "Chế độ nhiều người dùng".
- Để khắc phục điều này, chúng ta cần đóng tất cả các cửa sổ khác có cùng tên cơ sở dữ liệu đang được sử dụng hoặc để đặt cơ sở dữ liệu trong "Chế độ một người dùng" bằng cách sử dụng các lệnh sau.
Thay đổi bộ kiểm tra cơ sở dữ liệu single_user với khôi phục ngay lập tức đi EXEC sp_renameb 'test', 'test_case' đi thay đổi cơ sở dữ liệu test_case đặt multi_user đi
- Đầu ra sẽ như thế này: “Các giao dịch không đủ tiêu chuẩn đang được quay trở lại. Hoàn thành khôi phục ước tính: 0%. Các giao dịch không đủ tiêu chuẩn đang được khôi phục. Hoàn thành khôi phục ước tính: 100%. Tên cơ sở dữ liệu ‘test_case’ đã được đặt. ”
Phần kết luận:
Đây là nhiều cách để đổi tên cơ sở dữ liệu. Nếu một cách không hiệu quả với bạn. Bạn có thể đi đến một cái khác. Một điều cần lưu ý rằng việc thay đổi tên cơ sở dữ liệu bằng những cách này chỉ cần đổi tên cơ sở dữ liệu. Các "tệp vật lý" vẫn có cùng tên. Như chúng ta có thể thấy trong hình bên dưới, chúng tôi đã thay đổi tên cơ sở dữ liệu từ "kiểm tra" đến “Test_case” nhưng ở vị trí thực tế, nó vẫn như cũ.
Vì vậy, cách tiếp cận đơn giản nhất là sử dụng giải pháp 4 nếu bạn cũng muốn thay đổi tên tệp. Trước tiên, bạn phải thay đổi tên của các tệp vật lý trước khi đính kèm lại các tệp và sau đó chỉ định các tệp đã đổi tên khi bạn thực hiện đính kèm lại.
Hơn nữa, ngoài việc thay đổi tên của cơ sở dữ liệu, bạn cũng cần kiểm tra xem có bất kỳ tham chiếu nào trong mã ứng dụng của bạn đến tên cơ sở dữ liệu hay không. Điều này có thể nằm trong SQL Server hoặc bên ngoài SQL Server.