2012-09-27 63 views
-2

我已经在我的桌面上安装了MS SQL Server 2012中,并试图当我执行抛出连接数据库失败到SQL Server 2012

程序错误信息编写C#程序

附加数据库文件到SQL Server 2012,

如下更不用说了,可以请你帮我解决

低于MS SQL Server 2012中抛出的错误消息,

数据库文件(MDF和LDF)

使用下面的代码:

方法:

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

错误消息:

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) 

代码:

 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

这是否包含所有内部异常? SQL Server通常会生成更好的消息。 – usr

+0

为什么你把方括号放在文件名的周围?他们是字符串,而不是标识符。 –

+0

嗨,感谢您的快速回复,因为例外情况是“完全例外”取自CONSOL –

回答

-2

通过提供所有服务器角色NT AUTHORITY \发出解决SYSTEM登录SQL S erver数据库实例。