【发布时间】:2019-01-29 10:44:29
【问题描述】:
我有以下问题,我有一个服务在低级别运行并连接到sql server localdb的mdf数据库。但是该服务在连接数据库时使用了不同的帐户'AUTHORITY NT \ SYSTEM',它不会让任何其他高级程序连接到数据库。
反之亦然,如果你有任何高级程序连接到数据库,服务不会连接。
连接字符串:
way = $"Data Source = (LocalDB)\\v11.0; AttachDbFilename = { MDF}; Integrated Security = True; Connect Timeout = 30 ";
两个账号可以同时连接吗?
【问题讨论】:
-
是的。首先不要在连接字符串中使用 MDF 文件名。数据库连接到服务器,服务器知道文件的位置。然后对数据库(不是 SQL)使用 Windows 凭据(即 Integrated Security = true)。设置数据库将使用的 Window 用户组帐户。将用户添加到组帐户。远程连接时,请确保组帐户在服务器 PC 和客户端 PC 上。
-
@jdweng 不是很懂,怎么连接字符串中不用
mdf这个名字?在我的例子中,MDF 名称是一个字符串,它采用银行所在的路径。我是否必须在 windows 用户 chant 中创建用户 'AUTHORITY NT \ SYSTEM'? -
@stuartd 但是如何在连接上传递 windows 用户帐户?
-
你没有。您以用户帐户运行服务,并使用 windows 身份验证连接到服务器。
-
如果它已经与 Integrated Security = True 一起工作,除了从连接字符串中删除 AttachDbFilename 之外,您无需执行任何操作。 mdf 文件是 SQL 中的数据库。因此,您可以在连接字符串中包含默认数据库,或者在 SQL 查询中添加“使用数据库名称”以选择正确的数据库。在 Windows 的用户帐户中,将用户添加到数据库正在使用的同一组中。您不需要 AUTHORITY NT \ SYSTEM 这是更高级别的管理员帐户。只需创建一个普通组帐户并将数据库凭据和用户放在同一组中即可。
标签: c# sql-server service mdf