gpt4 book ai didi

sql - 如何使用 Schemabound 创建包含来自 2 个不同数据库的表的索引 View

转载 作者:行者123 更新时间:2023-12-03 02:59:39 24 4
gpt4 key购买 nike

这是难题......

我在同一个 SQL Server 2008 R2 实例上有 2 个数据库。

DB-One 用于网站,DB-two 是每天从转储中更新的数据哑元。

现在我想在 DB-One 上创建一个索引 View ,在其中引用 DB 2 中的 2 个表。

所以我的查询是这样的

SELECT 
TBA.COLA, TBB.COlA
FROM
DB-ONE.TBA.COLA A
JOIN
DB-TWO.TBB.COLA B ON (A.Id= B.Id)

现在这个查询显然可以正常工作...但是,如果我尝试使用以下语法创建 View ,则会出现错误

CREATE VIEW TESTVIEW WITH SCHEMABINDING AS

错误:

Cannot schema bind view 'TESTVIEW' because name 'DB-ONE.TBA.COLA A' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.

如果这种方法行不通,那么有人可以提出任何替代方案吗?

最佳答案

如错误消息中所述,使用架构绑定(bind)时“名称必须采用两部分格式”,这意味着它们必须采用 [schema].[tablename] 格式,因此表不能位于 2 个单独的数据库中。

  • 选项 1:安排一个 ETL 作业,将 View 数据保留在 Db-One 的表中,根据需要对该表建立索引,然后安排 ETL 在每日“数据转储”后加载。

运行一次

USE [DB-ONE]
GO
CREATE TABLE dbo.myReport(/*column structure of your indexed view goes here*/);
go
--index table as needed
go

然后安排它在每日“数据转储”加载到 DB-TWO 后从 DB-ONE 运行:

use [DB-ONE]
GO
insert into dbo.myReport(/*list of columns*/)
SELECT TBA.COLA, TBB.COlA
FROM DB-ONE.TBA.COLA A
JOIN DB-TWO.TBB.COLA B ON (A.Id= B.Id)
;
  • 选项 2:您可以将 DB-TWO 表中的所有数据复制到 DB-ONE 中,然后仍然在 DB-ONE 表上创建索引 View 。

关于sql - 如何使用 Schemabound 创建包含来自 2 个不同数据库的表的索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com