Mit "SELECT INTO" in Azure SQL Daten aus einer anderen Datenbank kopieren
Ich versuche, die Initialisierung einer SQL-Datenbank in Azure zu automatisieren. Bei einigen (Nachschlag-) Tabellen müssen die Daten bei jeder Initialisierung aus einer Quell-DB in die neue DB kopiert werden.
Zu diesem Zweck führe ich eine Abfrage aus, die @ enthäl
SELECT * INTO [target_db_name]..[my_table_name] FROM [source_db_name].dbo.[my_table_name]
n diesem Punkt wird eine Ausnahme ausgelöst, die mir sagt, dass
In dieser Version von SQL Server wird keine Bezugnahme auf den Datenbank- und / oder Servernamen in 'source_db_name.dbo.my_table_name' unterstützt.
achdem ich dies untersucht habe, habe ich festgestellt, dass es jetzt möglich ist, auf eine andere Azure SQL-Datenbank zu verweisen, sofern diese als externe Datenquelle konfiguriert wurde. Hie undHie]
So habe ich in meinem Ziel-DB die folgende Anweisung ausgeführt:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL cred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE [source_db_name]
WITH
(
TYPE=RDBMS,
LOCATION='my_location.database.windows.net',
DATABASE_NAME='source_db_name',
CREDENTIAL= cred
);
CREATE EXTERNAL TABLE [dbo].[my_table_name](
[my_column_name] BIGINT NOT NULL
)
WITH
(
DATA_SOURCE = [source_db_name],
SCHEMA_NAME = 'dbo',
OBJECT_NAME = 'my_table_name'
)
Aber dieSELECT INTO
ie @ -Anweisung liefert immer noch die gleiche Ausnahme.
Weiterhin ein einfachesSELECT * FROM [source_db_name].[my_table_name]
gibt die Ausnahme "Ungültiger Objektname 'source_db_name.my_table_name'" aus.
Was vermisse ich
AKTUALISIERE
Ich habe das Problem gefunden:CREATE EXTERNAL TABLE
erstelltwas scheint @ zu se eine Tabelle in der Ziel-DB. Um dies abzufragen, sollte der Name der Quell-DB nicht verwendet werden. Also, wo ich versagt habe:
SELECT * FROM [source_db_name].[my_table_name]
Ich sehe, dass ich wirklich abfragen sollte
SELECT * FROM [my_table_name]