我们向 Autotask(现为 Datto)支付了 150 美元,用于备份/导出我们的 PSA 数据,他们.BAK
以 SQL 数据库文件的格式提供这些数据。
我们需要从 Autotask PSA 资产的用户定义字段 (UDF) 中提取数据,因此,在一次性 VM 中,我有:
- 安装了 Microsoft SQL Server 2017 Express(最新)和 Microsoft SQL Server Management Studio (SSMS)。
- 使用 BAK 文件恢复了数据库。
- 确定我们需要的数据可以通过使用视图来检索
dbo.wh_installed_product_udf
。 - 发现执行查询
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 中执行以下操作来解决它:dbo.wh_installed_product_udf
→ 单击Design
。SELECT
等)。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,
)的行。