我有一个有效的连接字符串 - 这里是:
<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菜鸟,如果有人可以就我需要做出的其他改变提供一些建议,我会很感激。
提前致谢。
答案 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(强烈建议) ,这相当于真实。“