如何在 SQL 服务器中创建模式绑定的跨数据库视图
How to create schema bound, cross-database view in SQL Server
我正在尝试在 SQL Server 2008 上创建索引视图。我有一个主数据库,我无法在其中进行任何更改(在添加表、视图等方面)。但是,出于各种需要使用实时数据的原因,我需要创建一些不同的视图。
我已经在我的主数据库旁边创建了一个新数据库,所以我可以在那里创建视图。我能够很好地创建视图,但我想索引一些较大的视图。但是,当我尝试跨数据库创建架构绑定视图时,收到以下错误:
Cannot schema bind view 'dbo.Divisions' because name
'master.dbo.hbs_fsdv' is invalid for schema binding. Names must be in
two-part format and an object cannot reference itself.
因为我要跨数据库使用视图,所以我必须引用三部分格式的名称。
我的视图创建语句:
CREATE VIEW dbo.Divisions WITH SCHEMABINDING AS
SELECT master.dbo.hbs_fsdv.seq_ AS DivisionID,
master.dbo.hbs_fsdv.fs_division_desc_ AS Description
FROM master.dbo.hbs_fsdv
如何在 SQL 服务器中创建索引跨数据库视图?
简单明了。你不能。来自 MSDN 页面:
The view must reference only base tables that are in the same database as the view.
虽然(根据文档)不能直接用简单的 SQL 语句完成,但这个用例很常见并且有解决方案。
该架构必须涉及将远程表缓存到您的中央数据库中,并在它们之上构建索引视图。
可以在此处找到关于此的一些很好的注释:
和
https://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/
我正在尝试在 SQL Server 2008 上创建索引视图。我有一个主数据库,我无法在其中进行任何更改(在添加表、视图等方面)。但是,出于各种需要使用实时数据的原因,我需要创建一些不同的视图。
我已经在我的主数据库旁边创建了一个新数据库,所以我可以在那里创建视图。我能够很好地创建视图,但我想索引一些较大的视图。但是,当我尝试跨数据库创建架构绑定视图时,收到以下错误:
Cannot schema bind view 'dbo.Divisions' because name 'master.dbo.hbs_fsdv' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
因为我要跨数据库使用视图,所以我必须引用三部分格式的名称。
我的视图创建语句:
CREATE VIEW dbo.Divisions WITH SCHEMABINDING AS
SELECT master.dbo.hbs_fsdv.seq_ AS DivisionID,
master.dbo.hbs_fsdv.fs_division_desc_ AS Description
FROM master.dbo.hbs_fsdv
如何在 SQL 服务器中创建索引跨数据库视图?
简单明了。你不能。来自 MSDN 页面:
The view must reference only base tables that are in the same database as the view.
虽然(根据文档)不能直接用简单的 SQL 语句完成,但这个用例很常见并且有解决方案。
该架构必须涉及将远程表缓存到您的中央数据库中,并在它们之上构建索引视图。
可以在此处找到关于此的一些很好的注释:
和
https://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/