효율성을 어떻게 측정하고 있습니까? 어느 것이 더 빠를까요? 어느 것이 대상에서 더 적은 자원을 소비합니까? 소스에서? 이 행의 열은 몇 개의 행과 어떤 종류의 데이터 유형입니까? 연결된 서버를 통해 TVF를 실행할 수 있습니까 (대상 SQL 2008 이상입니까?) ? TVF에서 데이터를 가져 오는 경우이 데이터의 1 : 1 마이그레이션을 어떻게 보장합니까?
그 질문에서 벗어난 ...
업데이트 1
ETL (Extract-Transform-Load)을 찾고있는 것처럼 들립니다. 원본에서 데이터를 가져 와서 필요한 변환을 적용한 다음 대상에로드 할 수있는 SSIS (SQL Server Integration Services)를 사용하는 것이 좋습니다 . 이것은 변형에 따라 매우 간단한 패키지 인 것처럼 들립니다.
일반적인 통념에 따르면 연결된 서버 접근 방식은 링크로 이동하여 로컬 서버로 데이터를 가져온 다음 로컬 서버에서 모든 논리 (필터, 조인 등)를 적용합니다. 연결된 서버에서 데이터를 가져 오는 데 약간의 오버 헤드가 있지만 대부분의 처리는 로컬에서 처리됩니다.
OPENQUERY 메소드는 원격 서버에서 처리를 수행하고 로컬 서버에서 "필터링 된 결과"를 수신합니다.
연결된 서버를 통해 TVF를 실행할 수 있더라도 원격 처리 및 로컬 처리 (세트에 적용 할 추가 논리가 있다고 가정) 두 세계에서 최악의 상황이 발생합니다 .
앞으로 나아가기로 결정한 방법에 따라 OPENQUERY
데이터 대량 가져 오기 / 내보내기 방법 도 살펴 보겠습니다 .
그 모든 것을 말하면서 ...
SQL Server에서 원본과 대상이 모두 대상인 경우 (그리고 대상이 하위 버전이 아닌 경우) 데이터를 백업하고 복원하지 않는 이유는 무엇입니까? 이것은 진정한 데이터 마이그레이션입니다. 다음은 몇 가지 코드입니다.
BACKUP DATABASE <DatabaseName, sysname, DatabaseName>
TO DISK=N'<backup_location, varchar, BackupLocation>.bak'
WITH INIT, FORMAT, COMPRESSION, COPY_ONLY
RESTORE DATABASE <NewDatabaseName, sysname, NewDatabaseName>
FROM DISK = N'<backup_location, varchar, BackupLocation>\
<DatabaseName, sysname, DatabaseName>.bak'
WITH
MOVE '<DataFileName, sysname, DataFileName>' TO '<DataMDFPath, nvarchar(600), DataMDFPath>',
MOVE '<LogFilePath, sysname, LogFilePath>' TO '<LogLDFPath, nvarchar(600), LogLDFPath>',
REPLACE;
SSMS에서 템플릿을 사용하는 방법에 대해서는 이 답변 을 참조하십시오 .