如何在SQL Server中使用不同数据库的表格

4

我需要将一些表格(16个表格)传输到另一个数据库中,并且有许多存储过程(200个表格)使用这些表格。

不建议将存储过程传输到另一个数据库中。

对于我的情况:

dbA 包含 sp_xyz 存储过程,tableBtableC 表格。

sp_xyz 的内容可能是:

 SELECT A.column1, B.column2 
 FROM
 tableB A 
 JOIN tableC B ON A.fk_b_id = B.id

我们希望将 tableC 传输到数据库 dbB。那么我应该如何在最小程度上更改此存储过程呢?

在SQL Server中,您应避免使用sp_作为存储过程的前缀。它被保留供Microsoft使用(它代表“系统过程”,而不是存储过程),并且它们比其他名称访问速度慢(因为在当前数据库之前会搜索master)。通常,在SQL中,您不应需要为对象使用前缀 - 只需查询或语句中对象的位置即可告诉您它是什么类型的对象(例外:表和视图 - 但它们应该可以互换) - Damien_The_Unbeliever
不要忘记将其标记为已接受的,如果你得到了想要的信息。 - Pranay Rana
@PranayRana 我知道如何打分。但我更喜欢在两天后标记问题答案,因为我需要看到每个候选人的答案。我已经投了你的答案;) - ibrahimyilmaz
@PranayRana 你对创建这些表的视图有什么看法?存储过程通过视图来访问这些表,你觉得如何?- ibrahimyilmaz 15小时前 - ibrahimyilmaz
2个回答

9
如果您想在另一个数据库中使用表,则可以在 SQL Server 中执行以下操作(当数据库位于同一服务器上时):
Select * from [DBName].[Schema].[Table]

如果数据库在另一个服务器上,还需要指定联接服务器的名称:
Select * from [DBServer].[DBName].[Schema].[Table]

架构名称 - 在SQL Server中默认为“dbo”,请根据您的架构进行替换。


请纠正我,是 schema.db 还是 db.schema?我尝试了 db.schema 并且它对我有效。 - NoNaMe
1
@sfah - 这是一个错误,它的数据库架构有问题。 - Pranay Rana

1

我尝试了一下查询,发现您可以使用

SELECT * FROM DB_Name.Schema.Table_Name

e-g

SELECT * FROM abcDB.dbo.address

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接