我有一个连接到SQL Server数据库的简单控制台应用程序。 但是,它会在运行时抛出以下错误。有线索吗?
Unhandled Exception: System.Data.SqlClient.SqlException: Cannot open database "Database" requested by the login. The login failed.
Login failed for user 'MYDOMAIN\MYUSERID'.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, BooleanignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
我使用的是SQL Server 2005 Express Edition。 但是,我可以使用Database Explorer从Visual Web开发人员连接到SQL Server。 我使用的代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
public class Test
{
public Test()
{
}
static void Main()
{
Console.WriteLine("hello");
string connectionString = "Data Source=localhost\\SQLEXPRESS;Database=Database;Integrated Security=true";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Console.WriteLine("done");
}
}
答案 0 :(得分:3)
控制台应用可以愉快地与SQLExpress数据库交谈。我希望您只需通过management studio配置对您的域帐户的访问权限。据推测,Web开发人员应用程序正在使用ASPNET帐户,该帐户具有不同的域凭据。
答案 1 :(得分:1)
在app.config中验证属性“connectionstring”上的密码是否正常。
我确实遇到了同样的问题。我的密码是空的。我不知道为什么
答案 2 :(得分:1)
这意味着您的登录无权访问数据库!!!
答案 3 :(得分:0)
如果您运行Vista,可能会发生这种情况,因为Visual Web Developer在priveleged帐户下运行,例如管理员(允许您开发和调试您的应用程序)。管理员包含在MSSQL上的管理员组。并且您在您的帐户下运行应用程序运行,该帐户无权连接到MSSQL。
答案 4 :(得分:0)
我猜你可能在web开发者和.net应用程序之间使用不同的协议。 作为快速测试,您可以启动Sql Server配置管理器并在网络配置下启用每个协议。您还可以在该配置工具中检查/更改sql本机客户端的客户端协议。它们都应该默认启用共享内存,但不要再仔细检查。
来自http://msdn.microsoft.com/en-us/library/ms345154.aspx:
网络支持
仅限共享内存连接类型 在本地机器上可以访问 SQL Server Express的默认值, 虽然用户可以明确转向 在其他支持的协议上,例如 TCP / IP和命名管道
我假设这是sql server的本地安装,而不是通过网络吗?