SQL Server 데이터베이스의 이름을 바꾸는 방법은 무엇입니까?

원래 이름이 데이터베이스에 저장된 데이터와 관련이없는 프로젝트를 기반으로했거나 이전에 일시적으로 이름을 지정했고 지금은 수정하려고했기 때문에 때때로 데이터베이스 이름을 변경해야합니다. 데이터베이스 이름을 바꾸는 이유에 관계없이이 기사에서는 데이터베이스 이름을 바꾸는 방법, 그렇게하는 동안 발생할 수있는 오류 및 수정 방법에 대해 설명합니다.

따라서 데이터베이스의 이름을 바꾸려면 아래에서 설명하는 방법 중 하나를 따라야합니다. 우선, 이름을 바꿀 데이터베이스를 만들어야합니다.

데이터베이스 생성 :

SSMS (SQL Server Management System) 에서 데이터베이스를 선택합니다 . 없는 경우 다음 절차에 따라 만들 수 있습니다.

  1. "개체 탐색기" 에서 " 데이터베이스 "를 마우스 오른쪽 버튼으로 클릭하고 "새 데이터베이스" 옵션을 선택합니다.
  2. 왼쪽 창에 창이 나타납니다.
  3. 오른쪽 팬에 "일반" 유형 데이터베이스 이름을 선택하고 "확인 "을 누릅니다 . 데이터베이스가 생성됩니다

SQL Server에서 데이터베이스 이름을 바꾸는 방법은 여러 가지가 있으며, 특정 방법에서 지원하는 버전과 함께 아래에서 자세히 설명합니다. 나중에 데이터베이스 이름을 변경하는 동안 발생하는 오류와이를 수정하는 절차에 대해서도 설명합니다.

방법 1 : SSMS 이름 바꾸기 옵션을 사용하여 SQL Server 데이터베이스 이름 바꾸기

이것은 데이터베이스의 이름을 바꾸는 가장 간단한 방법입니다. 그렇게하려면 이렇게 진행해야합니다.

  1. 개체 탐색기에서 데이터베이스 이름을 마우스 오른쪽 버튼으로 클릭합니다.
  2. "이름 바꾸기"를 선택 하고 데이터베이스 이름을 입력 한 다음 "입력"을 누릅니다.

방법 2 : SSMS를 사용하여 SQL Server 데이터베이스 이름 바꾸기

창에있는 폴더의 이름을 바꾸는 것처럼 데이터베이스 이름을 바꾸는 가장 간단한 방법입니다. 그렇게하려면 이렇게 계속해야합니다. Windows 폴더의 이름을 바꾸는 것처럼 데이터베이스를 클릭하여 이름을 바꿉니다.

방법 3 : T-SQL을 사용하여 SQL Server 데이터베이스 이름 바꾸기

SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 및 2017의 경우이 명령이 작동합니다. 다음 문을 실행합니다.

ALTER DATABASE [test] MODIFY NAME = [test_cases]

출력은 "데이터베이스 이름 'test_cases'가 설정되었습니다."입니다. 아래 그림에서 볼 수 있습니다.

SQL Server 2000을 사용하는 경우 아래의 T-SQL 명령을 사용하여 데이터베이스의 이름을 변경할 수 있습니다. SQL 2005, 2008, 2008R2, 2012, 2014, 2016 및 2017에서는 여전히 작동하지만 일부 단계에서는 Microsoft 단계적으로 폐지 될 것이라고 주장합니다.

방법 4 : 분리 및 연결을 사용하여 SQL Server 이름 바꾸기

SQL Server의 분리 및 연결 기능을 사용하면 먼저 데이터베이스를 제거하고 데이터베이스를 다시 연결할 때 데이터베이스에 다른 이름을 할당 할 수 있습니다. 다음 T-SQL 명령을 사용하여이를 수행 할 수 있습니다.

다음 코드를 실행 하여 데이터베이스분리합니다 .

EXEC sp_detach_db 'test', 'true'

