2011-03-01 82 views
2

我在sql server express中有一個單獨的sql數據庫。使用sql server express爲c#.net winform應用程序創建多個用戶

我有一個登錄MAINLOGIN,爲這個數據庫。

我想在該數據庫中的數據的插入,通過多個用戶,U1,U2,U3,每個具有不同的用戶ID &密碼。

這些用戶將由MAINLOGIN手動或通過winform應用程序創建。

所以在創建MAINLOGIN,我想給他的權限進一步創造登錄。

爲此,我該怎麼做?

我無法創建多個用戶,因爲對於一個數據庫,只有一個用戶可以在一個登錄創建的。

所以我應該創建多個登錄,L1,L2,L3,然後映射,U1,U2,U3給他們。

或者,有沒有更好的方法來做到這一點?像應用程序角色等

我不想使用Windows身份驗證。因爲如果我知道系統密碼,那麼我可以簡單地通過應用程序連接sql並插入錯誤的數據。

+2

您可以爲Windows/AD **組**創建登錄,然後爲該登錄創建一個用戶;任何屬於該組**的成員的Windows用戶現在都可以訪問您的數據庫表 –

回答

4

在SQL Server中,您可以擁有基於Windows帳戶或單獨的特定SQL帳戶的帳戶。對於這兩種變體,您需要需要使用數據庫的每個用戶需要一個帳戶。

唯一的例外是能夠爲Windows安全性創建SQL Server登錄,例如, MyAppUsers,然後在您的數據庫中登錄該用戶。有了這個,任何屬於該安全組的Windows帳戶(在Windows/AD中)也將有權查看/使用您的數據庫。

通過這種方法,你也動誰可以使用你的數據庫進行的SQL Server,因爲它真的只能在Windows安全組取決於成員的管理。

一次登錄,一個用戶 - 多個Windows帳戶通過它獲得權限。看起來像我的贏家!

更新:

創建一個Windows AD組的登錄:

CREATE LOGIN [DOMAIN\GroupName] FROM WINDOWS 

創建基於登錄數據庫中的用戶:

USE (your database) 

CREATE USER GroupNameUser 
FOR LOGIN [DOMAIN\GroupName] 

連接字符串爲您SQL Server連接:

server=(your server);database=(your database);integrated security=SSPI; 

我還能告訴你什麼?

更新#2:代碼使用Windows帳戶是這樣的:

創建需要使用你的應用程序

CREATE LOGIN (some login name) WITH PASSWORD = 'Top$ecret' 

創建一個用戶的每個用戶登錄在您的數據庫基於該登錄 - 再次,一次爲每個用戶您的應用程序:

爲您的SQL Server連接
USE (your database) 

CREATE USER UserName 
FOR LOGIN (some login name) 

連接字符串:

server=(your server);database=(your database); 
    user id=UserName;Password=Top$ecret 

但再次:這需要一次登錄,包括在每個數據庫,你需要保持跟蹤,並可能做的東西像密碼和一個用戶「重置密碼」操作等從您的數據庫應用程序。管理開銷更多!

+0

@marc_s,請幫助我用代碼實現此目的? – sqlchild

+0

@marc_s,如果我使用Windows帳戶,那麼如果U-1離開他的系統,那麼其他人可以來開始使用他的系統,並打開我的應用程序並連接到SQL數據庫。有沒有什麼辦法可以在那個時候問未知的人連接到SQL Server的密碼? – sqlchild

+0

@sqlchild:當使用Windows賬戶時,你**不會**請求輸入密碼;通過用戶登錄到Windows的事實是SQL Server所需要的 - 沒有提示,也無法打開。如果你想這樣做,那麼你需要使用SQL Server帳戶(一個登錄+一個用戶爲您的數據庫的每個用戶) –

2

維護每個用戶與SQL的連接非常昂貴,並且可能導致應用程序的性能不佳。更好的設計是維護應用程序角色並通過這些角色允許用戶權限。對於連接SQL - 只能使用一個不與任何用戶關聯的帳戶。此帳戶僅用於數據庫訪問,其中數據庫中有一些審計數據用於跟蹤誰做了什麼。

+0

先生,你的意思是說,MAINLOGIN將爲U-1,U-2,U-3創建應用程序角色。對於MAINLOGIN,我將創建一個應用程序角色,然後將其提供給將使用MAINLOGIN的人員。 – sqlchild

+0

爲MAINLOGIN創建用戶U1,U2,U3,他需要一個也映射到他的用戶,但是你說不要爲連接到SQL的帳戶創建任何用戶 – sqlchild

+0

先生我如何給用戶添加權限以添加應用角色? – sqlchild

相關問題