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

2024-03-12

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

我有一个用于该数据库的登录 MAINLOGIN。

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

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

因此,在创建 MAINLOGIN 时,我会授予他进一步创建登录名的权限。

为此我该怎么办?

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

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

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

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


在 SQL Server 中,您可以拥有基于 Windows 帐户的帐户,也可以拥有单独的特定 SQL 帐户。对于这两种变体,您需要每个用户一个帐户需要使用您的数据库。

唯一的例外是为 Windows 安全性创建 SQL Server 登录的能力group, e.g. MyAppUsers,然后是数据库中用于该登录的用户。这样,属于该安全组(在 Windows/AD 中)的任何 Windows 帐户也将有权查看/使用您的数据库。

通过这种方法,您还可以将谁可以使用您的数据库的管理移出 SQL Server,因为它实际上只取决于 Windows 安全组中的成员身份。

一次登录,一个用户 - 多个 Windows 帐户获得此权限。对我来说似乎是赢家!

Update:

为 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:代码not使用 Windows 帐户是这样的:

创建一个登录名each需要使用您的应用程序的用户

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

但再次强调:这需要每个数据库中包含一个登录名(包括密码)和一个用户您需要跟踪并可能从数据库应用程序中执行“重置密码”操作等操作。管理开销方面还有更多!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用sql server express为c#.net winform应用程序创建多个用户 的相关文章

随机推荐