Je n'arrive pas à joindre une base de données DBName.mdf
à un serveur SQL Server. L'administrateur peut joindre manuellement la base de données, mais si j'essaie, j'obtiens le message d'erreur suivant.Erreur lors de l'association d'une base de données (fichier .mdf) à SQL Server
Database 'DBName' cannot be upgraded because it is read-only, has read-only files or the user does not have permissions to modify some of the files. Make the database or files writeable, and rerun recovery. (Microsoft SQL Server, Error: 3415)
Voici mon code:
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = @"Server=" + SQLServerName + ";database=master;User ID=" + UserName + ";Pwd=" + Password; ;
try
{
conn.Open();
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand("CREATE DATABASE DBName ON (FILENAME = '" + @"C:\DBName.mdf" + "'), (FILENAME = '" + @"C:\DBName_log.ldf" + "') FOR ATTACH", conn);
com.ExecuteScalar();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
Voici les détails de SQL Server
- Product - Microsoft SQL Server Express Edition (64-bit)
- Version - 11.0.2218.0
Je peux créer une nouvelle base de données très bien mais ne peut pas attacher une base de données existante. Qu'est-ce que j'oublie ici?
Toute aide sera appréciée.
Pourriez-vous essayer de le faire ' "CREATE DATABASE DBName ON (FILENAME = « " + @ "C: \ DBName.mdf" + "'), (FILENAME ='" + @ "C: \ DBName_log.ldf" + "') POUR ATTACHER" 'manualy? Est-ce que ça marche? –
Il donne l'erreur ci-dessus si je le fais. Si l'administrateur de la machine de ce SQL Server le fait, cela fonctionne très bien. – Butters
Vous avez donc besoin des informations d'identification d'administrateur pour le faire. Utilisez-vous ici 'conn.ConnectionString = @" Serveur = "+ SQLServerName +"; database = master; User ID = "+ Nom d'utilisateur +"; Pwd = "+ Mot de passe; ; 'un login ADMIN? Peut-être que vous devez donner plus de liberté à votre utilisateur MS SQL Server :) –