--
获取SQL Server服务器的连接信息用脚本(在原邹建写的基础上作一点改进)
declare
@dbname sysname,
--要查询的数据库名(为空为所有),默认查询所有数据库的连接信息
@includeip bit
--是否显示IP地址(0否,1是),因为查询IP地址比较费时,所以增加此控制
select @dbname=null,@includeip=1
declare @dbid int
set @dbid=db_id(@dbname)
create table #tb
(id int identity(1,1),dbname sysname,hostname nchar(128),loginname nchar(128),
net_address nchar(12),net_ip nvarchar(15),prog_name nchar(128))
insert into #tb(hostname,dbname,net_address,loginname,prog_name)
select distinct hostname,db_name(dbid),net_address,loginame,program_name
from master..sysprocesses
where hostname<>'' and (@dbid is null or dbid=@dbid)
if @includeip=0 goto lb_show
--如果不显示IP地址,就直接显示
declare @sql varchar(500),@hostname nchar(128),@id int
create table #ip(hostname nchar(128),a varchar(200))
declare tb cursor local for select distinct hostname from #tb
open tb
fetch next from tb into @hostname
while @@fetch_status=0
begin
set @sql='ping '+@hostname+' -a -n 1 -l 1'
insert #ip(a) exec master..xp_cmdshell @sql
update #ip set hostname=@hostname where hostname is null
fetch next from tb into @hostname
end
update #tb set net_ip=left(a,patindex('%:%',a)-1)
from #tb a inner join (
select hostname,a=substring(a,patindex('Ping statistics for %:%',a)+20,20)
from #ip
where a like 'Ping statistics for %:%') b on a.hostname=b.hostname
drop table #ip
lb_show:
select id,数据库名=dbname,客户机名=hostname,用户名=loginname
,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name
from #tb
drop table #tb
--查询结果:

