【问题标题】:How to create schema bound, cross-database view in SQL Server如何在 SQL Server 中创建架构绑定的跨数据库视图
【发布时间】:2015-06-13 14:40:32
【问题描述】:

我正在尝试在 SQL Server 2008 上创建索引视图。我有一个主数据库,我无法对其进行任何更改(在添加表、视图等方面)。但是,由于需要处理实时数据的各种原因,我需要创建一些不同的视图。

我在我的主数据库旁边创建了一个新数据库,因此我可以在那里创建视图。我可以很好地创建视图,但我想索引一些较大的视图。但是,当我尝试创建模式绑定视图跨数据库时,我收到以下错误:

无法架构绑定视图“dbo.Divisions”,因为名称 “master.dbo.hbs_fsdv”对模式绑定无效。名字必须在 两部分格式,对象不能引用自身。

由于我要使用视图跨数据库,因此我必须以三部分格式引用名称。

我对视图的创建声明:

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 Server 中创建索引跨数据库视图?

【问题讨论】:

    标签: sql-server database view schema


    【解决方案1】:

    简单明了。你不能。从 MSDN 页面:

    视图必须仅引用与视图位于同一数据库中的基表。

    https://msdn.microsoft.com/en-us/library/ms191432.aspx

    【讨论】:

      【解决方案2】:

      虽然(根据文档)不能直接使用简单的 SQL 语句来完成,但这种用例非常常见并且有解决方案。

      架构必须涉及将远程表缓存到您的集中式数据库中,并在它们之上构建索引视图。

      可以在这里找到一些关于这方面的好笔记:

      What is the best way to cache a table from a (SQL) linked server view?

      https://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多