1
我想创建一个存储过程SP1
这将有脚本从sys
模式获取数据。但是,此存储过程将通过没有对sys
架构权限谁的用户调用。我怎样才能做到这一点?用户可以访问存储过程,而不是底层代码直接
我这样做基本上是从用户掩盖整个sys
模式,但同时也让他看到最小的信息。
基本上,我想这里面SP
--Displays Object information
SELECT m.object_id [ObjID]
,o.type_desc [ObjType]
,o.name [ObjectName]
,e.last_execution_time [LastExecutedOn]
,create_date [CreatedOn]
,modify_date [ModifiedOn]
, DEFINITION [Data]
FROM sys.SQL_MODULES m
JOIN sys.OBJECTS o
ON m.object_id=o.object_id
LEFT JOIN sys.dm_exec_procedure_stats e
ON e.object_id=o.object_id
WHERE DEFINITION LIKE '%'[email protected]+'%'
ORDER BY o.name
会发生什么事,如果你授予执行访问SP,仅此而已? – jarlh
SP可供该用户访问。但是当他运行它时,他会得到错误消息,说您没有访问sys对象的权限。 基本上我想这里面SP --Displays对象信息 SELECT m.object_id [ObjID的] \t \t,o.type_desc [OBJTYPE] \t \t,o.name [对象名] \t \t,例如last_execution_time [LastExecutedOn] \t \t,CREATE_DATE [CreatedOn] \t \t,modify_date [ModifiedOn] \t \t,DEFINITION [数据] FROM sys.SQL_MODULES中号 JOIN sys.objects中ö ON m.object_id = o.object_id LEFT JOIN sys.dm_exec_procedure_statsË ON e.object_id = o.object_id WHERE DEFINITION LIKE '%' + @字符串searchstr + '%' ORDER BY o.name –
...你为什么要这样做?你想解决什么样的大图片问题?你想要保护什么?一般来说'sys'是管理员/开发者的领域 - 对于其他人来说,他们根本不需要看到它。如果有人具有读取数据库的REST访问,他们可以得到大部分的DB布局反正....并且在常规表中的数据通常比布局记录更有价值。你可能寻找['EXECUTE AS'(https://msdn.microsoft.com/en-us/library/ms188354(V = SQL.100)的.aspx),虽然我不能肯定所有的后果。 –