SQL Azure - 데이터베이스 간에 표 복사
다음 SQL을 실행하려고 합니다.
INSERT INTO Suppliers ( [SupplierID], [CompanyName])
Select [SupplierID], [CompanyName] From [AlexDB]..Suppliers
"의 데이터베이스 및/또는 서버 이름에 대한 참조는 이 버전의 SQL Server에서 지원되지 않습니다." 오류가 발생했습니다.
서버 내부의 데이터베이스 간에 데이터를 복사하는 방법을 알고 계십니까?클라이언트에 데이터를 로드한 다음 서버에 다시 로드할 수 있지만 속도가 매우 느립니다.
오래된 일인 건 알지만, 일시적으로 해결할 수 있는 또 다른 수동 솔루션이 있었습니다.
SQL Management Studio R2 SP1을 사용하여 zure에 연결하면 소스 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 스크립트 생성을 선택합니다.
마법사를 실행하는 동안 테이블을 선택한 후 쿼리 창에 출력할 항목을 선택한 다음 고급을 클릭합니다.속성 창을 반쯤 내려가면 "스크립트할 데이터 유형" 옵션이 있습니다.이 옵션을 선택하고 "데이터 전용"으로 변경한 다음 마법사를 마칩니다.
그런 다음 스크립트를 확인하고 제약 조건에 대한 삽입을 재정렬한 다음 상단의 를 사용하여 대상 DB에 대해 실행하기만 하면 됩니다.
그런 다음 대상 데이터베이스를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택한 다음 스크립트를 해당 데이터베이스에 복사하고 실행합니다.
완료, 데이터 마이그레이션.
2015년부터 데이터베이스 간 쿼리라고도 하는 탄력적인 데이터베이스 쿼리를 사용하여 이 작업을 수행할 수 있습니다.
이 템플릿을 생성하여 사용하면 20분 만에 150만 개의 행이 복사됩니다.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION='<server>.database.windows.net',
DATABASE_NAME='<db>',
CREDENTIAL= SQL_Credential
);
CREATE EXTERNAL TABLE [dbo].[source_table] (
[Id] BIGINT NOT NULL,
...
)
WITH
(
DATA_SOURCE = RemoteReferenceData
)
SELECT *
INTO target_table
FROM source_table
안타깝게도 단일 쿼리에서 이 작업을 수행할 방법이 없습니다.
가장 쉬운 방법은 "데이터 동기화"를 사용하여 테이블을 복사하는 것입니다.이 기능의 이점은 서버 간에도 작동하고 테이블 동기화를 유지할 수 있다는 것입니다.
http://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started-sql-data-sync/
실제로 운영 환경에서 "데이터 동기화"를 실행해 본 적은 없지만, 한 번만 작업해도 괜찮습니다.
"데이터 동기화"와 관련된 한 가지 문제는 데이터베이스에 많은 수의 "동기화" 개체가 생성된다는 것이며, Azure 포털에서 실제 "데이터 동기화"를 삭제하면 해당 개체가 정리되거나 정리되지 않을 수 있습니다.이 문서의 지침에 따라 모든 항목을 수동으로 정리합니다.
https://msgooroo.com/GoorooTHINK/Article/15141/Removing-SQL-Azure-Sync-objects-manually/5215
SQL-Azure는 USE 문을 지원하지 않으며 사실상 교차 데이터베이스 쿼리를 지원하지 않습니다.따라서 위의 쿼리는 실패할 수밖에 없습니다.
DB를 다른 SQL zure db로 복사/백업하려면 SQL zure의 "Same-server" 복사 또는 "Cross-Server" 복사를 사용할 수 있습니다.이 msdn 기사 참조
Red Gate Software의 SQL Data Compare와 같은 툴을 사용하여 데이터베이스 컨텐츠를 한 곳에서 다른 곳으로 이동하고 SQL Azure를 완벽하게 지원할 수 있습니다. 14일 무료 평가판을 사용하면 필요한 작업을 수행할 수 있는지 확인할 수 있습니다.
전체 공개:레드 게이트 소프트웨어에서 일합니다.
이전 게시물이지만 다른 옵션은 Sql Azure 마이그레이션 마법사입니다.
다음 단계를 사용하십시오. 직접적인 방법은 없습니다.하지만 어떤 속임수로 우리는 할 수 있습니다.
1단계: [AlexDB] 내에 공급업체 테이블의 구조가 동일한 다른 테이블을 생성합니다. 공급업체로 말하기백업
2단계 : 원하는 내부의 공급업체 테이블과 동일한 구조의 테이블 생성DB
3단계 : AlexDB 간의 데이터 동기화 활성화.공급업체 및 원하는 DB..공급업체
4단계: AlexDB에서 데이터 잘라내기.공급업체
5단계: AlexDB에서 데이터 복사.공급업체AlexDB에백업..공급업체
6단계: 이제 동기화 실행
데이터가 원하는 DB에 복사되었습니다.
sp_addlinkedrvlogin이 포함된 onprem 버전이 있는 경우 소스 및 대상 데이터베이스 모두에 대해 Linked Server를 설정한 다음 쿼리에 삽입을 실행할 수 있습니다.
다음 블로그에서 "Windows Azure SQL 데이터베이스에 대한 연결된 서버 및 분산 쿼리에 대한 SQL Server 지원"을 참조하십시오. https://azure.microsoft.com/en-us/blog/announcing-updates-to-windows-azure-sql-database/
좋아요, 답을 찾은 것 같아요 - 말도 안 돼요.데이터를 클라이언트로 이동하거나 다른 트릭을 수행해야 합니다.SQL Azure의 한계: 연결당 하나의 DB만 사용할 수 있지만 다른 아이디어는 모두 환영합니다!
SQL Management Studio에서 "연결된 서버"를 쉽게 추가한 다음 전체 테이블 이름을 쿼리할 수 있습니다.플랫 파일이나 내보내기 테이블이 필요 없습니다.이 방법은 온프리미엄 데이터베이스에 대해서도 작동하며 그 반대도 마찬가지입니다.
예.
select top 1 ColA, ColB from [AZURE01_<hidden>].<hidden>_UAT_RecoveryTestSrc.dbo.FooTable order by 1 desc
select top 1 ColA, ColB from [AZURE01_<hidden>].<hidden>_UAT_RecoveryTestTgt.dbo.FooTable order by 1 desc
몇 가지 옵션(해결 방법 대신):
- 데이터가 있는 스크립트 생성
- Azure에서 데이터 동기화 사용
- MS Access(액세스에 GUID가 없는 것과 같이)를 여러 제외하고 MS Access(가져오기 및 내보내기) 사용
- Red Gate와 같은 타사 도구를 사용합니다.
안타깝게도 아직까지는 그렇게 하기 위한 쉽고 기본적인 방법이 없습니다.
SSMS SQL Server 가져오기 및 내보내기 기능을 추천합니다.이 기능은 선택한 테이블의 여러 연결 구성 및 교차 서버 복사본을 지원합니다.난 시도했다.NET SQL 서버 커넥터 - Azure SQL 데이터베이스에 매우 잘 작동합니다.
언급URL : https://stackoverflow.com/questions/6572754/sql-azure-copy-table-between-databases
'programing' 카테고리의 다른 글
240개 이상의 요소로 구성된 어레이를 루프할 때 성능에 큰 영향을 미치는 이유는 무엇입니까? (0) | 2023.05.13 |
---|---|
임의의 영숫자 문자열을 생성하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
express.js를 사용하는 프록시 (0) | 2023.05.08 |
bower init - amd, es6, 글로벌 및 노드 간의 차이 (0) | 2023.05.08 |
없는 경우 폴더 경로 만들기(VBA에서 저장) (0) | 2023.05.08 |