Các bước cơ bản để rename hoàn toàn một database trong SQL Server

Vốn là một .Net Developer kiếm cơm bằng việc code C# và làm việc với Sql Server, thế mà thực sự số lượng bài viết về lĩnh vực này lại khá ít, hầu như chưa có bài nào. Hôm nay nhân dịp mình note lại một tip các bước để đổi tên database hoàn toàn trong SQL Server bao gồm đổi tên .mdf và .ldf file.

Bình thường khi đổi tên database nó chỉ rename id của database đó thôi, mà không hề rename file mdf và ldf. Nên nếu bạn tạo mới hoặc restore một database khác có cùng tên với mdf kia nó sẽ báo lỗi và không cho. Chính vì thế chúng ta cần rename hoàn toàn một database trong SQL Server với các bước sau.

Các bước

  • Bước 1: Copy sql query này, thay test bằng tên database bạn muốn đổi tên.
1
2
3
4
5
6
7
8
9
10
11
12
13
-- Thay tên database `test` bằng tên database bạn muốn đổi tên
USE [master]
GO

--Tìm tất cả file mdf và ldf liên quan đến database cần rename
SELECT
name AS [Logical Name],
physical_name AS [DB File Path],
type_desc AS [File Type],
state_desc AS [State]
FROM sys.master_files
WHERE database_id = DB_ID(N'test')
GO

Kết quả:

  • Bước 2: Copy sql query này, thay test bằng tên database bạn muốn đổi tên.
1
2
3
4
5
6
7
8
9
10
11
12
13
-- Thay tên database `test` bằng tên database bạn muốn đổi tên
USE [test];

-- Thay đổi giá trị key logicals hai value `test` và `test_log` lấy từ cột `Logical Name`
-- nếu không thay đổi thì sẽ văng ra warning The logical file name "test" is already in use. Choose a different name. Cơ mà kệ nó
ALTER DATABASE test MODIFY FILE (NAME = test, NEWNAME = test);
-- nếu không thay đổi thì sẽ văng ra warning The logical file name "test_log" is already in use. Choose a different name. Cơ mà kệ nó
ALTER DATABASE test MODIFY FILE (NAME = test_log, NEWNAME = test_log);

-- Thay đổi đường dẫn
-- Copy đường dẫn select từ bên kia (cột `DB File Path`) dán vào đây và đổi tên file mdf và ldf
ALTER DATABASE test MODIFY FILE (NAME = 'test', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_new_name.mdf');
ALTER DATABASE test MODIFY FILE (NAME = 'test_log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_new_name.ldf');

Chú ý:

  • ALTER DATABASE test MODIFY FILE (NAME = test, NEWNAME = test); NAME là giá trị của cột Logical Name ở bước 1, NEWNAME là giá trị mới
  • ALTER DATABASE test MODIFY FILE (NAME = test_log, NEWNAME = test_log); tương tự như trên
  • ALTER DATABASE test MODIFY FILE (NAME = 'test', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_new_name.mdf'); NAME là giá trị NEWNAME bạn vừa đổi ở trên, FILeNAME là đường dẫn tới file, bạn đổi tên mới ở đây luôn
  • Tương tự

Kết quả

  • Bước 3
  • Bước 4
  • Bước 5
  • Bước 6

Thực hiện đổi tên với giá trị mới

Bước 7

Chạy lại query đầu tiên với tên database mới, để check kết quả.

Và giờ bạn đã đổi thành công rồi đấy.