USP_SIMPLEDATALIST_ADHOCQUERYCATEGORYINUSE
Returns a list of categories in use by saved ad-hoc queries.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@ONLYMOBILIZED | bit | IN | ONLYMOBILIZED |
Definition
Copy
CREATE procedure dbo.USP_SIMPLEDATALIST_ADHOCQUERYCATEGORYINUSE(@CURRENTAPPUSERID uniqueidentifier,
@ONLYMOBILIZED bit = 0)
as
set nocount on;
declare @ISSYSADMIN bit;
declare @HASQUERYVIEWSYSTEMPRIVILEGE bit = 0;
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;
if @ISSYSADMIN = 0
select @HASQUERYVIEWSYSTEMPRIVILEGE = dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '5f9bbcaf-9c67-4539-9880-ae4f709a9c1f');
/* Filter out any ad-hoc queries involving query views to which the current user does not have rights */
if (@ISSYSADMIN = 0 and @HASQUERYVIEWSYSTEMPRIVILEGE = 0)
begin
declare @OKVIEWS table (OBJECTNAME nvarchar(128));
insert into @OKVIEWS (OBJECTNAME)
select QUERYVIEWCATALOG.OBJECTNAME from dbo.QUERYVIEWCATALOG
where exists (
select [OKVIEWS].QUERYVIEWCATALOGID
from dbo.UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER(@CURRENTAPPUSERID) as [OKVIEWS] where [OKVIEWS].QUERYVIEWCATALOGID = QUERYVIEWCATALOG.ID);
end;
select [VALUE] = '00000000-0000-0000-0000-000000000001',
[LABEL] = '<None>'
where exists(select ID from dbo.ADHOCQUERY where QUERYCATEGORYCODEID is null)
union
select distinct QUERYCATEGORYCODE.ID as [VALUE],
QUERYCATEGORYCODE.DESCRIPTION as [LABEL]
from dbo.QUERYCATEGORYCODE
inner join dbo.ADHOCQUERY on QUERYCATEGORYCODE.ID = ADHOCQUERY.QUERYCATEGORYCODEID
where
(@ONLYMOBILIZED = 0 or ADHOCQUERY.MOBILIZE = 1)
and
/* Filter out restricted query views */
((@ISSYSADMIN = 1 or @HASQUERYVIEWSYSTEMPRIVILEGE = 1)
/* This will return a list of query views in use by the ad-hoc query but not in the OK views table variable;
These ad-hoc queries should not be returned to the client. */
or not exists(select [QUERYVIEWSINUSE].OBJECTNAME
from dbo.UFN_ADHOCQUERY_QUERYVIEWSINUSE(ADHOCQUERY.QUERYDEFINITIONXML) as [QUERYVIEWSINUSE]
where not exists (
select [OKVIEWS].OBJECTNAME
from @OKVIEWS as [OKVIEWS] where [OKVIEWS].OBJECTNAME = [QUERYVIEWSINUSE].OBJECTNAME)))
/* End restricted query views filter */
order by [LABEL];