使用SMO附加数据库保持失败

时间:2010-06-21 15:53:24

标签: sql-server c#-3.0 smo

我使用此SMO代码附加数据库。

        Server mServer = new Server(".");

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

但我一直得到例外

  

无法连接到服务器。

任何想法?

[EDITED]

内部例外:

{“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(provider:Named Pipes Provider,错误:40 - 无法打开与SQL Server的连接)“}

2 个答案:

答案 0 :(得分:2)

错误说明了一切 - SMO无法连接到服务器。

  • 是否存在本地服务器?
  • 您是否有权访问该服务器?
  • 您是否正在使用命名实例(例如“。\ SQLExpress”)??

更多要点:

  • 您没有指定MDF / LDF文件的完整路径 - 尝试使用directory和all指定完整路径。这有什么不同吗?

当我在我的机器上本地执行代码时,您的代码 - 按原样运行 - 完美无瑕。没问题......你的设置一定有些奇怪。

  • 您的SQL Server服务是否正常运行?

您的更新将表明SMO正在尝试使用“命名管道”与您的服务器进行通信。是否在服务器端启用了该协议?检查SQL Server配置管理器(在开始菜单中; SQL Server>配置工具> SQL Server配置管理器):

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

如果客户端尝试使用命名管道进行连接,则需要确保它们在服务器端也已启用(默认情况下,它们不是,如我从屏幕截图中看到的那样)。

答案 1 :(得分:0)

我有类似的问题。无法通过smo附加数据库文件。但是,如果我将Visual Studio的调试或发布文件夹中的mdf和ldf文件复制到根目录(C :),那么它们就会以编程方式附加。 除了不访问服务器之外,您还可以尝试将db文件移动到其他位置。希望有所帮助