リモート サーバーからデータを抽出するいくつかのストアド プロシージャで使用されるライブラリを確認する必要があります。
私は(SOの助けを借りて、SO 21708681を参照)以下のコードを構築しました:
DECLARE @tProcs TABLE
(
procID int IDENTITY,
procObjectID nvarchar(100),
procName nvarchar(100)
);
insert into @tProcs
SELECT object_id, name
FROM sys.objects
WHERE type in (N'P', N'PC') and name like '%_Extract'
declare @countProcs int, @I int=0
select @countProcs=COUNT(*) from @tProcs
while @I<@countProcs
Begin
declare @source_code nvarchar(max)
declare @objectID nvarchar(50)
declare @proc_Name nvarchar(200)
select @objectID=procObjectID from @tProcs where procID=@I
select @proc_Name=procName from @tProcs where procID=@I
select @source_code = definition
from sys.sql_modules
where object_id = @objectID
SELECT PATINDEX('BOCTEST.%', @proc_Name) as Pos, @proc_Name
-- or SELECT charindex(@source_code, '%BOCTEST%')
set @I=@I+1
End
各ターゲット ストアド プロシージャ内には、次のような行があります。
DECLARE YP040P_cursor CURSOR FOR SELECT * FROM BOCTEST.S653C36C.LIVEBOC_A.YP040P
ストアド プロシージャごとに 'LIVEBOC_A' の部分 ('LIVEBOC_A' または LIVEBOC_B のいずれか) を知る必要があります。
PATINDEX と CHARINDEX を使用して、定義内の文字列の開始 opf の場所を取得しようとしましたが、sysmodules
返されるのはゼロか、文字列またはバイナリ データが切り捨てられるというエラーだけです。