Почему я не могу запросить представление synapse без сервера из azure data studio или databricks?

#databricks #serverless #azure-synapse #delta-lake #azure-data-studio

#базы данных #без сервера #лазурный-синапс #дельта-озеро #azure-data-студия

Вопрос:

Когда я запрашиваю свою дельта-таблицу из synpase studio, я вижу, что все данные в порядке.

Но когда я подключаюсь через data studio через логин sql (или ссылки на данные), кажется, что я не могу запросить его :

 CREATE or alter view stock as SELECT *  FROM  OPENROWSET(  BULK 'https://tesdvsrc18732.dfs.core.windows.net/adlse-fr/be_stock/',  FORMAT = 'DELTA'  ) AS [result]  

Начал выполнение запроса в Строке 1 Msg 15151, Уровень 16, Состояние 1, Строка 1 Не удается найти УЧЕТНЫЕ ДАННЫЕ ‘https://tesdvsrc18732.dfs.core.windows.net/adlse-fr/be_stock/’, потому что его не существует или у вас нет разрешения. Общее время выполнения: 00:00:00.025

Я также не могу видеть представление в пользовательском интерфейсе : введите описание изображения здесь

Однако я вижу это при подключении через Azure Active Directory.

Любые предложения, замечания или экспертные знания будут высоко оценены. Я получаю такое же сообщение об ошибке от azure databricks

Ответ №1:

Я нашел способ делать то, что хотел. Поэтому я размещаю это здесь.

На синапсе

 CREATE MASTER KEY  CREATE DATABASE SCOPED CREDENTIAL [SasToken_MyStorage] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '?sv=2020-08-04amp;ss=bfq****************************************************************************************************************************************************PA='; GO CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH ( LOCATION = 'https://tesdvsrc18732.dfs.core.windows.net', CREDENTIAL = [SasToken_MyStorage] )  

Я думаю, что это тоже необходимо, но не уверен :

 GRANT CONTROL ON DATABASE SCOPED CREDENTIAL :: [SasToken_MyStorage] TO userDatabricks  

На базах данных/data studio

 query = """ CREATE or alter view dbo.stock as SELECT *  FROM  OPENROWSET(  BULK '/adlse-fr/be_stock/',  FORMAT = 'DELTA',  DATA_SOURCE = 'MyDataSource'  ) AS [result] """  stmt = sql_con.createStatement() stmt.executeUpdate(query) stmt.close()  

Комментарии:

1. Рад узнать, что ваша проблема решена. Через 48 часов вы можете принять его в качестве ответа( нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный). Это может быть полезно для других членов сообщества. Спасибо.