------------------------------------------------------------------------------------------------------------
----一段查询SQL Server服务器阻塞和死锁信息用的脚本
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #tmp_lock_who (
id int identity(1,1),
spid smallint,
bl smallint)
insert into #tmp_lock_who(spid,bl) select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
-- 找到临时表的记录数
select @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
if @intCountProperties=0
select N'现在没有阻塞和死锁信息' as message
-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录
select @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
select N'引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + N'进程号,其执行的SQL语法如下'
else
select N'进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ N'被' + N'进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +N'阻塞,其当前进程执行的SQL语法如下'
DBCC INPUTBUFFER (@bl )
end
-- 循环指针下移
set @intCounter = @intCounter + 1
end
drop table #tmp_lock_who
附:杀死相关会话的脚本为 kill SPID 注意SPID为常量,不能为变量,要用变量,请用动态语句
赖床狂想记录
今天星期天,睡到了早上9点多,而且还没有想起床的迹象。感觉很过份,这么能浪费一个年轻人这么多的白天大好时光呢?所谓“一寸光阴一寸金”嘛!
听说人在躺着的时候,血液流经大脑的量是最多的(什么有人说是倒挂着。倒挂着就不用了,一、俺还没达到那境界,二、俺还不想脑充血呢,到时候弄个瘫痪什么的就不好了。),比坐着,站着多。如果配合一个好的环境,这个时候人的思考能力是最佳的。
既然已经赖床了,那就得思考一些有意义的事(鸡鸣狗盗之事就算了,我是良民,不想这些事)。联系到了自己的工作,我常常思考两个问题(平时也有想,只是被烦琐的工作及生活给干扰了,没完全静下心来想过,看来有时候也得喝一点静心口服液了,哈哈。。。):
一、 分析、设计、实现一套信息系统,在排除了团队沟通合作、系统维护与升级、性能、安全、稳定、架构与布署等等因素之后,最直接、最直奔主题的系统设计模型(模式)是什么?思来想去,我认为是这样的:
用户操作接口(比如图形操作界面)与必要的其它技术(如门禁控制器的调用接口) + SQL + 数据库(DB)
以上的思考方式让我想起了学习中学数学、物理的研究方法:排除一切干扰因素,抽象出最原始、最根本的东西来。比如:研究牛顿动力学第二定律,做实验验证时,很多时候要排除掉摩擦力、风的阻力等。
二、 为什么以上的模型(模式)要提到或者说只提到数据库与SQL?很多信息系统没有用到数据库作为存储方式或者说根本没有外部的存储方式也运行得很好、很滋润。不具有普遍性、一般性,这个模型(模式)很失败、很败笔。看来真是完蛋了,事实如此吗?请听我慢慢地说来。首先,记住,这里只是有感而发的记录,不是发表什么学术论文,没必要这么较劲吧!其次,这个模型(模式)提到的数据库与SQL只是信息系统数据存储与处理的代称而已(只是这个技术现在用得多,得被代表一下参加这里的“两会”啰,哈哈。。。)。还有,我敢说现在所有的信息系统都需要存储数据与处理数据,最夸张、最恶劣的情况下也得存储自身的程序文件吧!自身的程序文件也算数据喔。
现在说点别的事,最近没事看了一些关于宇宙及地球生命演化的科教片,受益非浅。发现宇宙及生命最根本、最抽象的描述就是“有容乃大、以量取胜、慢条斯理”。
首先,宇宙很大。太阳的光线到达地球要六分钟左右,想像一下,光线每秒30万公里都要走6分钟,人类最快的超音速飞机不知要走多久。人类到火星以现有的技术以最短距离最快也要半年,走出太阳系就不知道要多久了,好像美国上个世纪70年代初发射的一个太阳系外探测器现在还在太阳系内飞着呢。在银河系中,象太阳系这样的恒星系多如牛毛,有好几万亿个(总之,绝对比世界所有的牛毛加起来还多)。而在宇宙中,象银河系这样的星系又多如牛毛(数量绝对不会比银河系拥有的恒星系数量少),构成一个总星系。到此就结束了吧,还没呢,听说总星系外还有别的总星系,更恐怖的事,数量还没办法预测。这怎么就没完没了呢!那宇宙到底有没有边界呢!听霍金老人家说,宇宙有界无边,听着很玄乎,我们这些普通人好象没办法理解,听说要有丰富的数学知识及多维时空概念才能理解。我们现在生活的时空是长宽高的三维加半维只向前的时间轴,这个我还能理解,有生活经验吗!不过,现在的宇宙学家、物理学家、天文学家推导出宇宙有11维。这个对大部份人来说,也许到死都搞不明白。看来,宇宙是很慷慨的,给我们人类这么大的活动地盘(地球上数量巨大的房地产商和投机分子想炒房看来在广袤的宇宙是永远没有机会了,哈哈。。。。。)。这么大的地盘,即使有外星人,也不用跟外星人争吧。这里,俺又要说一些题外话了,听说传说中的《西方经济学》是研究资源的稀缺与人类无穷欲望无法满足的矛盾的学问。说了以上的话,我对这个说法深表怀疑了。宇宙这么大,这么能说资源是稀缺的呢,我们人类在宇宙中没见过、没摸过的东西多着呢。什么时候来个人类思想大飞越,技术大突破,再来个宇宙大发现(类似于当年哥伦布的地理大发现)什么的,把宇宙中无限的资源开发利用,那时候真是人类想要啥就有啥,过着神仙般的日子,按需分配,实现共产主义,从必然王国走向自由王国(暂停三分钟,意淫中,羡慕中。。。。)。所以我说,那些研究《西方经济学》的老学究有点忽悠我们,科学技术是第一生力,看来这句话说得一点都没错,我还要再补一句,科学技术是以后促进经济发展的第一要素。将来应该有一门新的经济学课程(名称暂定《宇宙经济学》吧)就是主要研究人类现在的无能及无穷的欲望与宇宙中无限资源无法开发利用的矛盾的学问。
说完又大又广的宇宙,就说说组成物质又微又小的原子、基本粒子等。听说现在人类认识的基本元素为108种(又好像是109种,我忘了)。一定数量的元素原子就可以组成一个分子,超巨数量的这些分子就组成了我们肉眼见得着的物质。比如一滴水就是由好几亿个水分子组成。无数滴水组成了我们生产生活中用到的水。从中可以看得出来,宇宙的组成规律有时候很单纯、很简单----“以量取胜”。
现在世界上已知的最长寿的动物为海龟,听说可以活一千多岁,不过它的长寿密诀就是:少动、少思考,尽量减少新陈代谢。这很像过去和尚的修行。对于我来说,这样的生活方式打死我都不想过,宁愿命短一点,也要轰轰烈烈地过一生。不过,相对于生命的进化历程来说,海龟的这一千多年不值得一提。人类去除尾巴的进化都经历了好几百万年。还有,万一我们的太阳系不小心飞到黑洞旁边,整个太阳系也要过好几百万年才能被黑洞给完全吞没,在这段期间内人类及其它活的、死的东东都是在煎熬、比活在地狱还恐怖----在地球里,由于黑洞的强大的引力影响,频繁的地震与火山爆发让地球变了形;太空中受黑洞引力影响的大陨石大量攻击地球,这时大气层已经保护不了我们了;原来给地球生机的太阳由于黑洞引力的撕扯已经变得不在和蔼可亲了,它频繁在向地球喷发(射)有害物质及射线;最后的地球再还没被黑洞吞没之前,就因为地球自身的高温及频繁的地质运动而撕裂,不辛的是,这些景象大部份都能被未来的人类看到,而且一看就是一百多万年,让人类长期忍受痛苦与恐怖。从这可以看出来,大自然有时候好象太没有执行力了,一件事做得拖拖拉拉的,不管是好事还是坏事。用“慢条斯理”来形容一点也不为过。
好了,话题展开那么多,该收回来了。我觉得现在信息技术中的数据库技术很符合宇宙与生命中的“有容乃大、以量取胜、慢条斯理”最基本描述。数据库数据存储量大、数据存储范围广、存储数据结构与类别的复杂。如果人类那一天要在计算机信息系统里构建一个虚拟的宇宙,我看使用数据库(超大规模数据存储)技术是最佳的技术方案,因为它包含了对宇宙与生命描述所具有的最基本属性。记得IBM中国DB2部门一位相关负责人说了一句话:“有大量、大规模数据的信息系统才是一个成熟、成功的系统,才是个可推广应用的系统”(大致是这么说的,这个负责人还是个女的,写这篇文章时刚好在三八女人节,这里先赞一下)。大规模的数据存储与处理技术(特别是现在的数据库技术)是对现实宇宙的模拟与复制。
复习:C#3.0面向对象测试开发包