출력은 다음과 같습니다.

데이터베이스 연결.

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" 에서 " Databases" 를 마우스 오른쪽 버튼으로 클릭하고 "Attach"를 클릭 합니다 . 화면이 나타나면 추가를 클릭합니다. 아래와 같이 데이터베이스 이름이있는 다른 창이 나타납니다 . "테스트"를 선택 합니다.
  4. 하지만 수정 된 데이터베이스 이름 "test_cases" 로 추가하고 싶으 므로 "다음으로 첨부" 상자 에 " test_case" 를 입력 합니다 . 이제 이렇게. 데이터베이스 이름이 변경됩니다.

또한 데이터베이스 이름을 변경하는 동안 발생할 수있는 오류에 대해 설명합니다. 데이터베이스의 이름을 바꾸려면 데이터베이스에 대한 단독 액세스가 필요합니다. 이렇게하면 데이터베이스에 다른 데이터베이스 연결이 없습니다. 그러나 그렇지 않은 경우 아래와 같은 오류가 발생할 수 있습니다. 이름을 바꿔야하는 동일한 데이터베이스 이름을 가진 다른 창을 실수로 열 때도 오류가 발생할 수 있습니다.

SSMS를 통해 데이터베이스 이름을 바꾸고 쿼리를 실행하여 발생하는 오류 :

아래에 언급 된 두 오류에는 두 가지 다른 방법을 사용하여 데이터베이스 이름을 바꾸는 동안 발생하기 때문에 두 가지 다른보기가 있습니다. SSMS를 사용하여 데이터베이스 이름을 바꾸는 동안 오류 1이 발생하고 쿼리를 사용하여 데이터베이스 이름을 바꾸는 동안 두 번째 오류가 발생합니다. 두 오류 모두 "작업을 수행하기 위해 데이터베이스를 독점적으로 잠글 수 없습니다" 라는 동일한 메시지를 표시합니다.  이는 사용자에게 데이터베이스 이름을 변경하기 위해 데이터베이스에 대한 단독 액세스 권한이 부여되지 않았기 때문에 오류가 발생 함을 의미합니다. 따라서 데이터베이스의 이름을 변경하려면 " 단일 사용자 모드 "로 데이터베이스를 설정해야합니다 .

오류 1 : SSMS를 통해 데이터베이스 이름을 바꾸는 동안 오류가 발생했습니다.

“테스트의 이름을 바꿀 수 없습니다. (ObjectExplorer)

추가 정보:

데이터베이스 테스트 (Microsoft.SqlServer.Smo)의 이름 바꾸기 실패

Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다.

(Microsoft.SqlServer.ConnectionInfo)

작업을 수행하기 위해 데이터베이스를 독점적으로 잠글 수 없습니다. (Microsoft SQL Server, 오류 : 5030)”

오류 2 : 쿼리를 사용하여 데이터베이스 이름을 바꾸는 동안 오류가 발생했습니다.

 "Msg 5030, 수준 16, 상태 2, 줄 2입니다. 작업을 수행하기 위해 데이터베이스를 독점적으로 잠글 수 없습니다."

우선 위에서 언급 한 오류 메시지를 재현하여 어떤 시나리오에서 발생하는지, 어떻게 해결해야하는지 이해합니다.

  1. "개체 탐색기" 에서 데이터베이스 이름을 마우스 오른쪽 버튼으로 클릭합니다.
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

따라서 가장 간단한 방법은 파일 이름도 변경하려는 경우 솔루션 4를 사용하는 것입니다. 파일을 다시 첨부하기 전에 먼저 실제 파일의 이름을 변경 한 다음 다시 첨부 할 때 이름이 바뀐 파일을 지정해야합니다.

또한 데이터베이스 이름을 변경하는 것 외에도 애플리케이션 코드에 데이터베이스 이름에 대한 참조가 있는지 확인해야합니다. 이는 SQL Server 내부 또는 SQL Server 외부에있을 수 있습니다.