다른 데이터베이스의 SQL Server 이름 바꾸기 테이블


10

SQL Server에서 다른 데이터베이스의 테이블 이름을 바꾸는 방법이 있습니까? 현재 데이터베이스에 있고 TEMP 테이블의 다른 데이터베이스로 데이터를 마이그레이션 한 다음 해당 데이터베이스의 TEMP 테이블 이름을 바꾸는 경우. 데이터베이스 이름이 다른 서버에서 변경 될 수 있으므로 "USE [database]"를 사용하고 싶지 않습니다.

미리 도움을 주셔서 감사합니다!

답변:


6

이를 위해서는 동적 SQL을 사용해야합니다. 문자열을 작성하고 실행하십시오. 대상 데이터베이스의 이름을 알고 있으면 모든 것이 정상입니다.

use CurrentDB
declare @x varchar(1000), @otherDb sysname = 'NewDB';

set @x = 'use ' + @otherDB + '

EXEC sp_rename ''dbo.temp'', ''temp2''
'
exec (@x);
print @x;
GO

3

확실히 가능하지만 가능하면 동적 SQL을 피해야한다는 것을 기억 하십시오 . 보안 및 성능 문제가 쉽게 발생합니다.

귀하의 질문에 대해 약간 생각한 후에 올바른 이름으로 다른 테이블을 만든 다음 TEMP 테이블에서 단순히 테이블에 삽입하는 것이 더 합리적이지 않습니까? TEMP 테이블이 실제로 로컬 / 전역 임시 테이블 또는 테이블 변수라고 가정합니다.


3

동적 SQL 사용

  USE MyDB1
  GO

  DECLARE @db_name   NVARCHAR(20)   = 'myDB2'
  DECLARE @sql       NVARCHAR(1000)

  SET @sql = N'EXEC '+ quotename(@db_name)+ '..sp_rename ''[MyTable]'', ''[YourTable]'';';

  PRINT @sql;
  EXEC SP_EXECUTESQL @sql;

또는 EXEC에서 데이터베이스를 지정하여 :

USE MyDB1
GO

EXEC MyDB2..sp_rename 'MyTable', 'YourTable'

http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx에 명시된 바와 같이


1
MyDB2..sp_rename훨씬 간단합니다!
Michel de Ruiter

0

SSMS를 사용할 수도 있습니다. SSMS를 사용하면 얻을 수있는 장점은 참조 및 제약 조건을 거치고 이름을 바꿀 수 있다는 것입니다. SSMS에서 개체 브라우저를 열기 만하면 원하는 테이블을 찾아 이름을 바꿀 수 있습니다. 이름이 변경되는 테이블을 참조하는 다른 테이블에 외래 키 제약 조건이있는 경우 해당 키 정의의 테이블 이름을 새 테이블 이름으로 바꿉니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.