gpt4 book ai didi

sql-server - SQL 71501 有未解析的程序集引用

转载 作者:行者123 更新时间:2023-12-02 22:45:58 24 4
gpt4 key购买 nike

我们正在使用 SSDT 工具,并将 Visual Studio 2015 和目标平台设置为 SQL Server 2008。我们被这个引发错误的函数所困扰,需要帮助来修复它。

 SQL71501: Function: [dbo].[GetFormattedAddress] has an unresolved reference to Assembly [AddressFormatting]


CREATE FUNCTION [dbo].[GetFormattedAddress]
(@AddressID INT, @CompleteAddress BIT)
RETURNS NVARCHAR (4000)
AS
EXTERNAL NAME [AddressFormatting].[AddressFormatting.UserDefinedFunctions].[GetFormattedAddress]

GO

--更新

在Assemblies文件夹下,对于AddressFormatting.dll,我将BuildAction设置为Build,然后在References下我设法看到了Model Aware属性,我现在已将其设置为True。现在我收到以下错误:

SQL46010: enter image description here 附近的语法不正确

它指向错误的文件是AddressFormatting.dll

最佳答案

这个问题完全在 SSDT 中,与架构或将程序集加载到 GAC 无关(这两个问题都在问题的评论中提到)。由于某种原因,即使您将程序集从 SQL Server 引入到您的项目中,SSDT 也看不到它。您在对该问题的评论中提到您“将该程序集作为我的项目中的引用导入”,但这可能应该像我的测试中那样自动发生。

您需要转到“解决方案资源管理器”中的“引用”文件夹,并将程序集的“模型感知”属性更改为“True”(此步骤解决了此 S.O. 问题中的相同错误: How to resolve VS2013 Error SQL71501: Procedure X has an unresolved reference to Assembly Y? )。如果您手动添加引用,“Model Aware”可能默认为“False”。

我能够通过导入项目(“Model Aware”设置已设置为“True”)并将其设置为“False”以获取错误并返回到“True”来重现此错误(以及修复)消除错误。

<小时/>

此外,如果由于某种原因您确实遇到了该错误,并且“正确的”设置似乎不起作用,即使在执行“清理解决方案”、“重建解决方案”,甚至关闭并重新启动 Visual 之后也是如此Studio,则需要删除$(ProjectDir)\project_name.dbmdl文件。为了删除该文件,该项目无法在 Visual Studio 中打开,因为它将被 Visual Studio 锁定。或者,您可以转到“项目属性”,然后在“项目设置”选项卡上,将“目标平台”更改为另一个版本,然后返回到原来的版本(与其他答案中描述的类似,但不需要在将其翻转回原始版本之前执行“构建”或“重建”),因为这会产生删除 .dbmdl 文件的副作用。

请注意,直到项目关闭后才会写入 .dbmdl 文件。因此,如果您第一次打开项目时该文件不存在,或者切换“目标平台”,那么您将看不到 .dbmdl 文件,直到您关闭解决方案、卸载项目,或退出 Visual Studio。执行“全部保存”不会将此文件写入磁盘!

关于sql-server - SQL 71501 有未解析的程序集引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com