T SQL 정보 스키마?

database information-schema sql sqlbulkcopy tsql

문제

우리는 많은 데이터를 가지고 있으며 백업을 만드는 데 드는 시간을 절약하기 위해 지정된 회사 코드 / 회사만을 포함하는 현재 데이터베이스 사본을 작성해야했습니다.

필자는 TSQL 스크립트, 정보 스키마 및 대량 복사본에 대해 조사 할 것을 들었습니다. 가장 좋은 방법은 무엇이고, 어떻게하면 최신 데이터베이스 복사본을 로컬로 시작할지 생각하는 것입니다.

스크립트는

맨 위에 새 데이터베이스의 이름과 회사 코드의 ID 또는 회사 테이블의 ID를 지정할 수 있습니다.

그리고 새로운 데이터베이스를 생성하고 관련 데이터에만 복사하십시오.

수락 된 답변

아마도 최선의 방법에 근접하지는 않을 것입니다. 그러나 당신이 할 수있는 100 가지 방법 중 1 가지.

declare @databasename nvarchar(100) = 'roflcopter'
, @destination = 'myschema.mytable'
declare @companylist nvarchar(max) = (select stuff( select ',' +convert(nvarchar(5),companyid) from companytable where database = @databasename),1,1,'')

declare @query nvarchar(max) 
= N'use ['+@databasename+']
insert into '+@destination+' /* maybe add dynamic columns here */
select /*same dynamic columns */
from mytable /*or another variable*/
where companyid in('''+@companylist+''')
'
exec (@query)

다른 변수를 추가하여 대상, 미래의 데이터베이스 이름 (생성하는 경우) 및 원하는 것을 선언하십시오 ... 동적 SQL은 느리고 성 가시고 재 연결될 수 있습니다. exec ()와 executeql 간의 차이점에 대해 sp_executesql을 검사하려고 할 수 있습니다.

거기에 시스템 프로 시저의 톤 ... FKs, 열 이름, 데이터 형식, 퍽스를 찾을 것들 ... 당신이 동적으로 당신의 현재 스키마를 사용하여 (내가 여기에서 도움이) 그 시스템 절차를 사용하여 건물을 복잡하게 만들 수 있습니다, C #을 쉽게 '스크립트 생성'을 실행합니다.

당신이 생각하고있는 잘못된 방향 일 수도 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.