我可以在 SQL Server 2017 中实现 DBMS_Application、DBMS_Session、DBMS_Output 吗

我可以在 SQL Server 2017 中实现 DBMS_Application、DBMS_Session、DBMS_Output 吗

我正在寻找 SQL Server 中当前使用 Oracle 执行的以下三个功能的替代方案。

这些是我们基本上需要在 SQL Server 中使用的 Oracle 功能:

  1. DBMS_Application(Oracle 中的跟踪选项)。
  2. DBMS_Session(在 Oracle 中使用)。
  3. DBMS_Output在数据库级别禁用或启用。

我们正在从 Oracle 迁移到 SQL Server,我们希望确保等效功能可用且可供使用,以便我可以开始测试。

SQL Server 的哪些功能与我们在 Oracle 中使用的这些功能相当?

答案1

DBMS_应用程序信息

笔记: 您应该测试并选择哪种方法效果最好或哪种组合最适合您的需求。彻底测试并比较结果,同时确保这些方法都不会导致 SQL Server 实例的开销问题。例如,SQL Profiler 占用大量资源,因此请谨慎使用。

根据DBMS_APPLICATION_INFOOracle 文档中对包功能的一般描述,SQL Server 中的一些功能将提供等效功能。我将在下面列出一些内容,以便您深入了解更多细节并作为起点等。

  • DBMS_应用程序信息

    应用程序开发人员可以使用DBMS_APPLICATION_INFO带有 Oracle Trace 和 SQL 跟踪功能的包来记录数据库中正在执行的模块或事务的名称,以供以后跟踪各个模块的性能和调试时使用。

    来源

SQL ServerDBMS_APPLICATION_INFO等效物...


DBMS_会话

DBMS_SESSION根据 Oracle 文档中对包功能的一般描述,使用ALTER EVENT SESSIONALTER ROLE或者sp_addrolemember提供与 SQL Server 等效的功能。

  • DBMS_会话

    此包提供从 PL/SQL 访问 SQLALTER SESSION和语句以及其他会话信息的功能。您可以使用它来设置首选项和安全级别。SET ROLEDBMS_SESSION

    来源


DBMS_输出

根据 Oracle 文档中对包功能的一般描述DBMS_OUTPUT,你可以使用PRINT或者SELECT输出消息并相应地编写逻辑。无需深入了解DBMS_OUTPUT Subprograms逐一看,它提供的一般和基本功能似乎是控制存储过程的输出和调试输出等。

  • DBMS_输出

    DBMS_OUTPUT包使您能够从存储过程、包和触发器发送消息。该包对于显示 PL/SQL 调试信息特别有用

此外,例如,根据对“如何在 SQL Server 中打印变量的值”根据我过去的 MSSQL 使用情况,这篇文章对此进行了说明,并且对我来说听起来也是正确的。。。

  • 我认为没有直接的 SQL 等效方法。我不知道有任何直接的功能可以为触发器或其他例程留下列表。通常,我只会使用 #temp 表或函数参数来传递中间结果。

    如果您想要查看中间结果以用于编辑目的,则可以使用PRINT函数 - 例如在存储过程中,插入打印语句以在编辑环境中显示中间结果是一种常见的调试例程。

    来源


更多资源

相关内容