You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL71561错误:跨库视图指定列时引用未解析问题求助

问题:SQL Database项目引用DACpac后指定列创建视图报SQL71561错误

使用Azure Data Studio的SQL Database项目,已将源数据库导出为DACpac并添加数据库引用。用SELECT *创建跨库视图可正常构建部署,但指定具体列(如[ucode])时触发SQL71561错误,提示列引用未解析。已尝试关闭VerificationExtract和VerifyExtendedTransactSQLObjectName配置,问题仍存在。


可正常构建的视图代码

CREATE VIEW [dbo].[v_activitypointer] AS
SELECT  *  FROM  [$(dvdbname)].[dbo].[ap_partitioned];
GO

触发错误的视图代码

CREATE VIEW [dbo].[v_activitypointer] AS
SELECT  [ucode]  FROM  [$(dvdbname)].[dbo].[ap_partitioned];
GO

错误信息

c:\dbt\cicdtest\v_activitypointer.sql(2,13,2,13):
Build error SQL71561: SqlView: [dbo].[v_activitypointer] has an unresolved reference to object [$(dvdbname)].[dbo].[ap_partitioned].[ucode]. [c:dbtcicdtestcicdtest.sqlproj]

c:dbtcicdtestv_activitypointer.sql(2,13,2,13):
Build error SQL71561: SqlComputedColumn: [dbo].[v_activitypointer].[ucode] has an unresolved reference to object [$(dvdbname]).[dbo].[ap_partitioned].[ucode]. [c:dbtcicdtestcicdtest.sqlproj]

stdout:     0 Warning(s)
stdout:     2 Error(s)

.sqlproj文件内容

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
    <Sdk Name="Microsoft.Build.Sql" Version="0.1.12-preview" />
    <PropertyGroup>
        <Name>cicdtest</Name>
        <ProjectGuid>{25E6C2C6-1C07-4516-BDC0-06E5AF0DCE07}</ProjectGuid>
        <DSP>Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider</DSP>
        <ModelCollation>1033, CI</ModelCollation>
        <VerificationExtract>false</VerificationExtract>
        <VerifyExtendedTransactSQLObjectName>False</VerifyExtendedTransactSQLObjectName>
    </PropertyGroup>
    <ItemGroup>
        <SqlCmdVariable Include="dvdbname">
            <Value>$(SqlCmdVar__1)</Value>
            <DefaultValue>dataverse_uunq6705</DefaultValue>
        </SqlCmdVariable>
    </ItemGroup>
    <ItemGroup>
        <ArtifactReference Include="..\dataverse_uunq6705.dacpac">
            <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
            <DatabaseVariableLiteralValue>dataverse_uunq6705</DatabaseVariableLiteralValue>
        </ArtifactReference>
    </ItemGroup>
    <Target Name="BeforeBuild">
        <Delete Files="$(BaseIntermediateOutputPath)\project.assets.json" />
    </Target>
</Project>

可行解决方案

  1. 校验DACpac完整性:用SqlPackage.exe等工具展开DACpac,确认[dbo].[ap_partitioned]表的ucode列元数据存在,避免导出时遗漏列定义。
  2. 修正变量映射:确保ArtifactReference的DatabaseVariableLiteralValue与SqlCmdVariable的DefaultValue完全一致,无大小写或拼写差异。
  3. 忽略指定警告:在.sqlproj的<PropertyGroup>中添加配置,强制跳过71561错误校验:
    <SuppressTSqlWarnings>71561</SuppressTSqlWarnings>
    
  4. 用同义词中转引用:创建指向源表的同义词,通过同义词访问列,绕开跨库引用解析问题:
    CREATE SYNONYM [dbo].[ap_partitioned] FOR [$(dvdbname)].[dbo].[ap_partitioned];
    GO
    
    CREATE VIEW [dbo].[v_activitypointer] AS
    SELECT [ucode] FROM [dbo].[ap_partitioned];
    GO
    
  5. 升级SDK版本:当前使用的是预览版0.1.12-preview,升级到最新稳定版,修复已知的引用解析bug。

内容的提问来源于stack exchange,提问作者user17554171

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:17:07