回答
是的,只要你有权限。如果您有Linked Server设置,您也可以执行跨服务器。
跨数据库实例:
SELECT * FROM localTable as lt
INNER JOIN otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
跨服务器为例(假设您已经创建了链接服务器):
SELECT * FROM localTable as lt
INNER JOIN ServerName.otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
是的。只需使用3部分命名语法database_name.schema_name.table_name
即可。
您还需要启用跨数据库所有权链接。 (不推荐)或使用this approach.
使用完全限定的表名。例如,如果你在数据库基础知识,并希望访问数据库XYZ表的表,访问它XYZ.dbo.table
(这可能是DBO或别的东西取决于表的所有者,通常是DBO)
应该注意,从SQL Server 2005以来,架构和所有者并不是一回事。在我们的许多应用数据库中,我们使用架构来区分用户数据和应用程序元数据。在我们的仓库环境中,我们使用模式来识别相关的表/过程,以便我们可以轻松地将安全性应用于对象组。我很少看到他们用来识别物体所有者。 – Rozwel 2011-03-25 18:24:58
试试像下面这样:
SELECT a.userID, b.usersFirstName
FROM databaseA.dbo.TableA a
INNER JOIN database B.dbo.TableB b ON a.userID = b.userID
如果您发布代码,XML或数据样本,**请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)以精确格式化并语法突出显示它!如果您发布错误消息,请**使用blockquotes('“')正确格式化错误消息。 – 2011-03-25 18:25:33
另外一个技术,在某些环境中更好地工作是定义一个同义词远程表。这可以让你有一个指向远程对象的本地引用。如果您处于必须迁移事物的环境中,并且从一个环境到另一个环境的相对位置可能不一样,那么此功能尤其有用。这里有一个快速概览:
- 1. 针对数据库项目中的数据测试存储过程
- 2. 在熊猫不同的数据库中存储过程 - Sql server
- 3. 无法在不同的数据库中执行存储过程?
- 4. 针对存储过程的情况?
- 5. 针对多个数据库创建存储过程的查询意外失败
- 6. H2数据库中的存储过程
- 7. 对数百个相同的数据库使用一组存储过程
- 8. java - 存储过程数据库链接
- 9. linq针对存储过程的2个不同执行返回的相同数据?
- 10. 针对相同数据的不同过滤数据提供程序?
- 11. 从脚本中跟踪存储过程存储的数据库
- 12. 将表值参数传递到跨不同数据库的存储过程
- 13. 使用存储库模式提供对不同数据存储的访问
- 14. 在两个数据库之间同步存储过程?
- 15. ASP.NET - 使用Oracle 9i数据库/数据库存储过程
- 16. 存储过程将脚本数据库对象写入文件?
- 17. 存储过程比使用LINQ对数据库更安全吗?
- 18. 存储数据库程序
- 19. 通过Trello API存储针对卡片的任意数据?
- 20. 存储过程中的H2数据库选择数据
- 21. 存储过程不会插入数据
- 22. 存储过程不更新数据
- 23. 如何在指针数组中存储不同类的对象
- 24. AWS不同地区的数据和数据库存储
- 25. 两个多线程对象可以从数据库调用两个不同的存储过程吗?
- 26. 插入存储过程不创建数据库记录
- 27. SQL Server中的存储过程(不同)?
- 28. (my)SQL数据库 - 存储不同类型的相同值
- 29. 引用T-SQL存储过程中的另一个数据库,而不对数据库名进行硬编码
- 30. 使用存储过程从数据库检索数据表
hrm,好吧。数据库位于不同的服务器上,我没有链接的服务器。我想我不能那么做。 – Tony 2011-03-25 18:29:49
@Tony如果你的数据存在于不同的服务器上,那么你将不得不建立一个链接服务器或移动数据。对您的环境一无所知,但我们有一套工作,每天晚上将一小部分仓库数据复制到应用程序服务器,以便我们可以访问我们所有的公共数据(客户端列表等)。应用程序,而不必重新键入事物或将所有地方的服务器连接起来。我们使用SSIS来移动数据。 – Rozwel 2011-03-25 18:41:04
啊,好的。谢谢。感谢大家。 – Tony 2011-03-25 18:42:25