回答

收藏

如何比较/验证SQL模式

技术问答 技术问答 352 人阅读 | 0 人回复 | 2023-09-14

我正在寻找一种在更新应用程序版本后在生产数据库上验证SQL模式的方法。如果应用程序与数据库模式版本不匹配,则应该有一种警告用户并列出所需更改的方法。
1 t! }9 u" K  W; O7 O是否存在具有内置功能的工具或框架(以编程方式使用)?还是有一些简单的算法可以进行这种比较?6 }5 M$ E4 h' K. _" n3 b! Z

, o! F  s3 m: c  }9 S更新: 红色大门列出了“ 395美元起”。有什么免费的吗?还是比保留版本号更简单?
! L5 u; l; E0 _: t
: _7 ?3 N$ u, o  p
               
; o1 O% f% ?/ f/ T5 q# Z- C. J5 z9 S解决方案:3 l5 T  x9 G$ }! O7 z; h' \& R
               
& s+ F! l1 D- a$ G5 }; |8 f" E1 ~$ ^, ~* Q

) P5 u& ]- C( ~1 Z# |! J                试试这个SQL。& S. i( V+ |- a0 H& e3 T' t
-针对每个数据库运行它。
9 f5 s( t0 d" F6 l5 H-将输出保存到文本文件。& t+ ^3 j0 k2 @/ R2 `7 D* x( F4 S! W
-区分文本文件。
6 j0 _9 U1 x. Q  }1 @) w" X/* get list of objects in the database */8 ?) h3 U3 j9 H+ L( h/ Y/ u3 Q& I- |
SELECT name, 5 m$ A) f7 X1 i
       type : w3 G- g5 F9 i
FROM  sysobjects5 p2 R- I6 e# ^3 t& V
ORDER BY type, name- J8 H. \/ B1 c
/* get list of columns in each table / parameters for each stored procedure */: A4 r6 Q2 A2 \- i- ?/ F
SELECT so.name, ; z4 x: w* S) ?* A% p) z$ X
       so.type,
: K! `% Q2 A+ }       sc.name, + I0 j" t; |& y$ C
       sc.number, 1 Q9 O7 B3 Y1 e4 k: o8 Z' ^
       sc.colid, / @8 E1 ~! H5 O9 H) F% c
       sc.status,
$ I; _; d4 b: Z5 i       sc.type,
1 v8 C1 i% X$ ]' w+ ]       sc.length, # e; b" [0 a) j8 t* A
       sc.usertype ,
; @! a2 _% ^: z* o8 F       sc.scale
5 g0 o. U5 @4 @FROM   sysobjects  so , * n. D0 c) }# q& p. s
       syscolumns  sc " }& e! o6 |3 M& n4 ^* V
WHERE  so.id = sc.id 5 ^& ^5 N: t) L: j. R
ORDER BY so.type, so.name, sc.name% v% a% i. {1 v+ G- i- m
/* get definition of each stored procedure */
. L$ g) I) O/ h8 i/ m9 QSELECT so.name,
/ \& @1 s( w+ @( t- X       so.type, 7 `# z& x; f! b* X6 M4 f) `) w
       sc.number,
- X! T* M0 B' [       sc.text # T+ J# {( _; y. ^9 ?5 j! ~
FROM   sysobjects  so ,
; {: }9 {- I0 A8 p' G. H) Y: V8 x       syscomments sc 8 I7 T0 h' i3 ?9 g: l7 W
WHERE  so.id = sc.id . X; d5 A2 F! U
ORDER BY so.type, so.name, sc.number
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则