如何在 DbA 中创建引用 DbB 中的表的视图?

Posted

技术标签:

【中文标题】如何在 DbA 中创建引用 DbB 中的表的视图?【英文标题】:How can I create a view in DbA that references a table in DbB? 【发布时间】:2011-11-22 01:40:50 【问题描述】:

是否可以在数据库 A 中设置一个引用数据库 B 中的表的视图?

我收到以下错误:

无法架构绑定视图“dbo.AGView”,因为名称“dbB..AG2Table”是 对模式绑定无效。名称必须采用两部分格式,并且 对象不能引用自己。

USE [dbA]
GO
IF EXISTS(SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[AGView]'))
DROP VIEW [dbo].[AGView]
GO
USE [dbA]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[AGView] WITH SCHEMABINDING AS

   SELECT ag.Id AS [AGId], ag.Name AS [AGName]
   FROM dbB..AG2Table agcag
   JOIN dbB..AGTable ag on ag.Id = agcag.Id
GO

【问题讨论】:

见***.com/questions/2143199/… 【参考方案1】:

您可以使用 3 部分命名 [databaseName].[schemaName].[tableName] 来创建使用链接服务器到另一个数据库的视图

不能拥有WITH SCHEMABINDING 子句。使用WITH SCHEMABINDING 可以防止对视图中使用的表进行架构修改。 dbA内的视图AGView无法保证dbB表的schema没有被修改。

【讨论】:

以上是关于如何在 DbA 中创建引用 DbB 中的表的视图?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 10g中如何创建表

Oracle 10g中如何创建表

Oracle 10g中如何创建表

如何根据database2中的表在database1中创建视图

如何在另一个数据库中的多个数据库中创建多个表的单个视图?

如何根据不同服务器中不同数据库中存在的表在服务器中的数据库中创建视图?