C#のSQL Server 2005でプログラムでDBLinkを作成することは可能ですか?
データベースAとBがあるとします。AにDBlinkを作成してBに接続します。ユーザーからBデータベース情報を取得し、データベースAにDBLinkを作成します。これはC#.Netバージョン2.0で可能ですか?
C#のSQL Server 2005でプログラムでDBLinkを作成することは可能ですか?
データベースAとBがあるとします。AにDBlinkを作成してBに接続します。ユーザーからBデータベース情報を取得し、データベースAにDBLinkを作成します。これはC#.Netバージョン2.0で可能ですか?
sp_addlinkedserverを使用してリンクサーバーを追加できます。
EXEC sp_addlinkedserver
@server = 'OracleHost',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
C#から、このクエリをSqlCommandに格納し、ExecuteNonQuery()を呼び出してデータベースで実行できます。
あなたがしたいのは、これを行うストアドプロシージャを作成し、C#から呼び出すことです。
次のストアドプロシージャを作成します。
Create PROCEDURE [dbo].[LinkMyServer]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
EXEC sp_addlinkedserver @server = N'LinkName',
@srvproduct = N' ',
@provider = N'SQLOLEDB',
@datasrc = N'some.domain.or.ip.com',
@catalog = N'database_name'
EXEC sp_addlinkedsrvlogin N'LinkName', false, N'ServerDomain\Administrator', N'user_on_remotedb', N'password_on_remote_db'
END
これで、リモートデータベースがローカルユーザー管理者にリンクされました。
C#では、SqlCommandを作成し、タイプをストアドプロシージャに設定して、クエリ以外を実行します:)
ServerDomain \ Administratorは、「dbo」のようなSQLユーザーにすることもできます。
これがお役に立てば幸いです。