4

我有一个连接到 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 速成版。但是,我可以使用数据库资源管理器从 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");
        }
    }
4

5 回答 5

3

控制台应用程序可以愉快地与 SQLExpress 数据库对话。我希望您只需要通过management studio配置对您的域帐户的访问。据推测,Web 开发者应用程序正在使用具有不同域凭据的 ASPNET 帐户。

于 2009-05-06T10:21:45.723 回答
1

在 app.config 中验证属性“connectionstring”上的密码是否正常。

我确实遇到了同样的问题。我的密码是空的。我不知道为什么

于 2012-05-15T19:04:22.310 回答
1

这意味着您的登录名无权访问该数据库。

于 2014-01-02T15:35:04.090 回答
0

我猜你可能在 web 开发和你的 .net 应用程序之间使用了不同的协议。作为快速测试,您可以启动 Sql Server 配置管理器并启用网络配置下的每个协议。您还可以在该配置工具中检查/更改 sql native 客户端的客户端协议。默认情况下,它们都应该启用共享内存,但仔细检查也无妨。

来自http://msdn.microsoft.com/en-us/library/ms345154.aspx

网络支持

默认情况下,SQL Server Express 只能访问本地计算机上的共享内存连接类型,尽管用户可以显式打开其他支持的协议,例如 TCP/IP 和命名管道

我假设这是本地安装的 sql server,而不是通过网络安装,对吗?

于 2009-05-06T13:23:39.110 回答
0

如果您运行的是 Vista,那么这可能会发生,因为 Visual Web Developer 在特权帐户下运行,例如管理员。这样做是为了让您开发和调试您的应用程序。管理员帐户包含在 MSSQL 的管理员组中。您的控制台应用程序在您的帐户下运行,该帐户无权连接到 MSSQL。

于 2009-05-06T10:41:29.577 回答