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

标签 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. 我选择了存储过程并单击鼠标右键,选择了“调试过程...”
  7. 已显示调试脚本。我走到执行 SP 的行,然后按 F11 进入。此时我看到了以下内容: enter image description here
  8. 我按下了附件并显示了以下错误: enter image description here

此后,程序执行并执行管道功能,但它不让我进行附件和调试。

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

最佳答案

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

关于c# - 无法附加到 SQL Server 以调试 SQLCLR 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42785521/

相关文章:

c# - 如何在 Entity Framework Code First 中删除一个表?

sql - 已删除数据库 SQL Server 2012 中的对象

java - 从 Java 调用 Catalog 过程执行 SSIS 包

c - 我如何从 C 项目中的 .A 文件调用方法?

C# 格式化年龄 - 关于天、周、月 - 年

c# - Windows Phone 8.1 中的无限滚动

c# - 将派生类的方法重构为公共(public)基类的方法? (C#)

c# - 如何将其转换为字典的字典

.net - SQLCMD 模式与 .net windows 应用程序一起运行

c++ - 如何跟踪或检测 USB 设备的格式化以及如何使用 C++ 知道它已完成格式化?