无法附加到SQL Server以调试SQLCLR存储过程

时间:2017-03-14 12:04:03

标签: c# sql-server visual-studio sqlclr

我想在SQL Server中调试SQLCLR存储过程。我一直在尝试在VS2015社区和最近安装的VS2017社区版本中调试SP,但没有成功。我很确定问题在于附加到SQL Server,但是我已经完成了我在网上提到的所有内容,但无济于事。

在SQL Server Express LocalDB中创建数据库项目时,一切正常。如果我更改连接字符串以使用我的Developer Edition SQL Server,那么我会收到错误。我做了以下事情:

  1. 我创建了一个新数据库。我是服务器的唯一用户,它驻留在我用于Visual Studio的同一桌面计算机上。
  2. 在Visual Studio中,我使用一种简单的方法创建了一个简单的数据库项目,以便将一些文本发送到输出管道。

    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void mytest ()
    {
        SqlContext.Pipe.Send("in clr Craig1");
    }
    
  3. 我在项目属性中编辑了目标连接字符串以连接到新数据库,并在按下连接按钮时成功建立连接。连接字符串对我使用Windows身份验证,使用与数据库所有者相同的用户。
  4. 我构建并部署了解决方案,并检查了SQL对象资源管理器以确保部署了SP。是的。
  5. 我选择了服务器,并使用右键单击选择了“允许SQL / CLR调试”。我再次检查它以确保它实际设置。
  6. 我选择了存储过程并右键单击,选择“Debug Procedure ...”
  7. 显示了调试脚本。我走到线上执行SP,然后按F11进入。此时我看到以下内容: enter image description here
  8. 我按了附件,显示以下错误: enter image description here
  9. 此后,该过程执行并执行管道功能,但它不允许我进行附件和调试。

    我做错了什么想法? 谢谢 克雷格

1 个答案:

答案 0 :(得分:0)

您可能只需要以“以管理员身份运行”启动Visual Studio。我不相信在运行Windows 8时我需要这样做,但我现在正在运行Windows 10并且肯定需要“以管理员身份运行”。我猜你不能以其他方式附加到别人的进程(我的Developer Edition使用“SQL Server”的服务帐户运行,但是LocalDB总是作为启动它的登录运行,通常是你自己)。我没有测试过看看运行Developer Edition是否仍然需要“以管理员身份运行”,或者如何将Developer Edition作为“本地系统”运行会影响此行为。