2011-11-22 25 views
1

是否可以在数据库A中设置一个引用数据库B中的表的视图?如何在DbA中创建一个引用DbB中的表的视图?

,我发现了以下错误:

Cannot schema bind view 'dbo.AGView' because name 'dbB..AG2Table' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.

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

请参阅http://stackoverflow.com/questions/2143199/tsql-create-a-view-that-accesses-multiple-databases –

回答

5

您可以使用三部分命名[databaseName].[schemaName].[tableName]

不能有使用链接的服务器到另一个数据库的视图条款WITH SCHEMABINDING条款。使用WITH SCHEMABINDING可防止对视图中使用的表进行架构修改。 dbA中的视图AGView无法确保表格模式dbB未被修改。

+0

非常感谢您的信息! – JaJ

相关问题