2010-06-21 58 views
3

我用這個代碼SMO附加數據庫。附加數據庫使用SMO持續失敗

 Server mServer = new Server("."); 

     mServer.AttachDatabase("DbName", new StringCollection { 
      "DbName.mdf", 
      "DbName_log.LDF" }, AttachOptions.None); 

但我不斷收到異常

Failed to connect to server.

什麼想法?

將帖子

內部異常:

{「,而與SQL Server建立連接時出現與網絡相關的或特定於實例的錯誤,服務器未找到或無法訪問驗證。 (提供程序:命名管道提供程序,錯誤:40 - 無法打開與SQL Server的連接)「}

回答

2

錯誤說明了這一切 - SMO無法打開與SQL Server的連接連接到服務器。

  • 這是否本地服務器存在嗎?
  • 您是否有權訪問該服務器?
  • 你也許使用了命名實例(例如「 \ SQLExpress」的形式)?

更多點:

  • 你不指定MDF/LDF文件的完整路徑 - 嘗試用指定目錄和所有一個完整路徑。這有什麼區別嗎?

您的代碼 - 按原樣 - 當我在本地機器上執行它時完美無缺。完全沒有問題......你的設置肯定有些奇怪。

  • 是您的SQL Server服務啓動並運行?

您的更新將表明SMO正在嘗試使用「命名管道」與您的服務器進行通信。該協議是否在服務器端啓用?檢查SQL Server配置管理器(在開始菜單中,SQL Server>配置工具> SQL Server配置管理器):

alt text http://i49.tinypic.com/xatfmv.png

如果客戶端嘗試使用命名管道連接,你需要確保他們」也可以在服務器端重新啓用(默認情況下,它們不是,從您的截圖中可以看到)。

+0

本地服務器存在,我可以用手... 權利附加的文件,我是計算機的管理員。 我只是用「。」 Server構造函數中的字符串。 – 2010-06-21 16:01:09

+0

我使用了Path.GetFullPath靜態方法的完整路徑,也檢查了它..它已滿......\ bin \ Debug \ data \ DbName.mdf等 – 2010-06-21 16:04:42

+0

是的,如果我手工連接數據庫,我的程序正確啓動...當我的程序無法連接到服務器我有一個表單設置連接字符串檢查連接並附上數據庫......但一直失敗。 – 2010-06-21 16:07:13

0

我有一個類似的問題。無法通過smo附加數據庫文件。但是,如果我將mdf和ldf文件從Visual Studio的調試或發佈文件夾複製到根目錄(C :),那麼它們將以編程方式附加到該目錄。 除了不訪問服務器,您可以嘗試將db文件移動到另一個位置。希望幫助