< Server.Execute() | 分散トランザクションを開始できないエラー >

November 18, 2003

Oracleのビューを使用する

OracleのDBサーバとローカルのMSDEを連携しやすくするために、リンクサーバーを使用してビューを作りました。

USE TESTDB
GO
/* リンクサーバーを追加 */
EXEC sp_addlinkedserver
   @server		= 'ORASRV',	/* リンクサーバの参照名。好きにつける。 */
   @srvproduct	= 'Oracle',	/* 固定 */
   @provider	= 'MSDAORA.1',	/* 使用するプロバイダ */
   @datasrc		= 'OraSrv'	/* Netサービス名 */

/* リンクサーバーにログオンできるようにする */
EXEC sp_addlinkedsrvlogin
    @rmtsrvname		= 'ORASRV',	/* さっきつけた参照名 */
    @useself		= 'FALSE',	/* TRUEならSQLServerの認証情報を使用する */
    @locallogin		= 'sa',	/* どのログインで使用するか。NULLなら全ログイン */
    @rmtuser		= 'SCOTT',	/* お約束 */ 
    @rmtpassword	= 'TIGER'	/* これもお約束 */
GO
/* ビューを追加する */
CREATE VIEW EMP AS
SELECT * FROM SPSVR1..SCOTT.EMP
GO

上のように、MSDEからOracleのオブジェクトを指定する場合は、リンクサーバー名..スキーマ.オブジェクト、となります。(要はカタログ部がないのね)

参考

削除方法はこんな感じ

USE TESTDB
GO
DROP VIEW JBASE_TBL;
GO
EXEC sp_droplinkedsrvlogin 
	'ORASRV',
	'sa'
EXEC sp_dropserver
	'ORASRV'
GO

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/102

コメント

Oracle Provider For OLE DBを使用して同じようにリンクサーバーを作成しようとしましたが、実行時にエラーになります。やり方が悪いのでしょうか

というか、重くって使い物になりません。
MSDE同士のリンクサーバーでも、リンク先のテーブルに更新を行う間、データが多いとリンク先が応答しなくなります。
回避方法はないのでしょうか。

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?