2013-08-20 1 views
1

상속 된 Sql Server 2008 데이터베이스가 있습니다. 많은 응용 프로그램과 SSIS 패키지가 해당 데이터베이스에서 작동합니다. 너무 오래 전에 데이터베이스의 범위가 변경되었고 많은 새로운 테이블이 추가되었습니다. 그 결과 많은 테이블 이름 (심지어 데이터베이스 이름 자체)이 더 이상 의미가 없으므로 매우 혼란스러운 스키마가됩니다.이전 버전과 호환되는 방식으로 SQL Server 테이블 이름을 변경할 수 있습니까? 예 : 영구 별칭을 추가 하시겠습니까?

테이블 이름을 즉시 바꿀 수 있고 앱과 프로세스를 변경하여 새 이름을 사용할 수는 있지만 혼란과 중단 시간은 허용되지 않습니다.

모든 리팩토링이 완료 될 때까지 새 테이블 또는 이전 테이블 이름을 참조하는 데 사용할 수있는 테이블 (예 : 영구 별칭)에 대체 이름을 추가하는 방법이 있습니까?

+0

아마 만드는 조회수 (간단한 선택으로 구현)을? 뷰는 별칭으로 처리 될 수 있습니다. –

+0

나는 그것을 남겨 두거나, 이름을 바꾸고, 뷰를 생성한다. http://stackoverflow.com/questions/1526068/sql-server-table-and-column-alias-for-legacy-applications –

답변

4

동의어를 먼저 작성하십시오.

CREATE SYNONYM dbo.SensibleName FOR dbo.CrazyName; 

지금 당신의 코드베이스에 CrazyName에 대한 모든 참조를 찾을 대신 SensibleName을 참조하도록 업데이트합니다. 당신은 당신이 그들 모두를 발견했다 생각하면, 당신은 결국 실행할 수 있습니다

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
BEGIN TRANSACTION; 
    DROP SYNONYM dbo.SensibleName; 
    EXEC sp_rename N'dbo.CrazyName', N'SensibleName', N'OBJECT'; 
COMMIT TRANSACTION; 

당신이 이름을 분별해야 할 경우, 당신이보기를 사용하여 그렇게해야 할 것이다, 동의어, 하위 집합 만 덮음 같이 데이터베이스 수준 개체의.

Some other info here.

2

당신은 sp_rename로 이름을 변경 한 후 동의어 추가 할 수 있습니다 해결책이 될 수있는이 테이블

CREATE SYNONYM OldTableName FOR NewTableName 
관련 문제