Sql-Server

如何在 SQL Server 中創建視圖

  • May 10, 2015

我有一個使用者表,我需要創建一個視圖,以便使用者只能看到他們自己的數據/行。

我怎麼能做到這一點?我一直在網上搜尋,但我找不到任何有用的東西

Useruser_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 登錄將是合適的。但是,對於前端應用程序,我建議在應用程式碼中執行患者身份驗證(可能使用安全儲存在數據庫中的個人使用者憑據),然後在涉及患者數據的查詢中使用患者標識符。應用程序可以使用直接表訪問、視圖或儲存過程。

引用自:https://dba.stackexchange.com/questions/101068