2

2 つのストアド プロシージャがあり、それぞれが別の物理サーバー上の別のデータベースにあります。これらのデータベースはどちらも (別の) 共有 Web ホストで作成されているため、サーバー レベルのアクセス権はありません。これらのサーバーは両方とも有効な IP アドレスを持っており、対応するサーバーでこれらのストアド プロシージャを実行するための適切なアクセス許可を持つユーザー アカウントを作成しました。

問題は、これらの手順の 1 つを別の手順から実行したいのですが、リンク サーバーを作成できないことです (両方のデータベースが共有ホスティング環境にあるため)。最初のストアド プロシージャ内からリモート ストアド プロシージャを実行するにはどうすればよいですか?

(ps) この問題に関する多くの質問を確認しましたが、それらはすべて、これら 2 つのサーバー間でリンク サーバーを作成できると想定していました。

4

2 に答える 2

1

両方のサーバーへのアクセスの詳細がある場合は、.NET CLRを作成して、サーバーに展開できます。

ログイン、パスワード、ストアドプロシージャ名、パラメータをCLR関数に渡し、CLRコードで接続して実行します。

CLRからテーブルを返す方法に関する記事は次のとおりです。http://msdn.microsoft.com/en-us/library/ms131103.aspx

SQLサーバーに接続するには、汎用の.Netライブラリを使用する必要があります:System.Data.SqlClient

使用するオブジェクト:SqlConnection、SqlCommand、およびSqlDataAdapter。

私は自分でそれを行っていません。リンクサーバーを作成する方が簡単ですが、なぜそれが機能しないのかわかりません。もちろん、サーバーにアセンブリをアップロードする権限が必要です。

于 2012-10-21T16:40:33.410 に答える
1

これらの手順の 1 つを別の手順から実行したいのですが、リンク サーバーを作成できません。

リンクされたサーバーがなければ、これは通常不可能です。

@Martin がコメントしたように、 OPENDATASOURCEを試すことができますが、これはデフォルトで無効になっており、ホスティング会社によって有効にされていない可能性が高いため、うまくいかない可能性があります。

このような場合、唯一の選択肢は、各ストアド プロシージャをアプリケーションとは別に実行し、結果をアプリケーションで処理することです。

于 2012-10-20T11:18:20.717 に答える