使用sql server express为ac#.net winform应用程序创建多个用户

我在sql server express中有一个sql数据库。

我有一个登录MAINLOGIN,用于此数据库。

我希望通过多个用户U1,U2,U3在这个数据库中插入数据,每个用户都有不同的用户ID和密码。

这些用户将由MAINLOGIN手动或通过winform应用程序创建。

因此,在创建MAINLOGIN时,我会允许他进一步创建登录。

为此,我该怎么办?

我无法创建MULTIPLE用户,因为对于一个数据库,只能在一次登录时创建一个用户。

所以我应该创建多个登录,L1,L2,L3,然后映射,U1,U2,U3到他们。

或者,有更好的方法吗? 像应用程序角色等

我不想使用Windows身份validation。 因为如果我知道系统密码,那么我可以通过应用程序简单地连接sql并插入错误的数据。

在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' 

根据该登录信息在数据库中创建用户 – 再次为您的应用的每个用户创建一次:

 USE (your database) CREATE USER UserName FOR LOGIN (some login name) 

SQL Server连接的连接字符串:

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

但同样:这需要一次登录,包括密码和每个数据库中的一个用户 ,您需要跟踪并可能从数据库应用程序执行“重置密码”操作等操作。 在管理开销方面还有很多!

维护每个用户与SQL的连接非常昂贵,并且可能导致应用程序性能不佳。 更好的设计是维护应用程序角色并通过这些角色允许用户权限。 对于连接SQL – 仅使用一个与任何用户无关的帐户。 此帐户仅用于数据库访问,其中包含数据库中的某些审计数据以跟踪谁执行了哪些操作。