使用监控Microsoft SQL Server数据库中查询的第三方软件,以下查询似乎每天执行70000次以上!
select
TABLE_QUALIFIER = convert(sysname,db_name()),
TABLE_OWNER = convert(sysname,schema_name(o.schema_id)),
TABLE_NAME = convert(sysname,o.name),
TABLE_TYPE = convert(varchar(32),
rtrim(substring('SYSTEM TABLE TABLE VIEW ',
(ascii(o.type)-83)*12+1,
12)) -- 'S'=0,'U'=2,'V'=3
),
REMARKS = convert(varchar(254),null) -- Remarks are NULL.
from
sys.all_objects o
where
o.type in ('S','U','V') and
has_perms_by_name(quotename(schema_name(o.schema_id)) + '.' + quotename(o.name),
'object',
'select') = 1 and
charindex(substring(o.type,1,1),@type1) <> 0 and -- Only desired types.
(@table_name is NULL or o.name like @table_name) and
(@table_owner is NULL or schema_name(o.schema_id) like @table_owner)
order by 4,
1,
2,
3
有谁知道这是为了什么目的?
答案 0 :(得分:1)
查看输出,似乎确定了运行它的数据库的对象。它获取数据库名称,架构,所有者,对象名称,然后将其转换为显示系统表,表或视图。
看起来有些变量正在传递给它,因此很可能会查询特定对象。
这是来自应用程序,如果是这样,它是否可以成为安全模型的一部分?如果在此查询之前或之后运行任何一致查询以查看是否可以看到触发它的内容,您是否可以追踪?
答案 1 :(得分:0)
使用程序ExpressProfiler,我追踪到上述查询实际上是门户的Miscrosoft SQL Server数据库中的系统存储过程,名称为 sys.sp_tables 。由于某种原因,门户网站会使用不同的变量多次自动调用它。