服务热线:
产品中心

SQL Server存储进程调试攻略

发布时间: 2023-09-02 17:42:12 来源:产品中心

详细信息

  存储进程(Stored Procedure)是一组为完结特定功用的 SQL 句子集,经编译后存 储在数据库中。用户经过指定存储进程的姓名并给出参数(假如该存储进程带有参数)来 履行它。有时人们将存储进程称为“数据库中埋头苦干的老黄牛”,它是数据库中的一个 重要目标,任何一个规划杰出的数据库应用程序都应该用到存储进程。可是不管编写仍是 调试存储进程都是一项杂乱的作业,因而在本次技能手册中,咱们将对 SQL Server 存储 进程的调试进行具体的介绍,包含了根底的调试办法和在调试进程中呈现的 T-SQL 功能问 题和解决办法。

  exec P_Insert_New_BookTitle_2K5 Red Storm Rising,16.99, Tom,Clancy, 200 咱们用指定的参数履行存储进程,相同由于佣钱费率值无效,对 Authors 表的刺进失 败了。过错产生时,程序履行流程跳转到了 CATCH 代码块,在 CATCH 代码块中咱们回滚了 事务,然后用 SQL Server 2005 自带的函数给 Application_Error_Log 表刺进一行日志。 新的 TRY„„CATCH 代码块无疑使编写处理过错代码更简单,它还能够在任何一个时间里阻 止过错信息发送到客户端。当然这在大多数状况下要 T-SQL 程序员的编程思想有一个改动,这是一 个肯定有必要运用的特性。要记住搬迁 SQL Server 2000 代码到 SQL Server 2005 时,如 果程序的过错处理机制现已规划为旧的发送过错到客户端的办法,那你或许不得不修正应 用程序了。从长远来看,我信任为这种潜在的问题支付尽力从头规划是值得的。

  在对 SQL Server 存储进程做修正和改动时,往往会遇到各式各样的过错和问题, 这或许是由于与现有数据库函数抵触形成的。本部分介绍了怎么对存储进程进行晋级与批 量修正,而不形成过错的办法。

  反常处理被共同认为是 T-SQL 脚本编程中的最弱的方面。走运的是,这一点在 SQL Server 2005 中得到了改动,由于 SQL Server 2005 支撑结构化反常处理。本文首要重视 新特性“TRY„„CATCH”的根本构成,然后在 SQL Server 2000 和 SQL Server 2005 中对 照着看一些 T-SQL 的比方,这些比方中运用事务代码成心制作了一些违背束缚约束的状况。 将来的文章会持续讨论这一主题。 在 SQL Server 之前的版别中,你需要在履行 INSERT,UPDATE,DELETE 之后当即查看 全局变量“@@error”来处理反常,假如“@@error”变量不为零的话(表明有过错),就 接着履行一些纠正动作。研制人员常常重复这种与事务逻辑无关的代码,这会导致重复代 码块,并且需要与 GOTO 句子和 RETURN 句子结合运用。 结构化反常处理为操控具有许多动态运行时特性的杂乱程序供给了一种强有力的处理 机制。现在,这种机制经实践证明是杰出的,许多盛行的编程言语(比方:微软的和 Visual C#)都支撑这种反常处理机制。接下来你会在比方中看到,采用了 这种强健的办法今后,会使你的代码可读性和可维护性更好。TRY 块包含了或许潜在失利 的事务性代码,而 CATCH 块包含了 TRY 块中呈现过错时履行的代码。假如 TRY 块中呈现了 任何过错,履行流程被调转到 CATCH 块,过错能够被处理,而犯错函数能被用来供给详 细的过错信息。TRY„„CATCH 根本语法如下: BEGIN TRY RAISERROR (Houston, we have a problem, 16,1) END TRY BEGIN CATCH SELECT ERROR_NUMBER() as ERROR_NUMBER, ERROR_SEVERITY() as ERROR_SEVERITY, ERROR_STATE() as ERROR_STATE, ERROR_MESSAGE() as ERROR_MESSAGE END CATCH

  本部分介绍了在 SQL Server 中运用反常处理调试存储进程的办法,并对怎样调试 TSQL 存储进程进行了具体介绍,经过对根底的学习,信任您会对存储进程的根底有个愈加 深入的了解。

   SQL Server 中运用反常处理调试存储进程(一)  SQL Server 中运用反常处理调试存储进程(二)  怎样调试 T-SQL 存储进程(一)  怎样调试 T-SQL 存储进程(二)  怎样调试 T-SQL 存储进程(三)

  当应用程序用户开端遇到功能问题时,一般他们会联络数据库管理员并问询是否数据 库存在问题。导致严峻功能问题的往往是编写不妥的 Transact-SQL (T-SQL)代码。因而, 你有必要找出确认功能糟糕的查询并对它们来优化。