Почему в PowerQuery все еще используются устаревшие технологии OLEDB / ODBC? - PullRequest
0 голосов
/ 31 октября 2019

Недавно у меня возникла проблема в Excel 2016 с использованием собственных 32-битных подключений ODBC (DSN) в Windows 10 для извлечения данных из представлений и таблиц SQL в SQL Server 2008.

По какой-то причине в прошломЧерез несколько недель (октябрь 2019 г.) некоторые команды SQL, вызываемые напрямую из Excel на SQL Server через ODBC, вызывали «крах» Excel, но больше напоминали зависание. Мне пришлось убить Excel с помощью диспетчера задач.

Представления выполнялись менее чем за 2 секунды в SQL Server, но для загрузки Excel потребовалось навсегда - иногда от 5 до 20 минут!

Огорчает то, что эти шаблоны Excel работали нормально до октября 2019 года и относительно быстро (до 30 секунд). В последнее время что-то изменилось, потому что теперь некоторые запросы приводят к зависанию Excel с «подключением к источнику данных» и без дальнейшей активности.

Я преобразовал запросы в PowerQuery , используя прямуюДанные к соединению SQL Server. Тем не менее, я заметил, что M-код для этого все еще ссылается на ODBC.

Source = Odbc.Query (...

И да,выполнение запроса заняло более 20 минут!

Сценарий M выглядит следующим образом ('#' для конфиденциальности):

let
    ParamTable = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],
    wsFinal = if Text.From(ParamTable[ENTER VISIT]{0}) = null then "0" else Text.From(ParamTable[ENTER VISIT]{0}),
    Param = "'" & wsFinal & "'",
    Source = Odbc.Query("DRIVER=SQL Server;SERVER=####;DATABASE=####;", 
    "SELECT v.*
    FROM   vwEDImlRowCnt AS v
    WHERE  v.VisitID = " & Param)
in
    Source

Кто-нибудь сталкивался с этим раньше?

1 Ответ

0 голосов
/ 14 ноября 2019

Я нашел «проблему». Это не проблема. Это способ, которым Excel просто путает вещи без необходимости.

Я обнаружил, что это происходит, когда я создал обычный запрос Excel, используя «Из других источников», через вкладку данных.

enter image description here

По умолчанию генерируется запрос на подключение через ODBC .

Однако, когда я изменил «соединение» (до сих пор не знаю, почемуExcel вызывает запросы Соединения и SQL-запросы Запросы ) к PowerQuery, фактически сохраняет ODBC соединение в новом PowerQuery Язык M .

Решение для меня заключалось не в создании запроса «Из другого», а непосредственно из базы данных SQL, что, как я думал, я и сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...