Pagamos $ 150 à Autotask (agora Datto) por um backup / exportação de nossos dados de PSA que eles forneceram no formato de um .BAK
arquivo que é um banco de dados SQL.
Precisamos extrair dados dos campos definidos pelo usuário (UDFs) dos ativos do Autotask PSA, portanto, em uma VM descartável, tenho:
- Instalou o Microsoft SQL Server 2017 Express (mais recente) e o Microsoft SQL Server Management Studio (SSMS).
- Restaurou o banco de dados usando o arquivo BAK.
- Determinado que os dados que precisamos podem ser recuperados usando a view
dbo.wh_installed_product_udf
. - Descobriu que a execução da consulta
select * from wh_installed_product_udf
/select * from dbo.wh_installed_product_udf
falha com as seguintes mensagens de erro:
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.
Não consegui encontrar uma solução para isso on-line, por isso este post.
Determinamos que a causa raiz era que a função dependente
fnSafeNumericConvert
não existia mais por algum motivo e contornamos isso fazendo o seguinte no SSMS:dbo.wh_installed_product_udf
→ clicando emDesign
.SELECT
etc).fnSafeNumericConvert
(no nosso caso,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,
).