그 대상들이 어떤 대상을 인용했는지 어떻게 찾아내는지 알려주세요.
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에서 정보를 찾을 수 있습니다.이런 상황에서 찾을 수 없다. 다른 하나는 연결 서버를 활용해서 호출하는 것이다. 이것은 더욱 찾을 수 없다. 허허~
그래요. 이번 공유가 도움이 됐으면 좋겠습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.