2011-08-22 4 views
1

J'ai déployé l'application C# et créé le programme d'installation. Installer est créé avec succès mais quand essayé de lancer l'application, il vomit erreur suivant:Base de données Erreur lors du lancement de l'application

An attempt to attach an auto-named database for file CampusPointe.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

chaîne de connexion

dans app.config est la suivante:

<connectionStrings> 
    <add name="App_Key_Management.Properties.Settings.VendorKeyConnectionString1" 
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Program Files\Vendor Key Management\VendorKey.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Toute aide serait appréciée.

Cordialement, Sri

+1

CampusPointe.mdf? D'où vient ce fichier dans l'image? – deutschZuid

+0

Les fichiers de base de données primaires sont stockés dans des fichiers * .mdf. Avez-vous installé SQL Server Express sur Windows Server 2008? Lorsque vous avez effectué l'installation, avez-vous enregistré certains fichiers sur un dossier partagé en réseau? – MacGyver

Répondre

1

Sri,

Tout d'abord, vous devez vous assurer deux choses: 1. Vous avez installé SQL Server 2. Vous devez faire face à la création ou remplacement du fichier que vous avez créé. Je pense que c'est votre problème ... Si le fichier .mdf existe, vous devez soit mettre à jour le fichier existant, soit le supprimer et le remplacer (USE [base de données] GO DROP TABLE ... GO CRATE TABLE ... GO). Vous devrez également considérer l'étape 4 ci-dessous. 3. Si vous accédez à un fichier situé dans une base de données, vous avez besoin d'un nom complet. Vous devez également ajouter l'utilisateur de base de données à la chaîne de connexion dans ASP.NET Web.Config ou App.config (en fonction de l'application). J'ai l'impression que vous avez démarré cela ... 4. Assurez-vous que le compte d'utilisateur que vous utilisez dans la chaîne de connexion possède les privilèges nécessaires du côté de la base de données. S'il s'agit d'une base de données complète dans SQL SERVER, le compte utilisateur devra être mis à jour, supprimé, créer des privilèges. Si vous remplacez ou créez des bases de données à la volée, l'utilisateur aura besoin des privilèges CREATE DATABASE ou DROP/CREATE.

Je pense que pour mieux répondre à votre question nous aurions besoin de plus d'informations sur l'architecture de l'application. Je suppose que votre code crée bien la base de données la première fois, puis lorsque vous essayez de l'exécuter la deuxième fois, il échoue parce que la base de données est déjà là. Si tel est le cas, vous devez également adresser votre code (avec les instructions IF ou SWITCH CASE ... votre appel) pour gérer les situations où la table (1) n'existe pas et doit être créée; (2) existe et doit être mis à jour; et/ou (3) existe et doit être remplacé. La bonne réponse dépend à nouveau de votre code et de ce que vous essayez de faire.

Questions connexes