ORACLEは達成するためにサーバーをリンクするために、SQL ServerからOracleクエリデータは、あなたがSQL Serverで作成することができますが、32ビット、64ビットマシンやソフトウェアに応じて、あなたは別のドライバを実装する必要があります。
32ビットマシンでは、インタフェースにアクセスすることにより、マイクロソフトOLE DBは、達成するために、Oracleのために提供します。
1、機械およびソフトウェア環境
マシンは、仮想マシン、Windows XPのインストールの、SQL Serverの20008R2、Oracle 10gの10.2.0.1.0です。
2、ORACLEの環境設定
神託を接続します。
C:\ DocumentsとSettings \ Administratorの> SQLPLUS / SYSDBAとして SQL * Plusは: -星期四3月13 15時22分29秒2014年の生産10.2.0.1.0をリリース 著作権(C)1982、2005、Oracleの。すべての権利を保有。 连接到: Oracle Database 10gのEnterprise Editionのリリース10.2.0.1.0 -生産 パーティション、OLAPやデータマイニングのオプション付き
ユーザーscottの虎のパスワードを変更し、アカウントのロックを解除するために、サインインしようとすると、ルックアップテーブル:
SQL>虎で識別されるユーザーscottを変更 ; ユーザーが変更されました。 SQL>ユーザーscottアカウントのロック解除を変更; ユーザーが変更されました。 SQL>スコット/虎が接続 接続されています。 SQL> EMPからSELECT COUNT(*)、 COUNT(*) ---------- 14
ビューのlistener.oraは正しいです。
#listener.oraのネットワーク設定ファイル:C:\ oracleに\製品10.2.0 \ DB_1の\ネットワーク\ \管理者\ listener.oraの Oracle設定ツールによって生成#。 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\オラクル\製品10.2.0 \ DB_1 \) (PROGRAM = EXTPROC) ) (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = C:\オラクル\ 10.2.0 \ DB_1 \生成物) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521)) ) )
内側には特に注意してください:
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:オラクル\製品\ 10.2.0 \ DB_1 \)
(SID_NAME = ORCL)
)
また、tnsnames.oraファイルが正しいことを参照してください。
#tnsnames.oraのネットワーク設定ファイル:C:\ oracleに\製品10.2.0 \ DB_1の\ネットワーク\ \管理者\ tnsnames.oraの Oracle設定ツールによって生成#。 ORCL = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
特别是:
ORCL =
(DESCRIPTION =
(ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL) ) )
SQL> LSNRCTLホストの状態 、32ビットWindows用LSNRCTL:バージョン10.2.0.1.0 -生産者のON、13-月-2014 15時23分三十一秒 ...著作権(C)1991、2005、Oracleのすべての権利予約 に接続します( = DESCRIPTION(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1))) STATUSのLISTENER ------------------------ 別名LISTENERの 32のバージョンTNSLSNR Windowsのビット:バージョン10.2.0.1.0 -生産 開始日、13-月-2014 14時20分27秒 稼働時間0日1時間3分6秒 のレベルをオフに追跡するため のセキュリティを:ローカルOS認証 SNMP OFFの リスナーパラメータファイルをC:10.2.0 \ \オラクル\製品 \管理者\ listener.oraの\ DB_1の\ネットワーク リスナーのログファイルC:\ oracleに\製品10.2.0 \ \ DB_1 \ネットワーク\ログ\のlistener.logの エンドポイントの概要を聞いて... パイプ\ \(IPC DESCRIPTION =(ADDRESS =(PROTOCOL =)(パイプ名= \\。 EXTPROC1ipc))) (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))、 およびサービス...抽象 サービス"PLSExtProc"ルーチンが含まれています。 ルーチン「PLSExtProc」、状態UNKNOWN、このサービスはハンドラが含まれています... サービス「ORCL」ルーチンが含まれています。 ルーチン「ORCL」、ステータスUNKNOWNには、このサービスのハンドラが含まれています... コマンドが正常に完了
図3は、リンクサーバーをセットアップします。
tnsnames.oraファイルORCLサービス名:特に注目すべきなのは、データソースORCLが参照していることです。
最初のステップは、「新しいリンクサーバー」を選択します。
第二段階は、Microsoft OLE DBは、Oracleの提供を選択してください:
第三段階、製品を入力してください:オラクル、データソース:ORCL:
第四ステップは、oracleユーザー名とパスワードを入力し、この設定は実際の状況に応じて、入力した後、ポイントを同様に決定します。
4、試験クエリ
(xxxは、 'EMP SELECT * FROM')OPENQUERYから選択*
リターンの結果:
図5に示すように、コードで実装。
EXEC master.dbo.sp_addlinkedserver @server = N'ORACLE_SCOTT', @srvproduct=N'ORACLE', @provider=N'MSDAORA', @datasrc=N'orcl' go /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ORACLE_SCOTT', @useself=N'False', @locallogin=NULL, @rmtuser=N'scott', @rmtpassword='tiger' GO select * from openquery(ORACLE_SCOTT, 'SELECT * FROM scott.emp')
6、通过openrowset函数来实现,更简单。
select * from openrowset('MSDAORA','orcl';'scott';'tiger','select * from SCOTT.EMP')