如何将此连接字符串转换为使用SSPI安全性?

时间:2013-03-28 19:01:32

标签: sql-server sql-server-2008

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

<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菜鸟,如果有人可以就我需要做出的其他改变提供一些建议,我会很感激。

提前致谢。

2 个答案:

答案 0 :(得分: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-hell/

解决SQL Server的SSPI连接问题

答案 1 :(得分:0)

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

“集成安全性 - 如果为false,则在连接中指定用户ID和密码。如果为true,则使用当前Windows帐户凭据进行身份验证。已识别的值为true,false,yes,no和sspi(强烈建议) ,这相当于真实。“

相关问题