我想要控制db用戶在sql中選擇表。例如。有一個用戶名爲'user1',另一個是'user2'。限制根據用戶角色返回的行數
User1具有管理員角色在數據庫上。用戶2的角色較低。當用戶運行一個查詢時,我想檢查用戶名和userrole,如果它是一個管理員用戶,那麼我允許它運行。如果它的用戶角色較低,我需要限制查詢的結果(不是拒絕,只是限制)。我不想讓較低角色的用戶看到表格上的PhoneNumber列,所以我需要將該用戶的結果作爲除PhoneNumber列之外的表格。
我知道我可以在角色區域的列權限上做到這一點。但我也想限制這樣的查詢:只返回頂部(5)結果,不是所有的表。
所以我需要一個存儲過程或類似的東西,當用戶執行查詢時自動運行。是否有任何類似的SQL或類似的東西在SQL?
在此先感謝。
不,沒有。你用'f5'表示你的用戶是否可以訪問SSMS?您最好的辦法是使用角色刪除訪問限制表,並允許通過針對存儲過程執行結果。在存儲的proc中,您可以檢查角色/權限並返回適當的值。或者,您可以使用Sql Views並授予/限制這些視圖的權限。然而,對我來說,整個寫作聽起來有些詭異,可能最好是重新評估實際需求,然後嘗試推動這項工作,特別是如果用戶已經有權使用SSMS。 – Igor
如果應用程序不是SSMS,它是什麼? –
他們使用ssms連接到sql實例。但這不是我的問題。我需要的是'用戶運行查詢'和'sql返回結果'之間的控件。我需要檢查用戶想要運行的查詢。然後我決定什麼給sql服務器來給我想要的結果。例如 –