我有一个桌面应用程序,希望用户通过 PC 上的 RDP 访问它。我在 Windows Server 2022 中以管理员身份安装了该应用程序,并将其提供给其他 RDP 用户。所有用户在使用 RDP 登录时都会在桌面上看到该快捷方式。

该应用程序使用SQL Server数据库,并且连接由应用程序中的app.config文件管理。

connectionString="Data Source=localhost;Initial Catalog=DB;Integrated Security=True

我可以使用我的管理员帐户运行该应用程序。

但是,当使用普通用户帐户时,他们可以运行应用程序,但无法连接到数据库。它返回“ad\thisuser 登录数据库失败”。

我已经启用了数据库的远程连接,并且已经启用了 TCP/IP 连接(尽管我确信这不是必要的)。

如何授予用户连接数据库的权限?

这个解决方案对我没有用:

(Windows Server 2022、SQL Server 2019)

8

  • 1
    您是否?附注:授予用户访问数据库的权限通常不是一个好主意。授予他们访问强制执行访问权限和数据库一致性的服务的权限。我认为这是


    – 


  • 1
    远程连接无关紧要,RDP 也是如此。与数据库的连接在本地进行。


    – 

  • Virdarlo:感谢您的评论。我实际上是通过应用程序配置文件管理对数据库的访问;他们没有安装 SSMS 或任何其他东西。但尽管已授予此远程桌面用户对数据库的登录权限,它仍然不起作用!它似乎在查看登录的域用户,而不是 app.config 文件


    – 

  • 嘿,我取得了一些进展……我已在 [数据库名称] > 安全 > 用户中允许用户访问,而不是在数据库 > 安全 > 登录中。但现在它无法打开表。等我弄清楚对象权限后再恢复……


    – 


  • 您认为您已经管理了访问权限,但实际上并非如此。用户将能够直接更改数据库。再加上对数据库权限的了解不足,这将会酿成灾难。退一步,重新设计您的软件。


    – 


最佳答案
1

虽然我认为有更好的答案,但这就是我的做法:

使用管理员登录,转到 SSMS > 对象资源管理器 > 服务器 > 数据库 > [myDB]

展开安全 > 用户 > 新用户…

在“选择页面”下

  • 一般的:

在主窗口中,

  • 用户类型:Windows 用户
  • 用户名:输入或选择用户,例如 AD\User1。

返回选择页面

  • 安全资产

在主窗口中

  • 搜索…> 添加对象>所有类型的对象。

  • 单击“确定”

选择对象类型、选择数据库的对话框

在 [DatabaseName] 的权限下,请确保至少选择:

  • 选择

  • 插入

  • 删除

  • 连接

  • 执行

  • 更新

单击“确定”完成

我很高兴能改进这一点,尤其是如果可以对整个群组进行改进的话。当我尝试对群组用户进行改进时,我收到了登录名无效的错误

1

  • 或者仅授予用户 db_datareader 和 db_datawriter 数据库角色。


    –