随笔分类 -  SQL Server

SQL Server 2000/SQL Server 2005/SQL Server 2008
摘要:在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的。后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_EncryptObject),和一个解密存储过程(sp_EncryptObject) 阅读全文
posted @ 2012-12-30 17:00 ok_008 阅读(42242) 评论(9) 推荐(9) 编辑
摘要:开始:在上周,客户反映一个系统问题,当处理大量数据的时候,出现网络超时。后来,我们跟踪测试,发现是由于索引碎片多而引起的网络超时。解决方法,自然是重新组织和重新生成索引。在这里,我写了一个存储过程sp_RefreshIndex来实现。存储过程sp_RefreshIndex:use mastergoif object_id('sp_RefreshIndex') Is not null Drop Proc sp_RefreshIndexGocreate proc sp_RefreshIndex ( @Reorganize_Fragmentation_Percent smallin. 阅读全文
posted @ 2012-12-27 16:40 ok_008 阅读(2481) 评论(1) 推荐(2) 编辑
摘要:开始:发现在一个项目中,后台数据库各个表,具有外键约束的列上都没有创建索引。我们需要一次性给他们创建索引,下面我写了一个通用的存储过程sp_CreateIndexForFK,来实现这一个功能。也许有人问,为什么要在外键上创建索引,它有什么好处,可以参考:FOREIGN KEY 约束:http://msdn.microsoft.com/zh-cn/library/ms175464%28v=sql.105%29.aspxThe Benefits of Indexing Foreign Keys:http://www.sqlperformance.com/2012/11/t-sql-queries/ 阅读全文
posted @ 2012-12-26 12:21 ok_008 阅读(2445) 评论(0) 推荐(4) 编辑
摘要:问题:当我们创建这样一个视图(myView):create view myView As select * from myTable注:myTable的结构:myTable(id int)后来,我们改变了myTable的结构,增加一个字段(newCol):alter table myTable add newCol nvarchar(50)当我们执行查询视图操作,发现返回的是未修改myTable表结构前的字段ID,即少了newCol字段: 图1.分析:开始的时候,我们创建的视图myView,‘create view myView As select * from myTable’sql ser 阅读全文
posted @ 2012-12-25 18:42 ok_008 阅读(3846) 评论(6) 推荐(0) 编辑
摘要:在平时工作中,经常要比较不同版本的两个SQL脚本文件是否一致,后来找了一个比较工具WinMerge,感觉它不错 阅读全文
posted @ 2012-12-19 18:05 ok_008 阅读(3681) 评论(12) 推荐(3) 编辑
摘要:挖到一篇博客,作者搜集了大量来自微软的免费电子书,有Windows Phone, Windows 8, Visual Studio, Office 365等相关的书籍,海量免费正版电子书 阅读全文
posted @ 2012-12-17 11:37 ok_008 阅读(4091) 评论(9) 推荐(5) 编辑
摘要:开始:有一需求,就是把表中作为主键字段的数据类型从int 转换为 uniqueidentifier。我们可能会想到直接通过Microsoft SQL Server Management Studio (MSSMS)修改表结构,删除原来的主键,增加一个数据类型为uniqueidentifier的字段作为主键,并对它设置not null default(newid()) 。对于单独的表,主键没有被其他表作为外键,可以这样修改,但一旦存在外键时,我们就不能这样修改了。至少我们需要通过编写T-SQL语句来实现,基本方法是:1.删除外键约束2.修改表字段类型(删除主键约束-->新增uniqueid 阅读全文
posted @ 2012-12-10 11:58 ok_008 阅读(2666) 评论(3) 推荐(0) 编辑
摘要:开始:在工作中经常要把Excel的数据转换成SQL导入脚本,这里写了一个存储过程sp_OpenExcel,实现查询Excel文件并生成Insert脚本。sp_OpenExcel:View Code Use masterGoif object_ID('[sp_OpenExcel]') is not null Drop Procedure [sp_OpenExcel]GoCreate Proc sp_OpenExcel( @ExcelFile nvarchar(1024), @Sheet nvarchar(512), @Cols nvarchar(1024)=Null, ... 阅读全文
posted @ 2012-12-07 17:00 ok_008 阅读(2907) 评论(1) 推荐(2) 编辑
摘要:情况:上周,公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB。IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。原因:晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:Select*FromTable1这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。为了统计总行数,频频调用这语句,每秒刷新不低于1000次。也因此导致网络出现瓶颈 阅读全文
posted @ 2012-05-12 13:03 ok_008 阅读(4143) 评论(35) 推荐(7) 编辑
摘要:问题 想说这个问题,来源来自于CSDN论坛的一个帖子:《sqlserver2005,1690万的数据量怎么快速分页查询》在之前也有很多人问类似这样的问题,回复这样的问题,我们一般会从索引,水平分区,垂直分区和硬件的升级等方面考虑。分析 对于千万级数据的分页,要求在秒级内响应,解决方案除了刚列的几个方面考虑,这里说一个非常重要的考虑(评估)是,现实意义。拿CSDN论坛的那1690万数据来说,我按每页显示200行数据,需要84500页。从站在用户(使用者)角度看,对于查看1万页以后的数据的概率是非常小。假设我们是使用者,让我们一页一页的点,点到100页都够郁闷的了,更何况是1万页后的数据了。这里. 阅读全文
posted @ 2012-03-22 02:29 ok_008 阅读(10804) 评论(39) 推荐(14) 编辑
摘要:开始 在上一篇《PowerShell应用之-事务复制》,描述了如何通过PowerShell脚本配置发布&分发服务器、创建事务发布&发布项目、和创建推送&请求订阅。而且上篇订阅是只读的(ReadOnly),在这篇,将会讲述可更新订阅的事务复制,涉及到两种基本的订阅类型:队列更新(QueuedUpdate) & 即时更新(ImmediateUpdate )。本篇使用的例子会沿用上一篇的部分脚本及测试数据库。在这边我们省略了配置发布&分发服务器部分,直接从创建事务发布和发布项目(TransPublication & TransArticle)开始。 创 阅读全文
posted @ 2011-11-25 02:13 ok_008 阅读(1731) 评论(0) 推荐(0) 编辑
摘要:开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点。这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识。在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他 例子描述 约束(Constraint) 在临时表和表变量,都可以创建Constrain... 阅读全文
posted @ 2011-11-02 01:00 ok_008 阅读(5583) 评论(11) 推荐(13) 编辑
摘要:这一篇,我们来实现PowerShell 2.0在SQL Server中的一个应用,是批量执行SQL脚本。在接下来的内容,将使用到下面的命令或类库。 Sort-Object out-null Write-Error $_ System.IO.DirectoryInfo Microsoft.SqlServer.Management.Common.ServerConnection 创建测试环境 为了更能说明PowerShell脚本的应用,我们这里创建个测试环境,模拟一个要升级的SQL脚本文件;首先,要创建两个数据库『TestingDB... 阅读全文
posted @ 2011-10-25 23:57 ok_008 阅读(11582) 评论(14) 推荐(7) 编辑
摘要:开始,下边的内容是我在工作中,碰到的问题,并且拿出来进行分析和解决,是对其过程的描述。由于时间原因没有进行繁体简体的转换。在一些字眼或术语中,简体繁体之间可能存在些差异。 如有不明可以通过文章后面的留言发表意见和建议,或发Email与我联系。問題描述 在SQL Server 2005(版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)),帶篩選的合併複製中,發現有這樣的一個問題,在訂閱者Insert數據,數據上傳到發行者,然後下載至訂閱者,發現訂閱者的部份數據被Delete,如圖描述: 下面就真實環境中的問題,... 阅读全文
posted @ 2011-10-14 22:43 ok_008 阅读(1219) 评论(2) 推荐(2) 编辑
摘要:原因 先说写这篇文章的原因,这里通过两个简单的案例说明。 案例一:在一个Windows操作系统中,安装有10个SQL Server实例,每一个实例存在大约120个数据库。现在要同时启动10个实例的服务(SQL Server & SQL Server Agent & SQL Server FullText Search)。通过SQL Server Configuration Manager,需要一个实例,一个服务的一一启动。那是多么繁琐、笨拙的操作。 案例二:在案例一的场景,启动了全部的实例。不久,就发现程序运行缓慢,即使在Microsoft SQL Server Ma... 阅读全文
posted @ 2011-09-23 23:30 ok_008 阅读(8108) 评论(5) 推荐(1) 编辑
摘要:在一些时候,我们发现数据库中的一些对象(object)发生了改动,如表结构发生了改动(有Create/Alter/Delete操作)引发了应用程序出错,这时候Boss就会发问,为什么会发生这样错误,原因何在,到底是谁的责任。作为一名SQL Server数据库DBA,针对这个,我们要尽快查明结构被改动的对象,改动时间,操作人或PC等。 在SQL Server 2005 中,通过读取默认跟踪日志文件,查询出最近哪些结构被改动,为我们找出问题的根源。接下来,就介绍如何通过读取默认跟踪日志文件。 default trace enabled 选项 在SQL Server中,使用... 阅读全文
posted @ 2011-09-23 01:36 ok_008 阅读(3225) 评论(8) 推荐(8) 编辑
摘要:引述 在工作中,经常为测试或开发部门搭建数据库环境,每一次搭建环境,需要还原某一个目录下的所有数据库备份文件,也就是,一次需要还原一百多个数据库。 每碰到类似的情况,需要编写一个SQL脚本来实现还原数据库的功能。这里就简单介绍如何编写存储过程来实现,还原某一个目录下的所有数据库备份文件。 要实现还原某一个目录下的所有数据库备份文件,首先要实现还原某一个目录下的某一个备份文件。真实世界中,只提供数据库备份路径,和备份数据库文件名,及还原到的本地路径。接下来,将讲述以下内容: ●根据备份文件找出数据库名 ●根据备份文件找出数据、日志目录列表 ●构造还原数据... 阅读全文
posted @ 2011-09-07 08:51 ok_008 阅读(3328) 评论(5) 推荐(3) 编辑
摘要:概述 在平时的工作中,我会经常的碰到这样需要合并SQL脚本的问题。如,有很多的SQL脚本文件,需要按照一定的先后顺序,再生成一个合并SQL脚本文件,然后再发布到用户SQL Server服务器上。 合并SQL脚本文件,最直接的方法就是新建1个空白的SQL脚本文件,再把需要合并的SQL脚本文件内容复制到新建的SQL文件中。当初,我合并脚本的操作方法与刚说的有类似。我在Microsoft SQL Server Management Studio(MSSMS)新建一个查询,再把要合并的SQL脚本文件,一个一个的打开,并复制内容到新建查询中,然后生成合并脚本文件。 上面的方法,对于几个... 阅读全文
posted @ 2011-09-05 00:21 ok_008 阅读(3665) 评论(8) 推荐(4) 编辑
摘要:引述 首先,说我为什么写这篇文章,它让你了解到什么,对你是否有帮助。要是你是刚接触SQL Server同步复制,那么你可能会碰到各种各样的问题,你可能不会从哪里入手解决,或者你从Baidu,Google上找到解决问题的方法,但你很多时候只看到别人说的答案,很少有人去写分析其中的原因,倘若你没有找其他资料或查阅帮助文档了解为什么,以后你碰到同样问题,你也只能照搬之前的答案,有时候碰巧正确,你会突然的喜悦,但始终你不知道为什么那样,正如我们在学校学习,说的知其然而不知其所以然。 回到主题,以下内容使用我记录的繁体笔记,测试环境是SQL Server 2005 (SP3) ,因时间原因,没有作简体转 阅读全文
posted @ 2011-05-18 01:00 ok_008 阅读(3597) 评论(3) 推荐(3) 编辑
摘要:引述 首先, 说下我写篇文章的目的,我希望能把我对触发器的理解,分享出来与你一起学习。如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,和触发器中事务个故事。在这边文章里面,我不会从触发器和事务的概念去讲述,而是从常见的两种触发器类型(DML触发器 & DDL触发器)和After触发器 & Instead Of 触发器的应用不同,开始... 阅读全文
posted @ 2011-05-15 23:20 ok_008 阅读(25360) 评论(28) 推荐(40) 编辑

给我写信
点击右上角即可分享
微信分享提示