这可能吗:
将表连接到一个服务器的两个数据库中?
1.1我应该使用什么连接字符串?
将表连接到不同服务器的两个数据库中?
2.1我应该使用什么连接字符串?
答案 0 :(得分:4)
如果我没记错的话,你可以用以下方式做到这一点:
select * from [database name].[owner].table_name a
inner join [database_name].[owner].table_name b on (a.id = b.a_id)
如果数据库位于另一台服务器上,则必须先创建链接服务器:
USE master
GO
EXEC sp_addlinkedserver
'RemotDB',
N'SQL Server'
GO
当链接服务器时,您可以使用以下语法引用另一台服务器上的表:
[server_name].[database_name].[owner].table_name
答案 1 :(得分:1)
不确定OpenQuery是什么,但我已经完成了两种情况。只需使用完全限定名称。
1:
SELECT *
FROM SpecificDatabase.dbo.SpecificTable spec
INNER JOIN CommonDatabase.dbo.CommonTable comm ON spec.someField = comm.someField
2 :(设置链接服务器对象)
SELECT *
FROM SpecificDatabase.dbo.SpecificTable spec
INNER JOIN LinkedServer.CommonDatabase.dbo.CommonTable comm ON spec.someField = comm.someField
对于连接字符串,您只是指的是From和Join子句中的内容,还是指代码中的连接字符串值?
答案 2 :(得分:1)
没有人回答你关于连接字符串的问题,所以我会跳到这里。如果您有2台服务器A和B,则可以在服务器A上设置指向服务器B的链接服务器(如其他帖子中所详述)。然后,在查询中引用服务器B的服务器A上运行查询(再次在其他帖子中详细说明)。您正在服务器A上运行此查询,因此您的连接字符串将是服务器A。
确保连接字符串中的用户有权访问两台服务器上的查询中的表。如果没有,则可以使用sp_addlinkedsrvlogin系统存储过程将链接服务器设置为始终使用一组特定凭据。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms189811.aspx。
答案 3 :(得分:0)
我正在使用sql server
使用OpEnQuery
或OPENROWSET
将解决您的问题。
第1步:
EXEC sp_addlinkedserver
@server = 'TEST',
@srvproduct = 'SQLServer OLEDB Provider',
@provider = 'SQLOLEDB',
@datasrc = 'InfoNet'
第2步: 例如:
SELECT loc.OrderID, loc.ProductID, rmt.ProductName
FROM [Order Details] loc INNER JOIN
OPENQUERY(InfoNet, 'SELECT * FROM Northwind.dbo.Products') rmt
ON loc.ProductID = rmt.ProductID