Перекрестные ссылки между хранилищами данных в Azure SQL Server

В одном экземпляре SQL Server у меня есть эти 2 хранилища данных:

sqlwarehouse1 
sqlwarehouse2

А в sqlwarehouse2 у меня есть таблица dbo.test.

Как я могу обратиться к этой таблице из sqlwarehouse1?

Возможна ли такая связь между хранилищами данных в хранилищах данных Azure SQL?


person Anna    schedule 07.02.2020    source источник
comment
Для этого вам нужно будет настроить внешние источники данных.   -  person Larnu    schedule 07.02.2020
comment
Спасибо, Ларну. Не могли бы вы уточнить это. Вы имели в виду, что таблица dbo.test должна указывать на внешний источник, такой как blob, а sqlwarehouse1 должен ссылаться на blob?   -  person Anna    schedule 07.02.2020
comment
Я не очень часто использую Azure, а если и использую, то никогда не приходилось этого делать. Однако есть ответы, такие как Не удается выполнить запрос между базами данных в SQL Azure   -  person Larnu    schedule 07.02.2020
comment
Можете ли вы описать бизнес-цель, которую вы пытаетесь достичь (не чего вы хотите, а почему)?   -  person GregGalloway    schedule 09.02.2020


Ответы (1)


Azure SQL DW (теперь называется Azure Synapse Analytics) в настоящее время не может подключиться к другому DW. В настоящее время Polybase просто читает из файлов.

Вы можете создать небольшую базу данных SQL Azure для подключения к DW следующим образом:

 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'pass@word1'; 
 CREATE DATABASE SCOPED CREDENTIAL DWCredential 
 WITH IDENTITY = 'usernameHere', 
 SECRET = 'passwordHere';  


 CREATE EXTERNAL DATA SOURCE DWDataSource WITH 
    (TYPE = RDBMS, 
    LOCATION = 'yourservername.database.windows.net', 
    DATABASE_NAME = 'yourdw', 
    CREDENTIAL = DWCredential, 
) ;



CREATE EXTERNAL TABLE [dbo].MyName 
(   [ProductKey] [int] NOT NULL,
    [ProductAlternateKey] [nvarchar](25) NULL,
    [EndDate] [datetime] NULL,
    [Status] [nvarchar](7) NULL) 
WITH 
( DATA_SOURCE = DWDataSource
,SCHEMA_NAME = N'dbo',  
        OBJECT_NAME = N'YourDwTableName') 


select * from MyName



--or run an exact query against SQL DW directly:
exec sp_execute_remote @data_source_name = N'DWDataSource', @stmt  = N'SELECT distinct ModelName from dbo.DimProduct'

person GregGalloway    schedule 08.02.2020
comment
Большое спасибо, Грег, я разработаю это и обновлю здесь ... Итак, внешнюю таблицу в базе данных SQL я могу вызвать из sqlware house2? - person Anna; 09.02.2020
comment
Привет, Грег. Используя приведенное выше решение, я могу создать внешнюю таблицу в базе данных SQL и таблицы запросов в DW1... Теперь, как я могу сослаться на внешнюю таблицу в базе данных SQL из DW2?.. Я думаю, что мы выполнили половину части. ...Пожалуйста, предложите мне остальные - person Anna; 09.02.2020
comment
Справочник Microsoft говорит, что Azure SQL DW поддерживает только хранилище BLOB-объектов в качестве внешнего источника данных невозможно-создать-внешнюю-таблицу-в-azure-sql-хранилище данных, указывающее на azure-sql-server?forum=AzureSQLDataWarehouse" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums /sqlserver/en-US/ - person Anna; 09.02.2020
comment
Одним из найденных решений является экспорт данных из DW1 в Blob и импорт в DW2 в виде внешней таблицы из Blob docs.qubole.com/en/latest/user-guide/analyze/tsql.html - person Anna; 09.02.2020
comment
CREATE EXTERNAL TABLE AS SELECT для экспорта в Blob из DW1, а выбор из внешней таблицы в DW2, безусловно, является вариантом с самой высокой пропускной способностью, если вы хотите переместить большой объем данных. - person GregGalloway; 09.02.2020
comment
@ Анна, вы можете читать из обоих DW из своей БД. Вы не можете легко писать в DW2, используя предложенное мной решение для БД. Если вы последуете моему ответу, ваш план изменится. Но таким образом ответ будет работать хорошо, если вам нужно объединить небольшие сводные результаты из нескольких DW в БД. - person GregGalloway; 09.02.2020