从控制台应用程序访问SQL Server

时间:2009-05-06 10:19:25

标签: c# sql-server console-application

我有一个连接到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");
        }
    }

5 个答案:

答案 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的本地安装,而不是通过网络吗?