比较两个数据库中的过程定义
Compare procedure Definition within two databases
我们有一个 Sql Server 2012 的实例,
在实例中,我们有 2 个数据库,分别称为 A 和 B(假设 A 作为生产数据库,B 作为开发数据库,B 是数据库 A 的精确副本)
假设出于开发目的,某些过程(已经存在,不是新创建的)定义在数据库 B 中更改,但在 A(生产数据库)中未更改。
为了找到定义不同的过程,我想到了以下场景,但问题是我不是 100% 确定这个场景每次都有效。
所以请就此提出您的想法。
场景
临时 Table 1 ( A_PROCEDURE ) -- 保存数据库 A 中存在的所有过程名称和定义(从数据库 A 执行)
select * into A_PROCEDURE FROM (
Select routine_name,routine_definition from INFORMATION_SCHEMA.ROUTINES ) DTL;
现在我已经从数据库 B 中执行了以下查询以找到所有与过程定义不同的过程
SELECT T.ROUTINE_NAME B_PROC,
L.ROUTINE_NAME A_PROC,T.ROUTINE_DEFINITION B_PROC_DEF,L.ROUTINE_DEFINITION A_PROC_DEF
FROM INFORMATION_SCHEMA.ROUTINES T JOIN A.DBO.A_PROCEDURE L ON T.ROUTINE_NAME = L.ROUTINE_NAME
AND T.ROUTINE_DEFINITION <> L.ROUTINE_DEFINITION;
从上面的查询中,我找到了名称相同但定义不同的过程(哪些是正确的 - 逐行手动检查)。
那么这是正确的方法吗?还应该考虑其他什么吗?请分享您对此的想法
感谢并致以最诚挚的问候,
毗湿奴
您好 Vishnudas:您需要 sp_HelpText
系统存储过程。此实用程序将每个存储过程的定义存储在 SQL 服务器数据库引擎中。
每个 DBA 或开发人员都值得使用一个比较工具。同时,您可以检查 this blog 在哪里可以编写没有关于两个存储过程的 in-line 比较统计信息的脚本。在那里,您会得到有关 sp_HelpText
.
用法的解释
但是,我建议使用像SQL Compare tool, used by production teams in some middle and large companies. An useful top list is recommended这样的比较工具,并且它已被其他同行审查过。
我们有一个 Sql Server 2012 的实例, 在实例中,我们有 2 个数据库,分别称为 A 和 B(假设 A 作为生产数据库,B 作为开发数据库,B 是数据库 A 的精确副本)
假设出于开发目的,某些过程(已经存在,不是新创建的)定义在数据库 B 中更改,但在 A(生产数据库)中未更改。
为了找到定义不同的过程,我想到了以下场景,但问题是我不是 100% 确定这个场景每次都有效。 所以请就此提出您的想法。
场景
临时 Table 1 ( A_PROCEDURE ) -- 保存数据库 A 中存在的所有过程名称和定义(从数据库 A 执行)
select * into A_PROCEDURE FROM (
Select routine_name,routine_definition from INFORMATION_SCHEMA.ROUTINES ) DTL;
现在我已经从数据库 B 中执行了以下查询以找到所有与过程定义不同的过程
SELECT T.ROUTINE_NAME B_PROC,
L.ROUTINE_NAME A_PROC,T.ROUTINE_DEFINITION B_PROC_DEF,L.ROUTINE_DEFINITION A_PROC_DEF
FROM INFORMATION_SCHEMA.ROUTINES T JOIN A.DBO.A_PROCEDURE L ON T.ROUTINE_NAME = L.ROUTINE_NAME
AND T.ROUTINE_DEFINITION <> L.ROUTINE_DEFINITION;
从上面的查询中,我找到了名称相同但定义不同的过程(哪些是正确的 - 逐行手动检查)。
那么这是正确的方法吗?还应该考虑其他什么吗?请分享您对此的想法
感谢并致以最诚挚的问候, 毗湿奴
您好 Vishnudas:您需要 sp_HelpText
系统存储过程。此实用程序将每个存储过程的定义存储在 SQL 服务器数据库引擎中。
每个 DBA 或开发人员都值得使用一个比较工具。同时,您可以检查 this blog 在哪里可以编写没有关于两个存储过程的 in-line 比较统计信息的脚本。在那里,您会得到有关 sp_HelpText
.
但是,我建议使用像SQL Compare tool, used by production teams in some middle and large companies. An useful top list is recommended这样的比较工具,并且它已被其他同行审查过。