随笔-4  评论-13  文章-0  trackbacks-1
  2009年1月16日

公司数据库服务器的空间越来越紧张、最大的数据库达到400个G,100G 以上的库就有四五个。当然我们应该感到欣慰,数据高速增长说明我们的业务发展较好,但不可否认,我们的应用设计也存在着某些问题。诸如:滥建索引、过度冗余或者是系统在设计时没有考虑对超过价值期的历史数据进行清理。

 

下面这个脚本用来获取数据库每张表/索引的空间使用情况。

Code

 

 

下面这个脚本用以统计索引的使用率

 

 

Code
posted @ 2009-01-16 17:39 Tianjon 阅读(1744) 评论(6) 编辑
  2008年11月18日

同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦

用下面这个脚本可以做到找出一个特定表的引用树,比如 table2 有个外键引用到了table1  table3有个外键饮用到了table2  .......

 

 

 

Code

 

 

 

posted @ 2008-11-18 23:29 Tianjon 阅读(1469) 评论(4) 编辑
  2008年11月17日

在sql server 中我们会通过邮件菜单来查看一个对象的依赖关系,但有些意外情况会造成查看结果并不是非常的准确!

可以尝试以下例子 :

第一步:颠倒顺序,创建一个缺失依赖关系的存储过程

 

Code

 

第二步: 查看一下这个存储过程的依赖关系

 

Code

 

在结果中并没有发现dbo.TestRefresh1同其他对象有任何的依赖关系 ,细心的朋友早就发现这个问题是因为创建存储过程时的顺序问题所致。假设我们的数据库中并不缺失相关对象,可以尝试用如下代码来更新他们的依赖关系:

 

Code

 

 

完成之后再次执行

 

 

Code

 

看看结果吧!

其实,针对这些特性,我们可以用上面这段脚本来检查生产数据库数据库存储过程的健康状况,发现缺失的依赖关系!虽然用处不大,毕竟是一个知识点。与大家分享

posted @ 2008-11-17 20:31 Tianjon 阅读(1236) 评论(0) 编辑
  2008年9月28日

 

在web开发过程中、我们往往会碰上这样的麻烦事:

我们很容易利用VSTF等工具来对代码进行版本控制、但是对数据库呢?我知道有些朋友会有很好的习惯:
1、每一次数据库更改的脚本,都会在第一时间保存在VSTF内,使用这种方法其实其实也足够方便,但习惯培养阶段确实让人不爽、而且不免遗漏。
2、甚至会在解决方案中创建一个数据库项目、每一次对都在VSTS中修改数据库。 参考:http://msdn.microsoft.com/zh-cn/library/aa833253.aspx。 这种方式应该是微软所推崇的。可用起来实在不怎么方便、最受不了的是在VSTS中写存储过程!

我们总监的口号是:把工具进行到底!他使用CruiseControl.NET进行每日构建、不管使用是上面何种方法、开发库同测试库之间的同步始终没有办法自动化同步,或许是没找到正确的方法吧!如果园子里的朋友有什么高招、不防在下面回复一下!

最后我们哪种方法都没有用,而是想到了DDL触发器、在一个叫DataBaseVersion 的库中自动记录每一次的DDL操作、然后写控制台程序读取DDL操作日

志在相应的测试库中回放。再把这个控制台配置到CruiseControl.NET。 这个时候数据库的每日构建便可以进行了。

下面附上用到的DDL触发器:

 

Code

 

 

 

 

 

 

posted @ 2008-09-28 12:05 Tianjon 阅读(1976) 评论(3) 编辑
昵称:Tianjon
园龄:4年1个月
粉丝:1
关注:0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

随笔分类

随笔档案

资料备忘

最新评论