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

gen*_*eek 1 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
Run Code Online (Sandbox Code Playgroud)

Ada*_*ger 5

您可以使用3部分命名创建将链接服务器用于其他数据库的视图 [databaseName].[schemaName].[tableName]

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