2016-05-24 15 views
0

私はこの問題を2日間無駄なく検索していますので、質問をする時です。私は以前これが尋ねられたことは知っていますが、私が見つけたものは何も私の問題を解決することができませんでした。私は、2つの異なるデータベース接続から、結合を実行する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にはまったく初心者で、このようなことは一度もしていません。私はまた動作しなかったリンクサーバーを作成しようとしました。あなたはこれをより簡単にするために、接続2.

を使用します。ここで、私はあなたのコードで表示されていない

答えて

0

、のは、あなたのSQL Serverで、このコードに焦点を当ててみましょう。 SQL Server Management Studioを開き、データベースに接続します。

このクエリを作成するには、リンクサーバーが必要です。 Management Studioでこれを作成できるはずです。 db-2データベースにユーザーが必要です。そのユーザーの資格情報を使用してログインするdb-1にリンクサーバーを作成することができます。リンクサーバー経由でクエリを実行すると、このユーザーの資格情報が使用されるため、リンクされたデータベースのアクセス権レベルがdb_datareaderであることを確認してください。

あなたの質問では、それは動作しないと述べています。リンクサーバーを使用しようとしたときに表示されるエラーが必要です。

server1.database1.dbo.table1は、リンクサーバーへの参照です。名前の4番目の部分server1を使用すると、リンクされたサーバーへの接続が参照されます。

+0

私は最初の参加でそれを使用します。 「spec」は、第2のデータベース内のオブジェクトである。残念ながら、私はSQLサーバー自体にアクセスできません。これはまた、エラーログにアクセスできないことを意味します。したがって、SQL Server Managementでリンクを作成すると、この作業を行う唯一の方法があります。 – dyarbrough

+0

はい、私はあなたの質問を正しく理解しています。 SQL Serverでは、データベースはインスタンス上でホストされています。 1つのインスタンスは接続先であり、そこからデータベースにクエリを実行します。たとえば、サーバー名はインスタンス名と同じであることが多く、環境名(SPECPRODやSPECDEVなど)が含まれています。 'SPECDEV'の中には、' spec_archive'、 'spec'などの複数のデータベースがあります。一つのサーバ上で複数のサーバ間またはデータベース間でクエリを書こうとしていますか? –

+0

セットアップの唯一のビジュアルはCrystal Reportsで、ここでは2つの別々の接続としてリストされています。私。最初のものはPostgreSpec-> spec-> public->仕様であり、2つ目はVision-LIVE-> VISION-> PUB-> PV_Jobであり、PostgreSpecとVision-LIVEは別の接続です。 – dyarbrough

関連する問題