需要是 Windows 用户,而不是 SQL Server 用户。 参见 MSDN :
“集成安全性 - 如果为 false,则在连接中指定用户 ID 和密码。如果为 true,则使用当前 Windows 帐户凭据进行身份验证。可识别的值为 true、false、yes、no 和 sspi(强烈推荐),其中相当于 true。”
SSPI。您已创建 SQL Server 身份验证登录,并通过
User ID=
和 Password=
关键字在连接字符串中指定该登录。指定 SSPI 也会导致 SQL Server 尝试通过 Windows 安全令牌对连接用户进行身份验证,该令牌不会由客户端传递给 SQL Server,因为客户端指定了 SQL Server 用户名和密码。简而言之,您指定了两种身份验证方法,而只能指定一种方法。
如果您希望连接使用经过 Windows 身份验证的用户,请使用 FROM WINDOWS
源
创建登录。假设您有一个名为
DOMAIN\MyUser
的 Windows 用户,您可以使用以下代码来完成此操作:
USE [master];
GO
CREATE LOGIN [DOMAIN\MyUser]
FROM WINDOWS;
您还需要在所需的数据库中创建一个用于登录的用户:
USE [<db_name>];
GO
CREATE USER [MyUser]
FOR LOGIN [DOMAIN\MyUser];
注意,上述语句中未指定密码,因为 Windows 正在处理身份验证。
然后,您需要确保应用程序以“DOMAIN\MyUser”身份运行,并在连接字符串中使用以下内容:
<add name="MyEntities"
providerName="System.Data.EntityClient"
connectionString="metadata=
res://*/;
provider=System.Data.SqlClient;
provider connection string='
Data Source=localhost;
Initial Catalog=MyDb;
Integrated Security=SSPI;
MultipleActiveResultSets=True'" />