小弟在做一个卖软件的网站,用的是三层架构,服务层放在IIS6.0的虚拟路径里,其他在本地文件夹,数据库是SoftMarket,而显示层的连接字符串是:
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=5B647617291447D\LOCAL;Initial Catalog=UserProvider;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="SoftMarketConnectionString" connectionString="Data Source=5B647617291447D\LOCAL;Initial Catalog=SoftMarket;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
服务层的连接字符串是:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="SoftMarket" connectionString="Data Source=5B647617291447D\LOCAL; Initial Catalog=SoftMarket; Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
但在调试的时候就出现了下面的错误,请各路英雄一定要帮帮小弟,小弟吃饭还是吃粥都靠大家了,你们是我最后的希望了:System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "SoftMarket"。登录失败。
用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 SoftMarketSrv.GetGategories() 位置 f:\编程开发(2008年7月12日)\ASPNET作业\SoftMarket\Service\App_Code\SoftMarketSrv.cs:行号 40
--- 内部异常堆栈跟踪的结尾 ---
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=5B647617291447D\LOCAL;Initial Catalog=UserProvider;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="SoftMarketConnectionString" connectionString="Data Source=5B647617291447D\LOCAL;Initial Catalog=SoftMarket;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
服务层的连接字符串是:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="SoftMarket" connectionString="Data Source=5B647617291447D\LOCAL; Initial Catalog=SoftMarket; Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
但在调试的时候就出现了下面的错误,请各路英雄一定要帮帮小弟,小弟吃饭还是吃粥都靠大家了,你们是我最后的希望了:System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "SoftMarket"。登录失败。
用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 SoftMarketSrv.GetGategories() 位置 f:\编程开发(2008年7月12日)\ASPNET作业\SoftMarket\Service\App_Code\SoftMarketSrv.cs:行号 40
--- 内部异常堆栈跟踪的结尾 ---
providerName="System.Data.SqlClient" />
改成这个看看。
<add name="SoftMarket" connectionString="Data Source=.; Initial Catalog=SoftMarket; Integrated Security=True"
providerName="System.Data.SqlClient" />
是不是权限问题啊?
给数据库增加上面这个Network Serverice用户,设置它的权限为可读,有必要的话加上可写。
我的电脑-->右键-->管理-->本地用户和组
选择“组”-->双击Administrators-->单击“添加”-->单击“高级”-->单击“立即查找”-->在下面的列表中选择Network Service用户-->两次单击“确定”-->加入。 第二步 在企业管理器中加入NetWord Service用户
打开Sql Server企业管理器-->选择数据库实例-->打开“安全性”节点-->选择“登录”-->在右边的列表中单击右键-->选择“新建登录”-->在“常规”选项卡中单击“名称”旁边的按钮“...”-->选择“Administrators”组-->单击下面的“成员”按钮-->选择“Network Service”-->单击“添加”按钮-->单击“确定”,返回“新建登录”对话框-->保证身份验证类型为“windows验证”和“允许访问”-->单击“确定”-->关闭“企业管理器” 第三步
重新运行asp.net程序,数据库连接字符串选择windows验证即可。
抄人家的
sql外围配置工具里面 有个远程连接 选项 试看 ,
1.打开SQL Server Manegement Studio
2.在 安全性 - 登录名 中 添加 NT AUTHORITY\NETWORK SERVICE
3.双击该用户 在服务器角色 中 勾选 sysadmin 问题解决了!