我可以从另一个数据库服务器在我的数据库服务器中创建视图吗

Posted

技术标签:

【中文标题】我可以从另一个数据库服务器在我的数据库服务器中创建视图吗【英文标题】:Can I create view in my database server from another database server 【发布时间】:2013-03-22 15:14:53 【问题描述】:

是否可以在我的数据库服务器中创建另一个服务器数据库表的视图?

假设您在server1 上有一个名为Testing 的数据库,而您在server2 上有另一个数据库Testing2。是否可以在server1 的数据库Testing 中创建Testing2 的表Table2 的视图?

另外,我使用的是 SQL Server 2008。

如果您有任何问题,请告诉我。

谢谢,

【问题讨论】:

取决于您使用的数据库产品(SQL 只是查询语言 - 不是 产品....) 【参考方案1】:

是的,你可以。首先,您需要使用sp_addlinkedserver 之类的方式链接到另一台服务器。

然后您可以使用 4 部分命名来访问数据。这是一个例子:

create view v_server1_master_tables as
    select *
    from server1.master.information_schema.tables;

【讨论】:

【参考方案2】:

可以通过链接服务器。但是,我不鼓励您基于来自另一台服务器的表创建视图,因为每次使用此视图时,很可能会从链接服务器中选择整个表 - 优化器可能不知道此表结构来发出任何过滤器。 我在工作中看到了它,没有人知道大表上的select * from 查询来自哪里,这会减慢数据库的速度,而且它似乎在另一个服务器的某个地方被使用,在一个简单的查询中。 至少您应该检查您的解决方案是否不会导致上述问题。也许其他人可以详细说明优化器在处理链接服务器时的行为方式?

【讨论】:

以上是关于我可以从另一个数据库服务器在我的数据库服务器中创建视图吗的主要内容,如果未能解决你的问题,请参考以下文章

iphone - 在我的应用程序中创建网络服务器;需要处理 POST 请求以上传文件

从另一个类和线程更新 UI 项

如何在我的React应用程序中创建JS文件?

在数据框中创建列,按因子级别从另一列中采样

从 Python 程序中创建 PostgreSQL 角色/用户

在 mysql 表 auto_increment 中创建一个 ID(事后)