リンクサーバーでIDENT_CURRENT値を取得しようとしています。出力パラメータを持つリモートサーバー上にストアドプロシージャsp_current_identityを作成しました。
CREATE PROCEDURE [dbo].[sp_current_identity] ( @strTableName nvarchar(255), @intRowId int OUTPUT )
AS
BEGIN
select IDENT_CURRENT(@strTableName)
END
その後、sp_current_identityとsometableの2つの同義語を作成しました。
sp_executesqlを使用してsp_current_identityを実行する必要があります(LLBLGEN 3.1を介して同義語を操作するカスタムDataAtapterを作成しています)。次の例を参照してください。
declare @p4 int
set @p4=NULL
exec sp_executesql N'SET XACT_ABORT ON; INSERT INTO [db].[dbo].[sometable] ([FieldName], [TableName], [UserField]) VALUES (@p1, @p3, @p4) ;
exec dbo.sp_current_identity @p5, @p2
;SET XACT_ABORT OFF',N'@p1 varchar(50),@p2 int output,@p3 varchar(50),@p4 varchar(50), @p5 varchar(200)',
@p1='test24',@p2=@p4 output,@p3='test24',@p4='test5',@p5='sometable'
select @p4
このコードをリモートサーバー(sp_current_identityはローカルストアドプロシージャ)で実行すると正常に機能しますが、コードをローカルサーバーで実行すると例外が発生します。エラーは次のとおりです。
プロシージャまたは関数'sp_current_identity'には、指定されていないパラメータ'@strTableName'が必要です。
ご協力いただきありがとうございます!