問:我的Microsoft Access 2000應用程序由後端的SQL Server 2000數據庫寫入數據。為防止Access的用戶看到SQL Server 2000表中的全部數據,我想使用一種只允許用戶浏覽授權數據行的視圖。可以創建一種限制用戶訪問SQL Server數據的視圖嗎?
答:可以。如果每位用戶以唯一的用戶ID登錄到Access,您就可以創建一種限制用戶訪問SQL Server數據的視圖。以下的示例語句就可以創建這樣一種視圖:
CREATE VIEW v_data AS
SELECT
FROM dbo.mytable AS a
INNER JOIN dbo.authtable AS b
ON (a.Pkey = b.DataKey
AND b.userid = suser_sname())
該視圖按userid限制用戶的訪問權。它要求您保存一份與數據表(mytable)中特定主鍵相匹配的用戶名的表(authtable)。如果您的情況相對比較簡單——您無需管理多個用戶的行訪問權,則您可以將userid列插入到數據表中,如下列代碼所示:
CREATE VIEW v_data AS
SELECT
FROM dbo.mytable AS a
WHERE a.userid = suser_sname()
—Microsoft SQL Server 開發團隊