需要从不同的源数据库访问视图。 我正在将 Azure data studio 与 SQL 数据库项目一起使用。首先,我将源数据库导出到 dacpac 中,并在新项目中创建了指向源 dacpac 的数据库参考点。
CREATE VIEW [dbo].[v_activitypointer] AS
SELECT * FROM [$(dvdbname)].[dbo].[ap_partitioned];
GO
它使用 * all 列与上述语句一起工作,并且能够成功构建和部署项目。当我更改为指定列时,我需要几列而不是所有列,但它失败并出现 SQL71561:SqlCompulated 列错误
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>
我尝试关闭 VerificationExtract 和VerifyExtendedTransactSQLObjectName 但没有用。
Build error SQL71561: SqlComputedColumn: [dbo].[v_activitypointer].[ucode] has an unresolved reference to object [$(dvdbname]).[dbo].[ap_partitioned].[ucode]. [c:dbtcicdtestcicdtest.sqlproj]
要解决上述错误,您可以按照以下说明操作:
确保表中存在
[ucode]
列。
尝试清除对话框中的“数据库变量”字段,然后转到项目属性并取消选中“为常见对象启用扩展 Transact-SQL 验证”以允许项目成功构建。
将所有引用更改为如下:
SchemaName.TableName
而不是DatabaseName.SchemaName.TableName
。
欲了解更多信息,您可以参考以下链接: