演练:调试扩展存储过程

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题不适用 主题不适用 主题不适用 主题不适用

标准版

主题不适用 主题不适用 主题不适用 主题不适用

专业团队版

主题适用 主题适用 主题适用 主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

警告:

扩展存储过程已被否决。虽然在 ASP.NET 中还继续支持扩展存储过程,以便向后兼容,但在未来的版本中将取消对该功能的支持。

引入扩展存储过程是为了允许执行在 T-SQL 中无法执行的操作,如访问文件系统、读取注册表等。现在通过编写 SQL CLR 过程就可以执行这些操作,所以无需再编写扩展存储过程。强烈建议您不要编写新的扩展存储过程,并且考虑将现有的扩展存储过程替换为等效但更安全的 SQL CLR 存储过程。

扩展存储过程是使用 C++ 或任何其他非 SQL 语言编写的 DLL。因此,调试扩展存储过程类似于调试任何该语言的 DLL。

警告:

扩展存储过程通常是用本机 C++ 编写的,因此缺少托管代码提供的保护。应当小心地对它们进行测试,因为其中的 bug 有可能使 SQL Server 崩溃。为了避免潜在的数据丢失和其他问题,不要在生产服务器上调试扩展存储过程。有关更多信息,请参见 ASP.NET Books Online(《ASP.NET 联机丛书》)。

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

调试扩展存储过程

  1. 启动扩展存储过程 DLL 的调试版本。还需要一个调用要调试的扩展存储过程的应用程序。如果没有该应用程序,请执行以下操作之一:

    • 创建一个 Visual Studio 数据库项目,该项目与包含扩展存储过程和调用扩展存储过程的代码的数据库之间有数据连接。

    • 创建调用扩展存储过程的 SQL 脚本文件。

      - 或 -

    • 使用 ISQL/W(随 SQL Server 提供)或 ODBC Test(随 ODBC SDK 提供)等应用程序。

  2. 如果 SQL Server 当前正作为一个服务运行,则通过打开“服务”控制面板,选择“SQL Server”,再单击“停止”使之停止运行。

  3. 将 DLL 的调试版本复制到 sqlservr.exe 驻留的目录或复制到搜索路径中的任何目录。

    - 或 -

    将生成后事件设置为复制 C++ 项目中的 DLL,如下所示:

    1. 打开“<项目> 属性页”对话框。

    2. 在“<项目> 属性页”对话框中,打开“配置属性”文件夹。

    3. 在“配置属性”下,打开“生成事件”文件夹。

    4. 选择“生成后事件”。

    5. 在网格控件中,在“命令行”旁键入复制命令,如下所示:

      Copy c:\MyProjects\MyXProc\debug\MyXProc.dll C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn

  4. 注册扩展存储过程。

  5. 指定 SQL Server 作为扩展存储过程 DLL 的调用可执行文件和工作目录。在“<Project> 项目属性”对话框(可以在“配置属性”的“调试”类别中访问)中修改设置,如下所示:

    • 如果 SQL Server 安装在默认位置,则在“命令”框中键入 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\SQLSERVR.EXE。

    • 将“工作目录”项设置为 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn。

    • 将“命令参数”项设置为 -c-c 选项指示 SQL Server 从命令行启动而不是作为服务启动,这将使 SQL Server 启动得更快。SQL Server 将不作为服务而作为 Visual Studio 调试环境控制下的控制台应用程序启动。这样可以正确地捕获并处理断点。

  6. 在扩展存储过程的源代码中设置断点。

  7. 使用执行命令启动调试会话。有关更多信息,请参见执行控制

    当 SQL Server 启动时将出现控制台窗口。当文本滚动停止时,最后的消息将是:

    启动过程“sp_sqlregister”已启动

    SQL Server 启动并开始处理请求。

  8. 执行扩展存储过程。

    调试器在到达包含断点的行时中断。

    有关如何编写扩展存储过程的其他提示,请参考 Microsoft 知识库的 SQL Server 部分或 MSDN Library 中 SQL Server 文档的“编程扩展存储过程”部分。

请参见

概念

调试 SQL