----------------Form1.cs文件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using jc;
using abstract_test;
using arraylist_test;
using hashtable_test;
using thief_Test;
namespace OO_Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{ /*
//MessageBox.Show("你好!");
TestAdd t = new TestAdd();
ATM a = new ATM();
a.Type = 110;
Girls g = new Girls();
g[0] = "mm";
g[2] = "mm2";
Girls.boys b = new Girls.boys();
b[0] = "gg";
String s = String.Format(" 调用TestAdd类中Add法后值为:{0} \n ATM机帐户类型:{1}\n ATM机在用帐号:{2}",t.add(2,3).ToString (),a.Type.ToString (),a.GetAccountNumber.ToString ());
string s2 = string.Format("\n 索引器1值为:{0} \n 索引器3值为:{1}\n 索引器3值的索引1值为{2}", g[0], g[2],b[0]);
MessageBox.Show(s+s2);
*/
boys b = new boys();
//b[0]="帅哥1";
//b[1]="帅哥2";
Girls g = new Girls();
g.set_name(0, "靓女1");
g[0] = b;
g[0][0] = "帅哥1";
g[0][1] = "帅哥2";
g[0][2] = "帅哥3";
g.set_name(1, "欲女1");
g[1] = b;
g[1][3] = "衰哥1";
g[1][4] = "衰哥2";
string s = string.Format("\n {3}的男朋友1:{0}\n {3}的男朋友2:{1}\n {3}的男朋友3:{2}", g[0][0], g[0][1], g[0][2],g.get_name(0));
string s2 = string.Format("\n {3}的男朋友1:{0}\n {3}的男朋友2:{1}\n {3}的男朋友3:{2}", g[1][3], g[1][4], "精尽人亡兄", g.get_name(1));
MessageBox.Show(s+s2 );
}
private void button2_Click(object sender, EventArgs e) //继承测试
{
jc.Person p0 = new jc.police();
jc.police p = (jc.police)p0;
p.name = "成龙";
p.NO = "pc110";
p.sex = true;
p.job = "警官";
string s = string.Format("名为{0},警号{1},职务{2},性别{3}的警察在{4},过后要{5},然后再{6}", p.name, p.NO, p.job, p.sex ? "男" : "女", p.claw_thief(),p.sleep (),p.study ());
MessageBox.Show(s);
}
private void button3_Click(object sender, EventArgs e) //抽象类测试
{
abstract_test.Person p0 = new abstract_test.police();
abstract_test.police p = (abstract_test.police)p0;
p.name = "成龙";
p[1] = "李连杰";
string s = string.Format("{0}与{1}在{2}中,{3},然后各自回去{4}", p.name,p[1],p.walk(),p.catch_thief (),p.sleep ());
MessageBox.Show(s);
p.show();
MessageBox.Show("超人"+p.fly ());
}
private void button4_Click(object sender, EventArgs e) //动态数组测试
{
arraylist_class a = new arraylist_class();
a.show();
arraylist_test.student[] stus = new arraylist_test.student[] { new arraylist_test.student("cyz", "s001", true, "一班", 85),
new arraylist_test.student("zym", "s002", true, "二班", 95),
new arraylist_test.student("ly", "s003", false , "三班", 75)};
dataGridView1.DataSource = stus;
//dataGridView1.DataBindingComplete();
}
private void button5_Click(object sender, EventArgs e) //哈希表调用
{
hashtable_class ht = new hashtable_class();
ht.show();
}
private void button6_Click(object sender, EventArgs e) //事件测试
{
bank y = new bank();
thief x = new thief();
thief_Test.police j1 = new thief_Test.police();
thief_Test.police j2 = new thief_Test.police();
y.bell_Event += x.run;
y.bell_Event += j1.wnn;
y.bell_Event += j2.wnn;
y.bell();
cat c = new cat();
mouse m1 = new mouse();
mouse m2 = new mouse();
master ms = new master();
c.cry_event += m1.run;
c.cry_event += m2.run;
c.cry_event += ms.walk_up;
c.cry();
}
private void button7_Click(object sender, EventArgs e) //泛型测试
{
List<string> oscar = new List<string>();
oscar.Add("《伤城》");
oscar.Add("《十面埋伏》");
oscar.Add("《金瓶梅》");
oscar.Remove("《金瓶梅》");
if (!oscar.Contains("《红楼梦》")) oscar.Add("《红楼梦》");
ltb.Items.Add(string.Format("容量:{0}",oscar.Capacity.ToString() ));
ltb.Items.Add(string.Format("元素个数:{0}", oscar.Count.ToString ()));
ltb.Items.Add("");
ltb.Items.Add(string.Format("最佳影片:"));
foreach (string t in oscar)
{
ltb.Items.Add(t);
}
ltb.Items.Add(string.Format("我最喜欢的电影:{0}", oscar[2].ToString ()));
oscar.Clear();
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("s001", "cyz");
stu.Add("s002", "lm");
stu.Add("s003", "lgt");
stu.Add("s004", "ly");
stu.Remove("s002");
if (!stu.ContainsKey("s005")) stu.Add("s005", "lxj");
stu["s001"] = "yzc";
foreach (string t in stu.Keys )
{
ltb.Items.Add(t+" "+stu[t].ToString ());
}
}
}
class TestAdd //类的测试
{
public int add(int a, int b)
{
return a + b;
}
}
class ATM //属性的测试
{
private int type; //帐户类型
private double balance; //帐户余额
private int accountNumber;//帐户号码
public ATM()
{
accountNumber = 101101;
}
public int Type
{
get { return type; }
set { type = value; }
}
public double Balance
{
get { return balance; }
set { balance = value; }
}
public int GetAccountNumber
{
get { return accountNumber; }
}
}
class Girls //测试索引器,类中类,一个女孩多个男朋友
{
private string[] names = new string[5];
boys[] b=new boys [5];
public boys this[int n]
{
get { return b[n]; }
set { b[n] = value; }
}
public void set_name(int n,string name)
{
names[n] = name;
}
public string get_name(int n)
{
return names[n];
}
}
class boys
{
private string[] names = new string[5];
public string this[int n]
{
get { return names[n]; }
set { names[n] = value; }
}
}
}
--------------------------------------------Event.cs文件
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace thief_Test
{
class thief
{
public void run() { MessageBox.Show ( "我跑!"); }
}
class police
{
public void wnn() { MessageBox.Show ( "给我追"); }
}
class bank
{
public delegate void ActDelegate();//定义了一个委托,相当于定义了一个类
public event ActDelegate bell_Event;//定义了一个事件,相当于实例化了一个多播委托
public void bell()
{
MessageBox.Show("警铃响!");
bell_Event();
}
}
//----以下部份为测试"猫叫,老鼠跑,主人醒"功能
class mouse
{
public void run() { MessageBox.Show("老鼠跑!"); }
}
class master
{
public void walk_up()
{
MessageBox.Show("主人醒!");
}
}
class cat
{
public delegate void dele_cry();
public event dele_cry cry_event;
public void cry()
{
MessageBox.Show("猫叫!");
cry_event();
}
}
}
------------------------------抽象类测试.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace abstract_test
{
interface Ipreterhuman
{
string fly();
}
abstract class Person
{
public abstract void show();
public abstract string name { get;set;}
public abstract string this[int n] { get;set;}
public string walk()
{
return "走路!";
}
public string sleep()
{
return "睡觉!";
}
}
class preterhuman
{
public string fly()
{
return "飞行!";
}
}
class police : Person, Ipreterhuman
{
private string [] _name=new string [5];
public string fly()
{
return "飞行中!";
}
public override void show()
{
MessageBox.Show("抽象类显示方方法测试");
}
public override string name
{
get
{
return _name[0];
}
set
{
_name[0] = value;
}
}
public override string this[int n]
{
get
{
return _name[n];
}
set
{
_name[n] = value;
}
}
public string walk()
{
return "警察巡逻!";
}
public string catch_thief()
{
return "抓小偷!";
}
}
}
------------------------------------------动态数组测试.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;
namespace arraylist_test
{
class arraylist_class
{
ArrayList ls = new ArrayList();
student s1 = new student("cyz", "s001", true, "一班", 85);
student s2 = new student("zym", "s002", true, "二班", 95);
student s3 = new student("ly", "s003", false , "三班", 75);
public arraylist_class()
{
ls.Add(s1);
ls.Add(s2);
ls.Add(s3);
}
public void show()
{
student s = (student )ls[2];
s.name = "李艳";
s.show();
}
}
class student
{
private string _name;
private string _out;//学号
private string _class;//班级
private bool _sex;
private float _grade;//成绩
public string name
{
get { return _name; }
set { _name = value; }
}
public string Out
{
get { return _out; }
set { _out = value; }
}
public string Class
{
get { return _class; }
set { _class = value; }
}
public bool Sex
{
get { return _sex; }
set { _sex = value; }
}
public float grade
{
get { return _grade; }
set { _grade = value; }
}
public student(string __name,string __out,bool __sex,string __class,float __grade)
{
_name = __name;
_out = __out;
_sex = __sex;
_class = __class;
_grade = __grade;
}
public void show()
{
string s = string.Format("学号为{0}性别为{1}在{2}的学生{3}的成绩为{4}",_out,_sex?"男":"女",_class ,_name ,_grade );
MessageBox.Show(s);
}
}
}
---------------------------------------------------哈希表测试.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace hashtable_test
{
class Class
{
private string _class_name; //班级名称
private string _class_director;//班主任
private int _number;//班上人数
public string class_name
{
get { return _class_name; }
set { _class_name = value; }
}
public string class_director
{
get { return _class_director; }
set { _class_director = value; }
}
public int number
{
get { return _number; }
set { _number = value; }
}
public Class(string class_name, string class_director, int number)
{
_class_name = class_name;
_class_director = class_director;
_number = number;
}
public void show()
{
string s = string.Format("{0}所管的{1}班级的人数为{2}", _class_director, _class_name, _number);
MessageBox.Show(s);
}
}
class student
{
private string _name;
private string _out;//学号
private string _class;//班级
private bool _sex;
private float _grade;//成绩
public string name
{
get { return _name; }
set { _name = value; }
}
public string Out
{
get { return _out; }
set { _out = value; }
}
public string Class
{
get { return _class; }
set { _class = value; }
}
public bool Sex
{
get { return _sex; }
set { _sex = value; }
}
public float grade
{
get { return _grade; }
set { _grade = value; }
}
public student(string __name, string __out, bool __sex, string __class, float __grade)
{
_name = __name;
_out = __out;
_sex = __sex;
_class = __class;
_grade = __grade;
}
public void show()
{
string s = string.Format("学号为{0}性别为{1}在{2}的学生{3}的成绩为{4}", _out, _sex ? "男" : "女", _class, _name, _grade);
MessageBox.Show(s);
}
}
class hashtable_class
{
Hashtable ht = new Hashtable(); //学生哈希表
Class c1 = new Class("立志", "陈老师", 12);
Class c2 = new Class("成才", "杨老师", 8);
student s1 = new student("cyz", "s001", true, "立志2", 85);
student s2 = new student("zym", "s002", true, "立志2", 95);
student s3 = new student("ly", "s003", false, "成才2", 73);
student s4 = new student("wl", "s004", false, "成才2", 77);
student s5 = new student("qh", "s005", true , "立志2", 93);
public hashtable_class()
{
ht.Add(s1, c1);
ht.Add(s2, c1);
ht.Add(s5, c1);
ht.Add(s3, c2);
ht.Add(s4, c2);
}
public void show()
{
string ss;
ss = "";
foreach (DictionaryEntry dc in ht)
{
student s = (student)dc.Key;
Class c = (Class)dc.Value;
ss = ss + "\n 学生:" + s.name + ",所在的班级为:" + c.class_name + "班";
}
MessageBox.Show(ss);
}
}
}
-----------------------------------------------------------继承测试.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace jc //继承测试
{
public interface Iperson
{
string sleep();
string study();
}
class Person //:Iperson //建立人的基类
{
private string _name;
private bool _sex;
private int _age;
private float _height;
private float _weight;
public string name
{
get { return _name; }
set { _name = value; }
}
public bool sex
{
get { return _sex; }
set { _sex = value; }
}
public int age
{
get { return _age; }
set { _age = value; }
}
public float height
{
get { return _height; }
set { _height = value; }
}
public float weight
{
get { return _weight; }
set { _weight = value; }
}
public string walk()
{
return "走路!";
}
public string eat()
{
return "吃饭!";
}
/*
public string sleep()
{
return "睡觉!";
}
public string study()
{
return "学习!";
} */
}
class police : Person,Iperson
{
private string _NO;//警号
private string _job;//职务
public string NO
{
get { return _NO; }
set { _NO = value; }
}
public string job
{
get { return _job; }
set { _job = value; }
}
public string claw_thief()
{
return "抓小偷!";
}
public string sleep()
{
return "睡觉!";
}
public string study()
{
return "警务理论学习!";
}
}
}