2014-10-03 3 views
0

우리는 'D1'과 'D2'라고하는 두 개의 데이터베이스가 있습니다. 각 데이터베이스에는 D1의 T1과 D2의 T2라는 하나의 테이블이 있습니다. 는 지금은 ... 코드를 아래와 같이 데이터베이스 D2 뭔가 테이블에 액세스 데이터베이스 D1에 저장 프로 시저를 작성하려면SQL Azure - 데이터베이스 간 쿼리

USE D1 
GO 
Create or replace sp_test 
(
    --other detials 

    SELECT * FROM D2.dbo.T2 
) 
GO 

나는이 작업을 수행 할 수있는 방법 어떤 생각?

참고 : 이전에는 두 데이터베이스를 동일한 서버에 사용했습니다. 그래서 나는 어떤 문제에 직면하지 않았다. 하지만 이제 Azure로 마이그레이션 한 후 우리가 어떻게이 일을 할 수 있는지 전혀 알지 못합니다. 또한 내 정보에 따라 SQL-Azure에서 사용할 수있는 연결된 서버 기능이 없습니다.

답변

2

푸른 SQL 데이터베이스 (또는 SQL 애저) 그 간 데이터베이스 쿼리를 치우는 이외의 주위에 일이 없기 때문에, 데이터베이스 간 쿼리를 지원하지 않습니다 ...

0

당신이 SQL 애저 V12있는 경우 귀하의 서버에는 동일한 버전의 데이터베이스가 몇 개 있으며 데이터베이스 간 트랜잭션에 영구적으로 의존하지 않습니다 (몇 가지 의미 만 있습니다. 데이터베이스 간 쿼리가 아니라 응용 프로그램 수준에서 수행해야 함). sp_bindsession을 사용하려고 할 수 있습니다. 운이 좋다면 두 서버를 같은 서버에 둘 수 있습니다. 권장 사항은 애플리케이션 개발이 아니라 일회성 일입니다.

0

이제 SQL Azure에서 가능합니다. 근본적으로 D1에 외부 데이터 소스를 작성하고 D2에 목표 테이블과 일치하는 D1의 영원한 테이블을 작성해야합니다. 당신은 물론이

USE D1 
-- Not sure if the following line is necessary. Omit it and if SQL Squeals, put it in. 
CREATE MASTER KEY ENCRYPTION BY PASSWORD='MasterKeyPassword'; 
CREATE DATABASE SCOPED CREDENTIAL D2User WITH IDENTITY='D2UserID', SECRET='D2UserPassword'; 
CREATE EXTERNAL DATA SOURCE D2DataSource 
WITH 
(
    TYPE=RDBMS, 
    LOCATION='d2.database.windows.net', 
    DATABASE_NAME='D2', 
    CREDENTIAL=D2User 
); 
CREATE EXTERNAL TABLE [dbo].[T2](
    [ID] [INT] NOT NULL, 
    [Info] [NVARCHAR] (25) NULL 
) 
WITH 
(
    DATA_SOURCE = D2DataSource 
); 

같은

무엇인가 등 자신의 선택 암호, 데이터베이스 위치와 관련된 모든 세부 사항을 대체하는