2012-09-27 1 views
-2

J'ai installé MS Sql Server 2012 dans mon bureau et essayer d'écrire un programme C# pourFixer la base de données n'a pas réussi à SQL Server 2012

Joindre un fichier DB à SQL Server 2012, alors que j'exécute le message d'erreur de programme jeté

comme mentionné ci-dessous, pouvez-vous s'il vous plaît me aider à résoudre

ci-dessous un message d'erreur lancée par MS SQL Server 2012,

les fichiers DB (mdf et LDF)

en utilisant ci-dessous le code:

Méthode:

AttachDb("sqlDb","[C:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\sqlDb.mdf] [C:Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\sqlDb_log.ldf]"); 

Message d'erreur:

80131501 Error: An exception occurred while executing a Transact-SQL statement or batch. 
    From: Microsoft.SqlServer.ConnectionInfo 
    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType) 
     at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType) 
     at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries) 
     at Microsoft.SqlServer.Management.Smo.Server.AttachDatabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions) 
     at Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files) 
    80131500 Error: Attach database failed for Server 'sqlDbServer'. 
    From: Microsoft.SqlServer.Smo 
     at Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files) 
     at TestSMO.AttachDb(String dbname, String filelist) 

code:

 static string instance = ""; 
    static string username = ""; 
    static string password = ""; 
    static string connection_timeout = "600"; 
    static string statement_timeout = "3600"; 

    //create server connection object 
    static Server Connect() 
    { 
    ServerConnection conn = new ServerConnection(); 
    instance="sqlDbServer"; 
    if (instance.Length > 0) 
     conn.ServerInstance = instance; 

    if (username.Length > 0) { 
     conn.LoginSecure = false; 
     conn.Login = username; 
     conn.Password = password; 
    } 

    conn.ConnectTimeout = Convert.ToInt32(connection_timeout); 
     conn.StatementTimeout = Convert.ToInt32(statement_timeout); 
     return new Server(conn); 
    } 



    //performing attache DB 
    static void AttachDb(string dbname, string filelist) 
     { 
      string[] files = filelist.Split(new char[] {'['}, StringSplitOptions.RemoveEmptyEntries); 
      StringCollection dbfiles = new StringCollection(); 
      foreach (string s in files) { 
       string s1 = s.TrimEnd(null); 
       s1 = s1.TrimEnd(']'); 
       if (s1.Length > 0) dbfiles.Add(s1); 
      } 
      Server svr = Connect(); 
      string name = DecodeString(dbname); 
      svr.AttachDatabase(name, dbfiles); 
     } 
+1

Est-ce l'exception complète, y compris toutes les exceptions internes? SQL Server génère généralement de meilleurs messages. – usr

+0

Pourquoi mettez-vous des crochets autour des noms de fichiers? Ce sont des cordes, pas des identifiants. –

+0

Bonjour, merci pour la réponse rapide, étant donné que "exception complète" tirée de consol –

Répondre

-2

Émises résolu en fournissant tous les rôles de serveur à NT AUTHORITY \ SYSTEM Connexion de SQL S instance de DB erver.

Questions connexes