Baa*_*ali 5 sql-server sqlclr sql-server-data-tools visual-studio-2015
我们正在使用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
Run Code Online (Sandbox Code Playgroud)
--update
在Assemblies文件夹下,对于AddressFormatting.dll,我将BuildAction设置为Build,然后在References下我设法看到Model Aware属性,我现在已经设置为True.在此之后,我收到以下错误:
它指向错误的文件是AddressFormatting.dll
这个问题完全在SSDT内,与模式无关或将程序集加载到GAC中(这两个问题均在问题注释中提到)。出于某种原因,即使您将程序集从SQL Server导入到项目中,SSDT也看不到它。您在对问题的评论中提到您“将该程序集作为参考导入到我的项目中”,但是这可能应该像我的测试中那样自动发生。
您需要转到“解决方案资源管理器”中的“参考”文件夹,并将程序集的“模型感知”属性更改为“真”(此步骤解决了以下SO问题中的相同错误:如何解决VS2013错误SQL71501:过程X对组件Y?的引用尚未解决。如果您手动添加引用,则“模型感知”可能默认为“假”。
通过导入项目(“模型感知”设置已设置为“真”)并将其设置为“假”以获取错误并返回“真”以删除该错误,我能够重现此错误(和修复)。错误。
另外,如果由于某种原因您确实卡在该错误中,并且即使执行了“清理解决方案”,“重建解决方案”,甚至关闭并重新启动Visual Studio,“正确”设置似乎也不起作用,那么您需要删除$(ProjectDir)\ project_name.dbmdl文件。为了删除该文件,无法在Visual Studio中打开该项目,因为该项目将被Visual Studio锁定。或者,您可以转到“项目属性”,然后在“项目设置”选项卡上,将“目标平台”更改为另一个版本,然后返回到原来的版本(类似于其他答案中所述,但是不需要在将其翻转回原始版本之前进行“构建”或“重建”),因为这样做有副作用。
请注意,在关闭项目之前,不会写入.dbmdl文件。因此,如果首次打开项目时该文件不存在,或者如果您切换了“目标平台”,则在关闭解决方案,卸载项目或退出Visual Studio之前,您将看不到.dbmdl文件。 。执行“全部保存”不会将此文件写入磁盘!
小智 4
我也遇到了这个问题,通过将 Visual Studio 中的 SQL 兼容性级别更改为 2012,重新编译项目,然后将其更改回 2008 的兼容性级别,然后执行一个干净的项目,然后重新编译,它得到了神秘的解决。
| 归档时间: |
|
| 查看次数: |
1883 次 |
| 最近记录: |