2012-03-30 4 views
0

각 고객의 데이터에 대한 마스터 스키마로 사용하는 SqlServer 2008 R2에 템플릿 스키마 (dbo)가 있습니다. 어떻게 dbo의 모든 객체를 새로운 스키마로 쉽게 "복사"할 수 있습니까?기존 스키마에서 새 스키마 준비

ALTER SCHEMA [target] TRANSFER [source].[objectname]은 원본 원본 개체를 제거하며 이후 복사본을 위해 필요합니다.

VSTSDB 빌드 프로세스가 있으므로 출력을 가져 와서 dbo에서 찾거나 바꿀 수는 있지만 프로비저닝 프로세스와 대비되는 빌드 프로세스와 비슷합니다.

샤링 세계에서 전형적인 프로세스 인 것처럼 보이지만,이 프로세스를 위해 툴링을 많이하는 것은 아닙니다.

답변

-1

불행히도 직접적인 방법은 없습니다. 당신은이를 사용할 수 있습니다

SELECT 'ALTER SCHEMA NewSchema TRANSFER dbo.'+name 
    FROM sys.objects 
    WHERE type IN ('U','V','P','Fn') 
    AND SCHEMA_NAME(SCHEMA_ID) = 'dbo' 
+1

코드는 개체를 한 스키마에서 다른 스키마로 이동하지만 OP는 개체 복사를 요구합니다. – Pondlife

0

한 가지 방법은 당 고객 인 스키마 이름 및 기타 값 sqlcmd variables을 사용하는 것입니다, 당신은 당신이 당신의 DDL 스크립트를 실행할 때 변수를 설정해야합니다.

+0

아무것도 SQL Server 2008 r2에 내장 된 것처럼 보이지 않습니다.이 작업을 지원합니까? – BozoJoe

+0

@BozoJoe 무슨 뜻인지 모르겠습니다. sqlcmd 변수는 SQL Server에 내장되어 있거나 SQL 코드를 실행하기위한 클라이언트 도구에 내장되어 있습니다. 이는 의도 한 목적 중 하나입니다. "복사"란 의미가 각 경우마다 다르므로 "스키마 복사"기능이 없습니다. 데이터가 포함되어 있습니까? 또는 권한? – Pondlife

관련 문제