我一直在这个问题上搜索2天没有运气,所以我想现在是时候提出一个问题;我知道这已经被问过,但是我没有发现能够解决我的问题。我有两个来自两个不同数据库连接的表,我想要执行连接。到目前为止,我有:SQL连接来自多个数据库连接的多个表
$conn1 = odbc_connect("db-1","user","pass")
or die ("Couldn't Connect to Server");
$conn2 = odbc_connect("db-2","user","pass")
or die ("Couldn't Connect to Server");
$Query = 'SELECT PV_Job1.PlantCode,
PV_Job1.JobCode,
PV_Jobline1.JobLineNum,
PV_Jobline1.ItemCode,
PM_Item1.ItemShortDesc
FROM VISION.PUB.PV_Job PV_Job1
LEFT OUTER JOIN spec.public.specification specification
ON PV_JobLine1.ItemCode=specification.customer_item_code
LEFT OUTER JOIN VISION.PUB.PV_Jobline PV_Jobline1
ON (PV_Job1.CompNum=PV_JobLine1.CompNum
AND PV_Job1.PlantCode=PV_JobLine1.PlantCode)
AND PV_Job1.JobCode=PV_JobLine1.JobCode';
$Result = odbc_exec($conn1,$Query);
其中引发错误。这个问题的其他答案建议使用类似server1.database1.dbo.table1的东西,但是在这种情况下server1和database1会是什么?我对SQL很陌生,我从来没有做过这样的事情。我也尝试创建一个没有工作的链接服务器。
我在第一次连接中使用它。 “spec”是第二个数据库中的一个对象。不幸的是,我没有访问SQL服务器本身。这也意味着我无法访问错误日志。所以做这项工作的唯一方法是如果我在SQL Server Management中创建一个链接? – dyarbrough
是的,如果我正确理解你的问题。我想澄清一件事:在SQL Server中,数据库托管在一个实例上。一个实例是连接到的内容,并从那里查询数据库。例如,服务器名称通常与实例名称相同,并且包含环境的名称,例如'SPECPROD'或'SPECDEV'。在'SPECDEV'中,你会有多个数据库,比如'spec_archive','spec'等等。你是否试图在一台服务器上跨多台服务器或跨数据库编写查询? –
不完全确定,我的设置唯一的可视化在Crystal Reports中,在这里它们被列为两个单独的连接。即第一个是PostgreSpec-> spec-> public-> specification,第二个是Vision-LIVE-> VISION-> PUB-> PV_Job,PostgreSpec和Vision-LIVE是单独的连接。 – dyarbrough