使用具有 SQL 服务器身份验证的用户连接到 SQL Server Express 失败
Connection failed to SQL Server Express using user with SQL Server authentication
我在同一台机器上安装了 IIS 和 SQL Server Express。将网站部署到此环境后,出现此错误:
Cannot open database "MyDB" requested by the login. The login failed.
Login failed for user 'IIS APPPOOL\USER'.
这是我设置 SQL 服务器用户
的连接字符串
<connectionStrings>
<add name="myCS1"
connectionString="data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;user id=SomeUser;password=SomeUser###;integrated security=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="myCS2"
connectionString="metadata=res://*/CLModel.csdl|res://*/CLModel.ssdl|res://*/CLModel.msl;provider=System.Data.SqlClient;provider connection string="data source=172.20.3.20\SQLEXPRESS;initial catalog=myDB;persist security info=True;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
我想使用 SQL 服务器用户连接到数据库,而不是 AppPool 用户。
我指定了登录名和密码,但似乎没有考虑此信息,在错误消息中我仍然看到 IIS 用户,但不是 sql。
我错过了什么?
好吧,你指定 both - 明确的用户 ID 和密码, 和 Integrated Security=True
- 在你的 myCS1
连接字符串:
data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;
user id=SomeUser;password=SomeUser###;integrated security=True;
在这种情况下,集成安全性 赢得了您的用户 - 您需要指定 仅 用户 ID 和密码并删除集成安全性 - 所以使用这个:
<connectionStrings>
<add name="myCS1"
connectionString="data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="myCS2"
connectionString="metadata=res://*/CLModel.csdl|res://*/CLModel.ssdl|res://*/CLModel.msl;provider=System.Data.SqlClient;provider connection string="data source=172.20.3.20\SQLEXPRESS;initial catalog=myDB;persist security info=True;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
我在同一台机器上安装了 IIS 和 SQL Server Express。将网站部署到此环境后,出现此错误:
Cannot open database "MyDB" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\USER'.
这是我设置 SQL 服务器用户
的连接字符串<connectionStrings>
<add name="myCS1"
connectionString="data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;user id=SomeUser;password=SomeUser###;integrated security=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="myCS2"
connectionString="metadata=res://*/CLModel.csdl|res://*/CLModel.ssdl|res://*/CLModel.msl;provider=System.Data.SqlClient;provider connection string="data source=172.20.3.20\SQLEXPRESS;initial catalog=myDB;persist security info=True;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
我想使用 SQL 服务器用户连接到数据库,而不是 AppPool 用户。
我指定了登录名和密码,但似乎没有考虑此信息,在错误消息中我仍然看到 IIS 用户,但不是 sql。
我错过了什么?
好吧,你指定 both - 明确的用户 ID 和密码, 和 Integrated Security=True
- 在你的 myCS1
连接字符串:
data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;
user id=SomeUser;password=SomeUser###;integrated security=True;
在这种情况下,集成安全性 赢得了您的用户 - 您需要指定 仅 用户 ID 和密码并删除集成安全性 - 所以使用这个:
<connectionStrings>
<add name="myCS1"
connectionString="data source=172.20.3.20\SQLEXPRESS;initial catalog=MyDB;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="myCS2"
connectionString="metadata=res://*/CLModel.csdl|res://*/CLModel.ssdl|res://*/CLModel.msl;provider=System.Data.SqlClient;provider connection string="data source=172.20.3.20\SQLEXPRESS;initial catalog=myDB;persist security info=True;user id=SomeUser;password=SomeUser###;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>