私はSQL Serverを初めて使用しています。私はsys.sp_MSallocate_new_identity_range
と呼ばれるストアドプロシージャがある問題があります(下記のロジックの一部を参照)。それはどちらも私が見つけることができる2つの機能を参照しています。プロシージャで呼び出された検索関数が見つかりません
if (**sys.fn_MSmerge_isrepublisher**(@artid)=0)
begin
declare @publisher_max_used numeric(38,0)
declare @pubid uniqueidentifier
declare @pub_ranges_needed tinyint
declare @pub_refresh_constraint bit
select @pubid = subid, @publisher_max_used = max_used from dbo.MSmerge_identity_range
where artid = @artid and is_pub_range = 1 and (**sys.fn_MSmerge_islocalpubid**(subid)=1)
if @pubid is NULL
begin
raiserror(20663, 16, -1)
return 1
end
- 結果を返す:
declare @p4 smallint
set @p4=2
declare @p5 numeric(38,0)
set @p5=31001
declare @p6 numeric(38,0)
set @p6=32001
declare @p7 numeric(38,0)
set @p7=32001
declare @p8 numeric(38,0)
set @p8=33001
exec sys.sp_MSallocate_new_identity_range 'B551D87F-5457-2102-9E6A-DD4EB44B1DD1','4EB5E2D0-3FC1-4D77-B894-5D57C433D0B2',2,@p4 output,@p5 output,@p6 output,@p7 output,@p8 output,N'dev_02',N'PPC04 - 21a535007fd8',N'My Documents\Assets\assets.sdf'
select @p4, @p5, @p6, @p7, @p8
すなわちこれが動作し、結果を返します。すべていいですが、ストアドプロシージャ内に埋め込まれた関数、つまりsys.fn_MSmerge_isrepublisher
またはsys.fn_MSmerge_islocalpubid
を見つけることができません。
私はsys.objects
とsys.all_objects where name like '%fn_MSmerge%'
を調べました。
私はSQLをトレースすることができました。そしてトレースはObjectIDを与え、私はその文を実行することができます。トレースは私にそれが関数であることを教えてくれます。 20038 - FN - 563464549のオブジェクトIDを与えますが、sys.objectsでデータベースを探すことができません。
喜んで受け入れられているヘルプ/アドバイス。
実際の問題は何ですか?この手続きは、身分証明されておらず、あなた自身を呼び出すことが期待されない内部システム手続きです。経験している実際の問題を記述すると、誰かが解決策を提供できる可能性があります。 – Pondlife