我正在寻找 SQL Server 中当前使用 Oracle 执行的以下三个功能的替代方案。
这些是我们基本上需要在 SQL Server 中使用的 Oracle 功能:
DBMS_Application
(Oracle 中的跟踪选项)。DBMS_Session
(在 Oracle 中使用)。DBMS_Output
在数据库级别禁用或启用。
我们正在从 Oracle 迁移到 SQL Server,我们希望确保等效功能可用且可供使用,以便我可以开始测试。
SQL Server 的哪些功能与我们在 Oracle 中使用的这些功能相当?
答案1
DBMS_应用程序信息
笔记: 您应该测试并选择哪种方法效果最好或哪种组合最适合您的需求。彻底测试并比较结果,同时确保这些方法都不会导致 SQL Server 实例的开销问题。例如,SQL Profiler 占用大量资源,因此请谨慎使用。
根据DBMS_APPLICATION_INFO
Oracle 文档中对包功能的一般描述,SQL Server 中的一些功能将提供等效功能。我将在下面列出一些内容,以便您深入了解更多细节并作为起点等。
应用程序开发人员可以使用
DBMS_APPLICATION_INFO
带有 Oracle Trace 和 SQL 跟踪功能的包来记录数据库中正在执行的模块或事务的名称,以供以后跟踪各个模块的性能和调试时使用。
SQL ServerDBMS_APPLICATION_INFO
等效物...
DBMS_会话
DBMS_SESSION
根据 Oracle 文档中对包功能的一般描述,使用ALTER EVENT SESSION
和ALTER ROLE
或者sp_addrolemember
提供与 SQL Server 等效的功能。
DBMS_输出
根据 Oracle 文档中对包功能的一般描述DBMS_OUTPUT
,你可以使用PRINT
或者SELECT
输出消息并相应地编写逻辑。无需深入了解DBMS_OUTPUT Subprograms
逐一看,它提供的一般和基本功能似乎是控制存储过程的输出和调试输出等。
该
DBMS_OUTPUT
包使您能够从存储过程、包和触发器发送消息。该包对于显示 PL/SQL 调试信息特别有用
此外,例如,根据对“如何在 SQL Server 中打印变量的值”根据我过去的 MSSQL 使用情况,这篇文章对此进行了说明,并且对我来说听起来也是正确的。。。
我认为没有直接的 SQL 等效方法。我不知道有任何直接的功能可以为触发器或其他例程留下列表。通常,我只会使用 #temp 表或函数参数来传递中间结果。
如果您想要查看中间结果以用于编辑目的,则可以使用PRINT函数 - 例如在存储过程中,插入打印语句以在编辑环境中显示中间结果是一种常见的调试例程。