我一直在搜索这个问题2天没有运气,所以我想是时候提问了;我知道以前曾经问过,但我发现的任何东西都无法解决我的问题。我有两个不同的数据库连接表,我想要执行连接。到目前为止,我有:
$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很陌生,我从未做过这样的事情。我也试过创建一个无效的链接服务器。
答案 0 :(得分:0)
我在您的代码中没有看到您使用连接2的地方。
为了简化这一点,让我们关注SQL Server中的这段代码。打开SQL Server Management Studio并连接到您的数据库。
要编写此查询,您需要一个链接服务器。您应该能够在Management Studio中创建它。您需要db-2
数据库上的用户,然后您可以在db-1
上创建使用该用户凭据登录的链接服务器。当您运行查询时链接服务器,它将使用此用户的凭据,因此请确保它在链接数据库上具有db_datareader
权限级别。
在你的问题中,你说它没有用。我们需要您在尝试使用链接服务器时看到的错误。
server1.database1.dbo.table1是对链接服务器的引用。当您使用名称server1的第四部分时,您指的是与链接服务器的连接。