해킹 또는 데이터의 변조등 이상한 문제가 발생했을 때 가장 먼저 훑어보는 System View이다.
이외에도 퍼포먼스 튜닝을 하려는데 개발쪽에서 모든 쿼리를 주지 않은 경우 훑어볼 경우도 사용하곤 한다.
최근에 일어났던 SQL의 내용을 모두 볼 수 있다는 것이 장점이고,
SQL을 실행시킨 사람이나 시간을 볼 수 없다는 것이 단점이다.
우선 여기서 의심스러운 쿼리들을 훑어낸 뒤에 이것을 이용하여 Profile을 한다거나 여러가지 액션을 취할 수 있다.
아래는 syscacheobjects뷰의 생성쿼리이다.
기본적으로 생성되어있지만, 참조되는 테이블을 확인할 때 쓰기위해 적어놓는다.
CREATE VIEW sys.syscacheobjects (bucketid, cacheobjtype, objtype, objid, dbid, dbidexec, uid, refcounts,
usecounts, pagesused, setopts, langid, dateformat, status, lasttime, maxexectime, avgexectime, lastreads,
lastwrites, sqlbytes, sql) AS
SELECT pvt.bucketid, CONVERT(nvarchar(17), pvt.cacheobjtype), pvt.objtype,
CONVERT(int, pvt.objectid), CONVERT(smallint, pvt.dbid),
CONVERT(smallint, pvt.dbid_execute), CONVERT(smallint, pvt.user_id),
pvt.refcounts, pvt.usecounts, pvt.size_in_bytes / 8192,
CONVERT(int, pvt.set_options), CONVERT(smallint, pvt.language_id),
CONVERT(smallint, pvt.date_format), CONVERT(int, pvt.status),
CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0),
CONVERT(int, LEN(CONVERT(nvarchar(max), fgs.text)) * 2), CONVERT(nvarchar(3900), fgs.text)
FROM (SELECT ecp.*, epa.attribute, epa.value
FROM sys.dm_exec_cached_plans ecp OUTER APPLY sys.dm_exec_plan_attributes(ecp.plan_handle) epa) as ecpa
PIVOT (MAX(ecpa.value) for ecpa.attribute IN ("set_options", "objectid", "dbid", "dbid_execute", "user_id", "language_id", "date_format", "status")) as pvt
OUTER APPLY sys.dm_exec_sql_text(pvt.plan_handle) fgs
이외에도 퍼포먼스 튜닝을 하려는데 개발쪽에서 모든 쿼리를 주지 않은 경우 훑어볼 경우도 사용하곤 한다.
최근에 일어났던 SQL의 내용을 모두 볼 수 있다는 것이 장점이고,
SQL을 실행시킨 사람이나 시간을 볼 수 없다는 것이 단점이다.
우선 여기서 의심스러운 쿼리들을 훑어낸 뒤에 이것을 이용하여 Profile을 한다거나 여러가지 액션을 취할 수 있다.
아래는 syscacheobjects뷰의 생성쿼리이다.
기본적으로 생성되어있지만, 참조되는 테이블을 확인할 때 쓰기위해 적어놓는다.
CREATE VIEW sys.syscacheobjects (bucketid, cacheobjtype, objtype, objid, dbid, dbidexec, uid, refcounts,
usecounts, pagesused, setopts, langid, dateformat, status, lasttime, maxexectime, avgexectime, lastreads,
lastwrites, sqlbytes, sql) AS
SELECT pvt.bucketid, CONVERT(nvarchar(17), pvt.cacheobjtype), pvt.objtype,
CONVERT(int, pvt.objectid), CONVERT(smallint, pvt.dbid),
CONVERT(smallint, pvt.dbid_execute), CONVERT(smallint, pvt.user_id),
pvt.refcounts, pvt.usecounts, pvt.size_in_bytes / 8192,
CONVERT(int, pvt.set_options), CONVERT(smallint, pvt.language_id),
CONVERT(smallint, pvt.date_format), CONVERT(int, pvt.status),
CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0), CONVERT(bigint, 0),
CONVERT(int, LEN(CONVERT(nvarchar(max), fgs.text)) * 2), CONVERT(nvarchar(3900), fgs.text)
FROM (SELECT ecp.*, epa.attribute, epa.value
FROM sys.dm_exec_cached_plans ecp OUTER APPLY sys.dm_exec_plan_attributes(ecp.plan_handle) epa) as ecpa
PIVOT (MAX(ecpa.value) for ecpa.attribute IN ("set_options", "objectid", "dbid", "dbid_execute", "user_id", "language_id", "date_format", "status")) as pvt
OUTER APPLY sys.dm_exec_sql_text(pvt.plan_handle) fgs
댓글
댓글 쓰기