원격 SQL Server를 로컬 호스트에 (전체 데이터가 아닌) 복제하려고합니다. 원격 서버에서 스키마 생성을위한 스크립트를 생성했으며 스크립트가 성공적으로 실행되었습니다 (localhost
). 이제이 테이블에 데이터를 가져 오려고합니다. 문제는 원격 서버에 수백만 개의 레코드가 있고 모든 테이블을 내 테이블에 버려두고 싶지 않다는 것입니다. 나는 단지 테이블 당 최대 1000 개의 레코드라고 말하고 싶다. 나는 이것을 어떻게 성취합니까? 이것은 가능한 것입니까? SQL Server 2012 및 SQL Server Management Studio를 사용하고 있습니다.처음 1000 개 정도의 SQL Server 데이터 스크립트
1
A
답변
0
먼저, 다음과 같은 코드를 사용하여 원격 서버에 로컬 서버를 연결 :
EXEC sp_addlinkedServer N'remoteSqlServer\Instance', N'SQL Server'
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'remoteSqlServer\Instance', @useself = 'FALSE', @rmtuser = N'user', @rmtpassword = N'password'
위의 스크립트에서 원격 SQL Server 인스턴스 이름, 사용자 및 암호를 대체해야합니다. 다시
INSERT INTO [LocalTableName]
SELECT TOP 1000 * FROM [remoteSqlServer\Instance].[DatabaseName].[schema].[RemoteTableName]
의 대체 :
그럼 당신은 당신이, 말, 잡아 단지 가장 최근의 기록, 또는 다른 기준으로 할 경우에 의해 순서를 지정할 수 있습니다 ...이 같은 문을 실행 서버 인스턴스, 데이터베이스 이름, 스키마 (아마도 'dbo') 및 테이블 이름.
테이블에 IDENTITY 또는 TIMESTAMP 열이 포함되어 있으면 SELECT 문에 * 대신 INSERT 문에서 해당 열을 제외한 모든 열을 실제로 나열해야합니다.
이 정보가 도움이되기를 바랍니다.
테이블에 외래 키 제약 조건이 있습니까? –
SELECT TOP 1000 .... – Steve
총 596 개의 테이블이 있고이 테이블 각각에 최소한 하나의 외래 키 참조가 있습니다. – Siddu