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),雖然我不能肯定所有的後果。 –