4 votes

Accéder à SQL Server à partir d'une application console

J'ai une application Console simple qui se connecte à une base de données SQL Server. Cependant, elle génère l'erreur suivante lors de l'exécution. Des indices?

Unhandled Exception: System.Data.SqlClient.SqlException: Impossible d'ouvrir la base de données "Database" demandée par la connexion. Échec de la connexion.
Échec de la connexion pour l'utilisateur '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)

J'utilise SQL Server 2005 Express Edition. Cependant, je parviens à me connecter à SQL Server à partir de Visual Web Developer en utilisant l'Explorateur de bases de données. Le code que j'ai utilisé est le suivant:

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");
        }
    }

3voto

Marc Gravell Points 482669

Les applications Console peuvent communiquer facilement avec les bases de données SQLExpress. Je suppose que vous avez simplement besoin de configurer l'accès à votre compte de domaine via management studio. Apparemment, l'application web-developer utilise le compte ASPNET, qui a des identifiants de domaine différents.

1voto

PabloKarzin Points 701

Vérifiez dans app.config si le mot de passe est OK sur l'attribut "connectionstring".

J'ai eu le même problème que vous. Et mon mot de passe était vide. Je ne sais pas pourquoi

1voto

user2971569 Points 45

Cela signifie que votre connexion n'a pas les droits d'accès à cette base de données.

0voto

Tom Points 1

Si vous utilisez Vista, cela se produit probablement parce que Visual Web Developer s'exécute sous un compte privilégié, par exemple Administrateur. Cela est fait pour vous permettre de développer et de déboguer vos applications. Le compte Administrateur est inclus dans le groupe admins sur MSSQL. Votre application console s'exécute sous votre compte qui n'a pas les autorisations pour se connecter à MSSQL.

0voto

ahains Points 1684

Je supposerais que vous pourriez utiliser un protocole différent entre le développement web et votre application .net. En tant que test rapide, vous pouvez lancer le Gestionnaire de Configuration de SQL Server et activer chaque protocole sous la configuration réseau. Vous pouvez également vérifier/changer les protocoles client pour le client natif SQL dans cet outil de configuration. Ils devraient tous les deux avoir la mémoire partagée activée par défaut, mais cela ne fait pas de mal de vérifier deux fois.

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

Prise en charge du réseau

Seul le type de connexion mémoire partagée sur la machine locale est accessible par défaut pour SQL Server Express, bien que l'utilisateur puisse explicitement activer d'autres protocoles supportés tels que TCP/IP et Named Pipes

Je suppose qu'il s'agit d'une installation locale de SQL Server, pas via le réseau, n'est-ce pas?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X