2016-05-31 4 views
1

Ich habe zwei verschiedene Datenbanken und brauche Informationen von beiden DBs. Ich schaffte es, die Daten wie folgt zu erhalten:Azure SQL - Ansicht mit Abfrage über mehrere Datenbanken erstellen

create master key encryption by password = 'test' 

create database scoped crendetial testcredentials with identity = '[email protected]', secret = '[email protected]' 

-- CREATE DATA SOURCE -- 
create external data source RemoteDataSource with 
(
    type = RDBMS, 
    location = 'secret.database.windows.net', 
    database_name = 'testDB_Dev', 
    credential = testcredentials 
) 

-- CREATE TABLES -- 
create external table [RemoteDepartment] 
(
    [ID] [int], 
    [Name] [nvarchar](50) 
) 
with 
(
    data_source = RemoteDataSource, 
    schema_name = 'dbo', 
    object_name = 'Department' 
); 

Von hier aus kann ich jetzt select, join, und vieles mehr. (Employee-Tabelle stammt aus dem anderen DB (die, die ich bin Abfrage))

select e.Name, e.Role, d.Name from Employee as e inner join 
    RemoteDepartment as d on d.ID = e.DepartmentId 

Mit der folgenden Ausgabe

|---Name---|---Role---|---Name--| 
| Louise | Manager | HR | 
| Tim | Finances | Admin | 

Hier ist mein Problem. Während dies alles sehr nett und schnell funktioniert, kann ich nicht meinen Kopf herumschleppen oder irgendwelche Ressourcen online finden, wie man Ansichten erzeugt, indem man diese Methode benutzt, um zwei getrennte DBs abzufragen.

Ich habe versucht, die folgenden:

create master key encryption by password = 'test' 

create database scoped crendetial testcredentials with identity = '[email protected]', secret = '[email protected]' 

-- CREATE DATA SOURCE -- 
create external data source RemoteDataSource with 
(
    type = RDBMS, 
    location = 'secret.database.windows.net', 
    database_name = 'testDB_Dev', 
    credential = testcredentials 
) 

-- CREATE TABLES -- 
create external table [RemoteDepartment] 
(
    [ID] [int], 
    [Name] [nvarchar](50) 
) 
with 
(
    data_source = RemoteDataSource, 
    schema_name = 'dbo', 
    object_name = 'Department' 
); 

CREATE VIEW test_view AS 
    select e.Name, e.Role, d.Name from RemoteEmployee as e inner join 
     RemoteDepartment as d on d.ID = e.DepartmentId 

Aber einen Compiler-Fehler bekommen

falsche Syntax zu sagen: 'CREATE VIEW' muss die einzige Anweisung im Batch sein

Ich habe versucht, alles außer der select Anweisung zu entfernen, aber das funktioniert nicht (der Compiler hat keine Ahnung, was RemoteDepartment ist eigentlich)

+0

Sorry, Sie sagen, dass Sie zwei verschiedene Datenbanken haben, aber ich sehe nur 2 Tabellen in einer Datenbank 'testDB_Dev' –

+0

Ja natürlich. Ich habe den Beitrag bearbeitet. Die Tabelle "Employee" stammt aus der Datenbank, die abgefragt wird. Meine Entschuldigung – Detilium

+0

Ich schlage vor, Sie erstellen die 2 Tabellen in einer Datenbank, sonst, mit 2 Datenbanken verschwenden zu viel Ressource –

Antwort

-1

Das klingt wie nur ein einfacher Fall nicht in der Lage, Query-Datenbankabfragen mit einer Azure SQL DB-Instanz zu tun.

+0

Aber ich kann? Hast du gelesen was ich geschrieben habe? Ich kann die Daten bekommen, ich kann einfach keine Ansicht erstellen. – Detilium

Verwandte Themen