2017-02-13 52 views
0

使用第三方软件监视Microsoft SQL Server数据库中的查询,以下查询似乎每天执行70000次以上!在liferay上执行的查询6.2数据库

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 

有没有人知道这是什么目的?

回答

1

看着输出,它似乎是确定它运行的数据库的对象。它获取数据库名称,模式,所有者和对象名称,然后将其转换为显示系统表,表或视图。

看起来好像有些变量正在传递给它,所以它很可能查询特定的对象。

这是来自一个应用程序,如果是的话,它可以成为安全模型的一部分吗?如果在查询之前或之后运行任何一致的查询,以查看是否可以查看是否触发它,可以跟踪吗?

0

使用程序ExpressProfiler,我跟踪了上面的查询,其实是存储过程中的门户网站的Miscrosoft SQL Server数据库的名称sys.sp_tables的系统。出于某种原因,门户会自动通过不同的变量多次调用它。

相关问题