是否可以在数据库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
答案 0 :(得分:5)
您可以使用3部分命名创建一个使用链接服务器到另一个数据库的视图[databaseName].[schemaName].[tableName]
你不能拥有WITH SCHEMABINDING
条款。使用WITH SCHEMABINDING
可防止对视图中使用的表进行架构修改。 AGView
中的视图dbA
无法确保表格dbB
的架构未被修改。