그 대상들이 어떤 대상을 인용했는지 어떻게 찾아내는지 알려주세요.

9610 단어
때때로 우리가 어떤 표, 저장 프로세스에 대해 조정을 하고 구조를 수정해야 할 때 어떤 대상, 어떤 논리에 영향을 미칠지 잘 알지 못할 때 우리는 먼저 어떤 저장 프로세스가 있는지, 함수 아시도아가 이 대상을 인용했는지 찾아볼 수 있다.영향을 재평가하다.내 나눔은 이렇게 종이~
1. 시스템 테이블을 통해sys.sql_expression_dependencies에서 보기
예를 들면 저희가 다음 예가 있어요.
CREATE TABLE [dbo].[A1](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NULL,
PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

--  
create view vA1 as
select ID,Name
 from A1
    where ID < 6
go

--  
create function fn_A1(@i int)
returns int
as
begin 
    declare @a int
    select @a = max(id) 
        from A1

    set @i = case when @i > @a then @i else @a end
    return @i
end

--      
create procedure rA1
as
    select * from A1
go


--    ,  3     ~
--------------------------------------
vA1
fn_A1
rA1

근데 하트 만 개 정도는 할 수 있지 않을까요?결코... 이 아니다
그리고 저희가 또 다른 상황을 해볼게요.
--  1 ,                     A1
create proc Test1
as
    select * from Test..A1
go

--  2,            
create procedure rA12
as
    exec ('select * from A1')
go

--  3,        
create procedure rA11
with ENCRYPTION
as
    select * from A1
go

--Check,                  

select OBJECT_NAME(referencing_id) from sys.sql_expression_dependencies 
    where referenced_id = OBJECT_ID('A1')

-------------------------------------------------
vA1
fn_A1
rA1
rA11

 
그리고 우리는 다른 시스템 표를 채택하여 ~sys를 찾을 수 있다.syscomments 
--    rA12   ,     A11    。      ╮(╯_╰)╭
select  OBJECT_NAME(id) from sys.syscomments where text like '%A1%'

-----------------------------------------
vA1
fn_A1
rA1
rA12

 
그래서 이 두 대상을 사용하면 80% 이상의 인용 대상을 찾을 수 있습니다. 다른 데이터베이스 크로스 데이터베이스 호출을 제외하고는 볼 수 없습니다. 크로스 데이터베이스 인용 대상은 본 데이터베이스에서sys.sql_expression_dependencies에 저장된referencedid는 빈 값이지만referencedentity_name에서 정보를 찾을 수 있습니다.이런 상황에서 찾을 수 없다. 다른 하나는 연결 서버를 활용해서 호출하는 것이다. 이것은 더욱 찾을 수 없다. 허허~
 
그래요. 이번 공유가 도움이 됐으면 좋겠습니다.

좋은 웹페이지 즐겨찾기