0

我有一个有效的连接字符串 - 这里是:

<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=False;
  User Id=MyDbUser;
  Password=123456;
  MultipleActiveResultSets=True'" />

我这样设置用户:

USE [master]
GO
IF EXISTS(SELECT * FROM sys.syslogins WHERE name = N'MyDbUser')
    DROP LOGIN [MyDbUser];
GO
CREATE LOGIN [MyDbUser]
    WITH
        PASSWORD=N'123456',
        DEFAULT_DATABASE=[MyDb],
        CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
-- Drop & recreate db-user
USE [MyDb]
GO
IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'MyDbUser')
    DROP USER [MyDbUser];
GO
CREATE USER [MyDbUser] FOR LOGIN [MyDbUser]
GO
EXEC sp_addrolemember N'db_owner', N'MyDbUser'
GO

如果我更改连接字符串以使用 SSPI 安全性,它将不再有效。作为一个 SQL 菜鸟,如果有人可以就我需要进行的其他更改提供一些建议,我将不胜感激。

提前致谢。

4

2 回答 2

0

你有没有尝试过?

<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=True;
    MultipleActiveResultSets=True'" 
/>

像这样创建用户:

CREATE LOGIN [MYDOMAIN\MyUser]
FROM WINDOWS;

然后您需要确定连接到数据库的进程在 Windows 中作为 [MYDOMAIN\MyUser] 运行。

如果做不到这一点,在http://www.allenkinsel.com/archive/2010/06/sql-server-and-sspi-handshake-failed-error-上有一篇关于如何解决 SQL Server 的 SSPI 连接问题的精彩博客文章地狱/

于 2013-03-28T19:03:50.997 回答
0

需要是 Windows 用户,而不是 SQL Server 用户。见 MSDN

"Integrated Security - 为 false 时,在连接中指定用户 ID 和密码。为 true 时,使用当前 Windows 帐户凭据进行身份验证。可识别的值为 true、false、yes、no 和 sspi(强烈推荐),即相当于真的。”

于 2013-03-28T19:08:23.063 回答