Назад | Перейти на главную страницу

Ошибки SQL-запроса Autotask PSA

Мы заплатили 150 долларов компании Autotask (теперь Datto) за резервное копирование / экспорт наших данных PSA, которые они предоставили в формате .BAK файл, который является базой данных SQL.

Нам нужно извлечь данные из пользовательских полей (UDF) ресурсов Autotask PSA, поэтому в одноразовой виртуальной машине у меня есть:

  1. Установлены Microsoft SQL Server 2017 Express (последняя версия) и Microsoft SQL Server Management Studio (SSMS).
  2. Восстановил базу данных с помощью файла BAK.
  3. Определено, что нужные нам данные могут быть получены с помощью представления dbo.wh_installed_product_udf.
  4. Обнаружил, что выполнение запроса select * from wh_installed_product_udf / select * from dbo.wh_installed_product_udf выдает следующие сообщения об ошибках:

 

Msg 4121, Level 16, State 1, Procedure wh_installed_product_udf, Line 1 [Batch Start Line 0]
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fnSafeNumericConvert", or the name is ambiguous.

Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'wh_installed_product_udf' because of binding errors.

Я не смог найти решение этой проблемы в Интернете, отсюда и этот пост.

Мы определили, что основная причина заключалась в том, что зависимая функция fnSafeNumericConvert по какой-то причине больше не существует и удалось обойти это, выполнив следующие действия в SSMS:

  1. Щелчок правой кнопкой мыши по представлению dbo.wh_installed_product_udf → нажав на Design.
  2. Копирование запроса (SELECT и т.д).
  3. Удаление всех строк, содержащих fnSafeNumericConvert (в нашем случае MAX(CASE udf_value_installed_product.udf_field_id WHEN 29682891 THEN dbo.fnSafeNumericConvert(decimal_value) ELSE NULL END) AS Number_of_Licenses_as_numeric,).
  4. Выполнение оставшегося запроса вручную.