2010-06-15 7 views
0

J'ai tenté de compiler/exécuter un exemple d'application WCF à partir du site Web de Juval Lowy (auteur de Programming WCF Services & fondateur d'IDesign) pendant plusieurs jours. L'exemple d'application utilise la bibliothèque ServiceModelEx de Juval qui enregistre les erreurs/erreurs dans une base de données SQL "WCFLogbook". Malheureusement, lorsque les défauts d'application de l'échantillon, je reçois l'erreur suivante:Erreur de journalisation WCF et erreur SQL Exception 4060

SQL Exception 4060: "Cannot open database \"WCFLogbook\" requested by the login. The login failed.\r\nLogin failed for user 'Bill-PC\Bill'."

Je confirme que la base de données SQL WCFLogbook a été créé et ont accordé toutes les autorisations appropriées pour mon (projet de loi-PC \ Bill) accès à la base de données. De plus, le port 8006 et le port 1433 ont été ouverts dans le pare-feu. TCP/IP a été activé et "Autoriser les connexions distantes à ce serveur" a été vérifié. J'utilise le critère suivant dans le fichier App.Config:

<client> 
    <endpoint name="LogbookTCP" 
     address="net.tcp://Bill-PC:8006/LogbookManager" 
     binding="netTcpBinding" 
     contract="ILogbookManager" 
    /> 
</client> 

Malheureusement SQL est un « monde » que je ne l'avais pas besoin de se lancer dans avant maintenant et je suis terriblement frustré par mon manque de succès. Quelqu'un aurait-il d'autres suggestions sur la façon de le faire fonctionner? Ai-je manqué quelque chose?

Répondre

1

Cannot open database "WCFLogbook" requested by the login

Le message d'erreur est assez clair. Je comprends votre frustration, mais je fais d'abord confiance au message d'erreur et ensuite à votre enquête. Le message d'erreur indique que la base de données n'existe pas ou qu'elle ne peut pas être ouverte ou que l'utilisateur n'y a pas accès. Vous devez valider étape par étape que:

  • votre service WCF se connecte à l'instance SQL Server que vous attendez
  • la base de données que WCFLogbook existe sur l'instance SQL Server que vous connectez. Notez que si vous avez installé une instance de classement sensible à la casse, le nom est sensible à la casse
  • la base de données WCFLogbook est en ligne
  • la connexion Bill-PC \ Bill est autorisé à se connecter à la base de données.
+0

Remus - Après être passé à travers le fichier WCFLogbook.sql utilisé pour créer la base de données WCFLogbook, j'ai réalisé que le fichier essayait de créer la base de données avec un chemin inexistant - C: \ Program Files \ Microsoft SQL Server \ MSSQL \ données \ WCFLogbook.mdf '. Ainsi, la base de données n'était pas vraiment créée. Merci de votre aide. Facture – Bill

0

SQL Exception 4060: "Cannot open database \"WCFLogbook\" requested by the login. The login failed.\r\nLogin failed for user 'Bill-PC\Bill'."

Il est clair que vous avez assez d'une erreur de connexion à votre base de données. Où est l'exception jeter? Dans votre application cliente ou dans votre appel au service WCF?

La raison pour laquelle je demande est de vous indiquer où déboguer; Si l'exception provient d'un contrat d'erreur sur l'appel WCF, il se produit probablement dans le service lui-même. Si c'est sur l'application cliente, c'est évidemment là que se situe le problème.

Quelle version de SQL utilisez-vous? Si vous avez SQL Express alors par défaut, vous devriez avoir des autorisations suffisantes pour exécuter l'application. Votre utilisateur est un administrateur? Vous devrez peut-être ouvrir la base de données en tant qu'administrateur, puis vérifier que Bill-PC \ Bill dispose d'un identifiant et qu'il a été mappé sur le schéma dbo de la base de données WCFLogbook.

+0

Spence - Merci pour votre aide. Comme vous le verrez ci-dessous, malheureusement la base de données n'a pas été créée comme je le pensais (un problème de chemin), et après avoir corrigé le chemin dans le fichier sql, l'application a fonctionné comme espéré. Encore une fois, merci pour l'aide. Bill – Bill