山那边是海 发表于 2015-1-16 22:22:12

MSSQL编程:如何取得Sqlserver 2000得实例列表和运...

因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。server|sqlserver|数据|数据库在.NetFrameWork中,可以很便利挪用COM组件,有些时分我们必要取得运转在某个SqlServer上得服务虚例列表和在一个实例上得数据库列表,经由过程Microsoft.SQLDMO.Object组件就能够轻松完成此项事情:
起首怎样找到Microsoft.SQLDMO.Object
1.怎样在您得项目中可以利用SQLDMO组件?
菜单-项目-增加援用-COM-Microsoft.SQLDMO.Object
2.将该功效写成一个类:

1usingSystem;
2usingSystem.Collections;
3usingSystem.Collections.Specialized;
4
5namespaceJillZhang
6{
7/**////<summary>
8///SummarydescriptionforSqlInfo.
9///</summary>
10publicclassSqlInfo
11{
12成员变量#region成员变量
13privatestring_uid="";
14privatestring_pwd="";
15privateStringCollection_serverList=newStringCollection();
16privateHashtable_databaseList=newHashtable();
17#endregion
18
19机关函数#region机关函数
20publicSqlInfo()
21{
22this._serverList=GetSqlInstances();
23if(this._serverList.Count>0)
24{
25foreach(stringiteminthis._serverList)
26{
27this._databaseList.Add(item,this.GetAllDatabases(item));
28}
29}
30}
31publicSqlInfo(stringuid,stringpwd)
32{
33this._uid=uid;
34this._pwd=pwd;
35this._serverList=GetSqlInstances();
36if(this._serverList.Count>0)
37{
38foreach(stringiteminthis._serverList)
39{
40this._databaseList.Add(item,this.GetAllDatabases(item));
41}
42}
43}
44#endregion
45
46大众属性#region大众属性
47/**////<summary>
48///服务列表
49///</summary>
50publicStringCollectionServerList
51{
52get
53{
54return_serverList;
55}
56}
57/**////<summary>
58///用于登录Sqlserver得用户名
59///</summary>
60publicstringUid
61{
62get
63{
64return_uid;
65}
66set
67{
68_uid=value;
69}
70}
71/**////<summary>
72///用于登录得暗码
73///</summary>
74publicstringPwd
75{
76get
77{
78return_pwd;
79}
80set
81{
82_pwd=value;
83}
84}
85#endregion
86
87事务办法#region事务办法
88/**////<summary>
89///取得服务列表
90///</summary>
91///<returns></returns>
92publicstaticSystem.Collections.Specialized.StringCollectionGetSqlInstances()
93{
94//声明一个字符串链表,用于寄存列表信息
95System.Collections.Specialized.StringCollectioninstaces=newSystem.Collections.Specialized.StringCollection();
96try
97{
98//以下代码是经由过程挪用SQLDMO组件来完成取得服务列表
99SQLDMO.ApplicationsqlApplication=newSQLDMO.ApplicationClass();
100SQLDMO.NameListsqlServerIntances=sqlApplication.ListAvailableSQLServers();
101for(inti=0;i<sqlServerIntances.Count;i++)
102{
103objectsvr=sqlServerIntances.Item(i+1);//索引从1入手下手
104if(svr!=null)
105{
106instaces.Add(svr.ToString());
107}
108}
109returninstaces;
110}
111catch
112{
113thrownewException("未能取得Server得列表信息,请检察您得Sqlserver是不是正在运转!");
114}
115}
116
117/**////<summary>
118///取得Sqlserver2000一个ServerInstance上得数据库列表
119///</summary>
120///<paramname="server">服务称号</param>
121///<paramname="uid">登任命户</param>
122///<paramname="pwd">登录暗码</param>
123///<returns>数据库列表</returns>
124publicstaticSystem.Collections.Specialized.StringCollectionGetAllDatabases(stringserver,stringuid,stringpwd)
125{
126System.Collections.Specialized.StringCollectiondatabases=newSystem.Collections.Specialized.StringCollection();
127try
128{
129SQLDMO.SQLServersqlServer=newSQLDMO.SQLServerClass();
130sqlServer.Connect(server,uid,pwd);
131foreach(SQLDMO.DatabasedbinsqlServer.Databases)
132{
133if(db.Name!=null)
134{
135databases.Add(db.Name);
136}
137}
138returndatabases;
139}
140catch
141{
142thrownewException("未能取得服务"+server+"上得数据库列表,大概您得服务器没有启动大概您得用户名或暗码毛病");
143}
144}
145publicSystem.Collections.Specialized.StringCollectionGetAllDatabases(stringserver)
146{
147returnGetAllDatabases(server,this._uid,this._pwd);
148}
149#endregion
150
151}
152}
153
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功

变相怪杰 发表于 2015-1-19 09:35:48

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

乐观 发表于 2015-1-25 23:19:51

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

莫相离 发表于 2015-2-4 13:20:44

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

只想知道 发表于 2015-2-9 23:34:07

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

海妖 发表于 2015-3-9 21:39:46

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

仓酷云 发表于 2015-3-17 02:07:58

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

灵魂腐蚀 发表于 2015-3-23 16:55:48

无法深入到数据库系统层面去了解和探究
页: [1]
查看完整版本: MSSQL编程:如何取得Sqlserver 2000得实例列表和运...