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

时间:2011-11-22 01:40:50

标签: sql-server sql-server-2008

是否可以在数据库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

1 个答案:

答案 0 :(得分:5)

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

不能拥有WITH SCHEMABINDING条款。使用WITH SCHEMABINDING可防止对视图中使用的表进行架构修改。 AGView中的视图dbA无法确保表格dbB的架构未被修改。