私はSQLServerを初めて使用します。と呼ばれるストアドプロシージャがあるという問題があります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を調べても見つけることができません
どんな助け/アドバイスも喜んで受け入れました。