使用SMO比较表结构差异(原创)
上一篇 / 下一篇 2009-09-28 23:00:36 / 个人分类:C# Programming
今天因为工作需要,需对比SQL Server2005数据库中相同表的字段是否相同。之前,在SQL server2000数据库中做过同样的事情,利用的是VBS脚本操作DMO来实现的。不过很可惜,在SQL server2005已经不在使用DMO,而是启用了新的SMO。而且VBS脚本也不再支持SMO。所以,只能用C#来进行了。具体思路:先比较两个数据库,找到相同的表,然后比较表的列,找出差异。
2o6e#G;Kp$xnSd B00wUxP/Z `NR5{r0使用SMO,需先引用Microsoft.SqlServer.ConnectionInfo,
p~[.z?0QD;zB7pC)Zz\K7e0Microsoft.SqlServer.Smo 这两个命名空间。
%NPp%M ib'@1j0@sH#]5J/|C;|-M5v0源代码:51Testing软件测试网3B'mo5b)l'XY N
&r:f,[7G(Y1E;Y0using System;51Testing软件测试网*YJI0Pf"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!b T^{?f6k-W0using Microsoft.SqlServer.Management.Common;
4l [.Iz-iQ+vyX0using Microsoft.SqlServer;
"[:@5V{
qoyD0using System.Data.SqlClient;
fs4U$A+h0using System.Collections;
J;~~,`/M:dx2LU\L051Testing软件测试网+X\6cWY+De_
namespace SMOsample51Testing软件测试网0h#Ql+AfR%J
{51Testing软件测试网xW6X
VV?7U yNC
class Program51Testing软件测试网4p,w4m F$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"];
iN"C$Ev5Bl|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);