Я подключился к Datamart через SSMS. За Datamart находится база данных Azure SQL.
Я пытаюсь узнать свое имя пользователя. Я использовал следующий запрос:
SELECT USER_NAME();
Я получаю эту ошибку:
Неподдерживаемая функция SQL USER_NAME. Строка:1, Позиция:8
Я прочесал интернет, но я еще не нашел ничего работающего.
Да, это правильно. Я имею в виду Power BI Datamart.
Хотя они «говорят» на TDS и имеют доступную конечную точку SQL, используемый язык не является T-SQL, и, насколько я могу судить, до сих пор нет официальной документации о том, что язык поддерживает и что не поддерживает. Единственное, что я смог найти даже близко к этому, это то, что, по-видимому, есть функция metadata.fn_relationships, как задокументировано здесь, но это случайное упоминание — единственное. Язык должен иметь синтаксис и семантику помимо SQL, они просто еще не написали его. :П
Это полезно знать. Я попытаюсь узнать, смогу ли я связаться с кем-нибудь из команды разработчиков PowerBI по этому поводу. Правильно ли говорить, что SQL работает нормально, но функции T-SQL, скорее всего, не будут работать? Пожалуйста, не стесняйтесь публиковать это как решение, чтобы я мог пометить его как ответ.
Что они, по-видимому, сделали, так это написали свой собственный небольшой движок, который анализирует SQL и, вероятно, выборочно пересылает или транслирует операторы базовому экземпляру Azure (или экземплярам?), выполняющему реальную работу. Немного сложно сказать только по документации, насколько он сложен (то есть, что он делает и не отправляет базовому движку), но, по-видимому, как вы обнаружили, запрос не имеет ничего, кроме встроенного вызов функции не будет переведен/перенаправлен. Несмотря на то, что это предварительная версия, я думаю, что документы по языку должны появиться раньше, чем позже, но я не в команде.
Пожалуйста, смотрите мой обновленный комментарий ниже к ответу. В итоге заработало. Хотя я согласен с тем, что необходима дополнительная информация о Power BI Datamart. Кажется, мне тоже запрещено создавать таблицы. Я тоже не могу предоставить себе эту привилегию. Также я заметил, что таблицы - это просто «представления».
В MS SQL SERVER вы должны использовать
SELECT CURRENT_USER;
Оп написал в комментарии, что ему нужно закрыть открытое окно запроса и открыть новое, после этого оно работает, как шарм.
Или получить имя пользователя Windows вошедшего в систему пользователя
SELECT SUSER_NAME() LoggedInUser
Я попробовал это, и я получил ту же ошибку. Incorrect syntax near (. Line:1, Position:12. Просто примечание, я использую SQL Server Management Studio.
О, извините, я неправильно прочитал базу данных, которую вы используете, попробуйте измененный ответ
Я получил эту ошибку при вводе: Unsupported sql function SUSER_NAME. Line:1, Position:9
Оба показывают результат в sql server 2019, все команды выполняются на конечных точках Azure Ad.
Вопрос на самом деле не о SQL Server. Витрины данных Power BI предлагают конечную точку, совместимую с SQL Server (по крайней мере, совместимую с протоколом), но на самом деле не реализуют T-SQL напрямую, так же как есть множество вещей, которые «говорят» на проводных протоколах MySQL или Postgres, но на самом деле не являются MySQL или Постгрес.
Сработало, сработало SELECT CURRENT_USER; сработало. Я закрыл окно запроса и снова открыл его в SSMS. Запустил запрос, и он вернул пользователя. Я не уверен, что там происходит.
Так что этот ответ на самом деле неверен.
@ Nick.McDermaid нет, первый ответ уже был правильным. после закрытия окна запроса все работает нормально
«Витрина данных» — довольно общий термин, который, к сожалению, также используется для конкретных продуктов. Чтобы было ясно, вы говорите о витрине данных Power BI, верно?