Sql-Server
如何在 SQL Server 中創建視圖
我有一個使用者表,我需要創建一個視圖,以便使用者只能看到他們自己的數據/行。
我怎麼能做到這一點?我一直在網上搜尋,但我找不到任何有用的東西
User
與user_id
,name
,address
您需要知道使用者是誰,並且需要通過視圖訪問該資訊。
CREATE VIEW dbo.tPatientForUser AS SELECT patient_id, name, address, gender, loginame FROM tPatient WHERE loginame = SUSER_SNAME();
或者,根據您的應用程序,您可能需要:
WHERE loginame = ORIGINAL_LOGIN();
這可以幫助您將行過濾為僅具有相同使用者的行。
編輯:根據您的最新評論:
要為某人創建登錄名並使他們成為您的數據庫的使用者,您可以閱讀以下 KB 文章:https ://msdn.microsoft.com/en-us/library/aa337562.aspx (查看範例頁面底部。)
範例: – 通過指定伺服器名稱和 Windows 域帳戶名稱為 SQL Server 創建登錄名。
CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS; GO
– 使用安全憑證“RestrictedFaculty”為 SQL Server 創建使用者“shcooper” – 使用者登錄以密碼“Baz1nga”開始,但該密碼必須在第一次登錄後更改。
CREATE LOGIN shcooper WITH PASSWORD = 'Baz1nga' MUST_CHANGE, CREDENTIAL = RestrictedFaculty; GO
請記住,視圖或儲存過程必須實現您的安全計劃,您還沒有真正解釋過。這個技巧只是向您展示如何使用使用者身份,而不是如何創建您的系統。
如果每個患者直接使用臨時查詢工具(如 Access)訪問數據庫,則視圖和單獨的 SQL 登錄將是合適的。但是,對於前端應用程序,我建議在應用程式碼中執行患者身份驗證(可能使用安全儲存在數據庫中的個人使用者憑據),然後在涉及患者數據的查詢中使用患者標識符。應用程序可以使用直接表訪問、視圖或儲存過程。