专注于自动化测试,性能测试.......

使用SMO比较表结构差异(原创)

上一篇 / 下一篇  2009-09-28 23:00:36 / 个人分类:C# Programming

51Testing软件测试网l/sw3s|/HE%b

   今天因为工作需要,需对比SQL Server2005数据库中相同表的字段是否相同。之前,在SQL server2000数据库中做过同样的事情,利用的是VBS脚本操作DMO来实现的。不过很可惜,在SQL server2005已经不在使用DMO,而是启用了新的SMO。而且VBS脚本也不再支持SMO。所以,只能用C#来进行了。具体思路:先比较两个数据库,找到相同的表,然后比较表的列,找出差异。

2o6e#G;Kp$xnSd B0

0wUxP/Z `NR5{ r0使用SMO,需先引用Microsoft.SqlServer.ConnectionInfo,

p~[.z?0

QD;zB7pC)Zz\K7e0Microsoft.SqlServer.Smo 这两个命名空间。

%NP p%Mib'@1j0

@s H#]5J/|C;|-M5v0源代码:51Testing软件测试网3B'mo5b)l'XYN

&r:f,[7G(Y1E;Y0using System;51Testing软件测试网*YJ I0Pf"N%pUK1|
using System.Collections.Generic;51Testing软件测试网,x(j/lCe3l&D5b$Z
using System.Text;51Testing软件测试网HeZg8PzXX*P
using Microsoft.SqlServer.Management.Smo;
(\n\iS0using Microsoft.SqlServer.Server;
Tn!bT^{ ?f6k-W0using Microsoft.SqlServer.Management.Common;
4l [.Iz-iQ+vyX0using Microsoft.SqlServer;
"[:@5V{ qoyD0using System.Data.SqlClient;
fs4U$A+h0using System.Collections;

8O/`S5uQ7M0

J;~~,`/M:d x2LU\L051Testing软件测试网+X\6cWY+De_
namespace SMOsample51Testing软件测试网0h#Ql+AfR%J
{51Testing软件测试网xW6X VV?7U yNC
    class Program51Testing软件测试网4p,w4mF$T2DP*Z
    {51Testing软件测试网9j{j0[.VUg9~.z
        static void Main(string[] args)
p|R6V0Sg0        {51Testing软件测试网)G \ ~GT
            string connectionString1 = "server =192.168.40.148;database = JcyPD;uid =sa;pwd=1";51Testing软件测试网9p5o,h,lc2Bk@
            SqlConnection connection1 = new SqlConnection(connectionString1);51Testing软件测试网+Q-h4Rw#y2BZ6r9d
            Server server1 = new Server(new ServerConnection(connection1));51Testing软件测试网0u;I`F*E } jBN4r5D
            Database db1 = server1.Databases["JcyPD"];

L9L/m0WjlLD0

iN"C$E v5Bl|q0            string connectionString2 = "server =192.168.40.110;database = Jcy40 ;uid =sa;pwd=sa";51Testing软件测试网lWW*Y#H$w+o*R{
            SqlConnection connection2 = new SqlConnection(connectionString2);
~:\[f#}m0            Server server2 = new Server(new ServerConnection(connection2));51Testing软件测试网 j.o.@8Z5k'H
            Database db2 = server2.Databases["Jcy40"];51Testing软件测试网v fUR%q+w4G2\l

6{K.os;c OF4N0A0            ArrayList al1 = new ArrayList();51Testing软件测试网"ChW0X7J'X
            ArrayList al2 = new ArrayList();51Testing软件测试网6jH7WSF

a,Bq}oLn0            for (int x = 0; x < db1.Tables.Count; x++)51Testing软件测试网H,W%]^!EUy$j
            {
@(g R%\A,K9F0A0                al1.Add(db1.Tables[x].Name.ToString());51Testing软件测试网#g*G\@iS^+pG E
            }

B+\RM*uVA:V3A051Testing软件测试网2f:{ s4WWN s b

 51Testing软件测试网 ~9W A"@$[1X~z

51Testing软件测试网;z.b`9Eq'E K Q

            for (int y = 0; y < db2.Tables.Count; y++)
'wT2fc{(m,oj|0            {51Testing软件测试网_5BY2p3p5mx
                al2.Add(db2.Tables[y].Name.ToString());51Testing软件测试网/c0g*r-^-vT2}l}
            }51Testing软件测试网n Pkg6J H4g5n

51Testing软件测试网7wB&Y~/k#e,B

            for (int m = 0; m < al1.Count; m++)
H*[c}hr@0Qz-T0            {
!}4~\N`k0                for (int n = 0; n < al2.Count; n++)51Testing软件测试网~!g|-p#m6`T8|-@
                {51Testing软件测试网(g+} gM8_gw*C2[
                    if (al1[m].ToString() == al2[n].ToString())51Testing软件测试网0wN }/w w#by/`;l#^
                    {51Testing软件测试网,H&M uv(ZH5G
                        ArrayList cal1 = new ArrayList();51Testing软件测试网Q~7]z/Hi`e [
                        ArrayList cal2 = new ArrayList();51Testing软件测试网/[:Q@xBRX
                       
,B:Un@Qy,e%e0                        foreach(Column c1 in  db1.Tables[al1[m].ToString()].Columns)51Testing软件测试网 ryfE/Xt3I@$E
                        {51Testing软件测试网 gyi2i |
                            cal1.Add(c1.Name.ToString());
W#L\h.[Y?6ng f0                        }51Testing软件测试网:Q&xctxX1o

51Testing软件测试网:aM|&e/_)?Y({9V

                        foreach (Column c2 in db2.Tables[al2[n].ToString()].Columns)
W8G\Tx f0                        {51Testing软件测试网BH,xt7rVG.Q8n3D]
                            cal2.Add(c2.Name.ToString());
:e}@L"\v|0                        }51Testing软件测试网 [7jG:AdG

&UtvG6\2Sb1o0                        foreach (string s in cal2)51Testing软件测试网9Z Y(u^G%]w z
                        {51Testing软件测试网'JiT8j tWd
                            if (!cal1.Contains(s))51Testing软件测试网 P%q_tr)~
                            {
+z"nL$F E5Ysjc0                                Console.WriteLine(al2[n].ToString() + " : " + s);

Nt:o"u6~ F051Testing软件测试网4ac%KGGB

                            }51Testing软件测试网.I X5E g8E)O
                        }51Testing软件测试网8?GK H8B_+h CO ~

51Testing软件测试网-n,~}+B6F

                    }
$j^"F]s0                }
4G qd/^-kb0            }
v*['F^r2Qk#nxF0            Console.WriteLine("完毕!");51Testing软件测试网j:zX4@F,cp
            Console.ReadLine();51Testing软件测试网N'Sl+@^M9C&O6e rj1Ao

51Testing软件测试网)P5e\Z\_1Mc@

        }51Testing软件测试网&P#J5o/xX9V LZCe.J
    }
!g9V.hV3m;CWNHM0}
j HP;L2g-?w/e O3e051Testing软件测试网7m7Wn b e"U)O*~


TAG:

 

评分:0

我来说两句

wxf_xsfy

wxf_xsfy

自动化测试的拥簇者,善于自动化测试的框架和工具开发,TIB工作室核心成员

日历

« 2024-03-03  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 380628
  • 日志数: 79
  • 图片数: 1
  • 文件数: 1
  • 书签数: 3
  • 建立时间: 2007-09-19
  • 更新时间: 2018-01-30

RSS订阅

Open Toolbar