是否可以拒絕SQL Server中所有內容的權限(例如選擇,插入等)並通過存儲過程授予臨時權限。我只想使用存儲過程來訪問sql數據庫中的數據。SQL Server存儲過程和權限
這是可能的還是有另一種方式?
是否可以拒絕SQL Server中所有內容的權限(例如選擇,插入等)並通過存儲過程授予臨時權限。我只想使用存儲過程來訪問sql數據庫中的數據。SQL Server存儲過程和權限
這是可能的還是有另一種方式?
這是一個很好的模式支持我的SQL Server。
基本上,如果proc和表具有相同的所有者(通常爲dbo),那麼對存儲過程擁有權限的人根本不需要任何表權限。這就是所謂的ownership chaining
注:上表的權限根本無法在這種情況檢查,以致明確的「拒絕權限」也將被忽略(拒絕是不同的,以「沒有權限」)
這同樣適用於視圖,功能等(如查看調用表,proc調用視圖,...)
是的,這被稱爲ownership chaining
,如果你給執行權限PROC用戶將能夠執行的proc和它的工作,他會找回數據
,如果他再試圖從做一個選擇從SSMS表,它不會工作(提供,他是不是在數據讀取器或更高的角色)
請記住,動態SQL打破ownership chaining
,如果你有在存儲過程中的動態SQL,則需要額外的在這種情況下的權限
這不僅適用於存儲過程,還適用於視圖。
通常,您可以授予用戶像「視圖」或「存儲區」之類的「更高級別」對象的權限,而無需在基礎表上也提供相同的用戶權限。
「所有權鏈接」:http://msdn.microsoft.com/en-us/library/ms188676.aspx – gbn
正確的,那是什麼我的意思是...... – SQLMenace