使用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 – 仅使用一个与任何用户无关的帐户。 此帐户仅用于数据库访问,其中包含数据库中的某些审计数据以跟踪谁执行了哪些操作。