Sql-Server
跟踪撥款違規
我們正在將我們的一個應用程序使用者登錄從
dbowner
一個更細化的權限方案更改為最終。在 SQL Server 2016 中是否有一種方法可以跟踪權限違規?也就是說,這個新使用者不能從表 dbo 中選擇。TableName以便我可以查看它並確定它是否合適。
我知道我可以從事物的程序方面擷取錯誤並記錄它們,但如果數據庫可以為我記錄它,我寧願不依賴它。
您可以使用Extended Events ™ 來完成此操作。該
error_reported
事件允許您在每次發生特定錯誤時將一行記錄到文件中。您可以向記錄的內容添加其他資訊,例如username
和client_hostname
。下面是一些範例 T-SQL,可幫助您開始篩選僅錯誤程式碼 262 的過濾器:CREATE EVENT SESSION [error_262_to_file] ON SERVER ADD EVENT sqlserver.error_reported( ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.username) WHERE ([error_number]=(262))) ADD TARGET package0.event_file(SET filename=N'C:\XE\error_262_to_file.xel') WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON) GO
假設我最麻煩的使用者之一使用他的登錄名
sean_gallardy
登錄。我不信任這個使用者,所以我給了他非常有限的權限。如果他嘗試查看查詢計劃,他會在 SSMS 中收到以下錯誤消息:消息 262,第 14 級,狀態 4,第 1 行
數據庫 ‘master’ 中的 SHOWPLAN 權限被拒絕。
以下是作為響應記錄到擴展事件文件中的內容: