一、背景
外部公司的人授權訪問我們公司的數據庫,數據接口調用,要給他們建立查看指定的視圖和授權的賬號,因此要在數據庫中,給指定用戶授權訪問指定表
二、sqlserver 腳本
---創建視圖
CREATE VIEW [dbo].[View_RunningData] AS SELECT TOP (100) PERCENT a.areaorganize, c.F_FullName AS areaorganizeName, a.recorddate, d.F_ItemCode, d.F_ItemName, a.value FROM dbo.ITEM_RECORD AS a LEFT OUTER JOIN dbo.Sys_Organize AS c ON a.areaorganize = c.F_Id LEFT OUTER JOIN dbo.Sys_ItemsDetail AS d ON a.itemid = d.F_Id LEFT OUTER JOIN dbo.Sys_Items AS e ON d.F_ItemId = e.F_Id LEFT OUTER JOIN dbo.Sys_Items AS f ON e.F_ParentId = f.F_Id WHERE (f.F_EnCode = 'YXSJ') ORDER BY a.recorddate, d.F_ItemCode
---指定指定用戶授權訪問指定表
exec sp_addrole 'seeview' GRANT SELECT ON View_RunningData TO seeview exec sp_addlogin 'yhsjjk','yh123','DA_Dev517' exec sp_adduser 'yhsjjk','yh123','seeview'
三、 分析
1、 在sql server中選擇好要操作的數據庫角色。
2、 當前數據庫創建角色(新建權限seeview)
exec sp_addrole 'seeview'
3、 給予創建角色的權限,分配視圖權限
( 意思是指定視圖列表 指定seeview這個角色可以查看的視圖表名稱;也就是這個角色可以查看下面賦予這些視圖信息,除此之外的所有的東西都看不到)
GRANT SELECT ON View_RunningData TO seeview
4、 添加只允許訪問指定視圖的用戶: exec sp_addlogin '登錄名','密碼','默認數據庫名
注:此處可能執行不了,要求密碼強度,那就自己手工創建
exec sp_addlogin 'yhsjjk','yh123','DA_Dev517'
5、 添加只允許訪問指定視圖的用戶到rCRM角色中: exec sp_adduser '登錄名','用戶名','角色'
exec sp_adduser 'yhsjjk','yh123','seeview'
四、 操作步驟
1、選擇要訪問的數據庫,執行視圖腳本,視圖創建成功。
2、給指定的用戶授權訪問指定表,點擊執行數據腳本,腳本執行成功。
3、登陸名,密碼創建成功。
4、用戶授權成功,只能查看指定的視圖。