4

リンク サーバーを介してリモート ストアド プロシージャを呼び出そうとしています。問題は、必須パラメーターの 1 つがユーザー定義のテーブル型であることです。

リモートサーバーからローカル変数をユーザー定義のテーブル型として宣言する方法がわかりません。

これは私がこれまでに試したことですが、うまくいきません:

DECLARE @tblVar [REMOTESERVER].REMOTEDB.dbo.user_defined_table_type

EXEC [REMOTESERVER].REMOTEDB.dbo.procedure_name (@param1 = @tblVar)

ただし、エラーは次のとおりです。

タイプ名 'REMOTESERVER.REMOTEDB.dbo' には、最大数を超えるプレフィックスが含まれています。最大値は 1 です。

スカラー変数「@tblVar」を宣言する必要があります

4

1 に答える 1

10

さらに調査したところ、テーブル変数はリモート プロシージャ コールに対して無効であることがわかりました。

代わりに、私が行ったことはEXEC [REMOTESERVER].[REMOTEDB]..sp_executesql、テーブル変数を呼び出して宣言し、値を設定し、その中でストアド プロシージャを呼び出すことでした。

例:

DECLARE @SQL nvarchar(4000)
SET @SQL = N'
DECLARE @tblVar dbo.user_defined_table_type
-- Code to populate table here
EXEC dbo.procedure_name (@param1 = @tblVar)
'
EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql @stmt = @SQL

そして、それは私の問題を解決しました。うまくいけば、これは将来誰かを助けるでしょう。

于 2012-10-04T20:09:12.777 に答える