摘要:
开始:有一需求,就是把表中作为主键字段的数据类型从int 转换为 uniqueidentifier。我们可能会想到直接通过Microsoft SQL Server Management Studio (MSSMS)修改表结构,删除原来的主键,增加一个数据类型为uniqueidentifier的字段作为主键,并对它设置not null default(newid()) 。对于单独的表,主键没有被其他表作为外键,可以这样修改,但一旦存在外键时,我们就不能这样修改了。至少我们需要通过编写T-SQL语句来实现,基本方法是:1.删除外键约束2.修改表字段类型(删除主键约束-->新增uniqueid 阅读全文
摘要:
开始:在工作中经常要把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, ... 阅读全文
摘要:
之前寫有一篇有關《PowerShell应用之-生成创建表的Transact-SQL脚本》,今早再拿來應用的時候,發現無法按照指定的某一些表來生成腳本。現在特補充這一功能,先在原來腳本開頭位置,增加一個變量$TablesList:<#===========================================#>##生成创建表的脚本V2.0,包含Constraints,Indexes,Triggers$serverInstance="PC20\SQL2005DE"$userName="sa"$password="pc2020 阅读全文
摘要:
情况:上周,公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB。IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。原因:晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:Select*FromTable1这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。为了统计总行数,频频调用这语句,每秒刷新不低于1000次。也因此导致网络出现瓶颈 阅读全文
摘要:
问题 想说这个问题,来源来自于CSDN论坛的一个帖子:《sqlserver2005,1690万的数据量怎么快速分页查询》在之前也有很多人问类似这样的问题,回复这样的问题,我们一般会从索引,水平分区,垂直分区和硬件的升级等方面考虑。分析 对于千万级数据的分页,要求在秒级内响应,解决方案除了刚列的几个方面考虑,这里说一个非常重要的考虑(评估)是,现实意义。拿CSDN论坛的那1690万数据来说,我按每页显示200行数据,需要84500页。从站在用户(使用者)角度看,对于查看1万页以后的数据的概率是非常小。假设我们是使用者,让我们一页一页的点,点到100页都够郁闷的了,更何况是1万页后的数据了。这里. 阅读全文
摘要:
开始 在上一篇《PowerShell应用之-事务复制》,描述了如何通过PowerShell脚本配置发布&分发服务器、创建事务发布&发布项目、和创建推送&请求订阅。而且上篇订阅是只读的(ReadOnly),在这篇,将会讲述可更新订阅的事务复制,涉及到两种基本的订阅类型:队列更新(QueuedUpdate) & 即时更新(ImmediateUpdate )。本篇使用的例子会沿用上一篇的部分脚本及测试数据库。在这边我们省略了配置发布&分发服务器部分,直接从创建事务发布和发布项目(TransPublication & TransArticle)开始。 创 阅读全文
摘要:
概述 在之前的几篇描述了PowerShell在SQL Server对SMO(SQL Server Management Objects)的管理,现在开始描述在SQL Server Replication中如何使用PowerShell脚本实现同步复制功能。在本篇中讲述的是实现同步复制中的事务复制,涉及如何创建Publishing,Distribution, Publication, Subscription等。这里将让我们了解到RMO(Replication Management Objects)一些类的使用: Microsoft.SqlServer.Replicat... 阅读全文
摘要:
开始 直接切入主题,今天我们继续来描述PowerShell的一个应用,实现批量还原SQL Server数据库,可以支持SQL Server 2005\2008数据库。在本章中,我们将涉及到几个要点: Microsoft.SqlServer.Management.Smo.Restore类 System.Data.DataTable类 PowerShell中的函数(Function) PowerShell命令Get-Unique Microsoft.SqlServer.Management.Smo.Restore类 在... 阅读全文
摘要:
开始 在上一篇《PowerShell应用之-(SMO) 类库》,我们对SMO类库的应用有了基本的了解,在这里我们将继续对SMO类库进一步了解。在这篇,涉及这几个内容: 表对象(Table) 脚本选项(ScriptingOptions) Sort-Object命令 Get-Date命令 Out-File命令 下面我们着重描述表对象和脚本选项两个部分,其他部分写在后面的完整代码中。 表对象(Table) 要生成创建表的Transact-SQL脚本,先要找到着手点。在SMO类库中,Microsoft.SqlServer.Man... 阅读全文
摘要:
SMO类库描述 在命名空间Microsoft.SqlServer.Management.Smo下提供有丰富的类库,来描述SQL Server数据库引擎核心对象,包含实例(instances)、数据库(databases),表(tables),存储过程(stored procedures)和视图(views)。它能为我们实现: 连接SQL Server实例 查询和修改实例设置(instance settings)和配置选项(configuration options) 查询和修改数据库对象 在SQL Server实例执行DDL(data definiti... 阅读全文
摘要:
开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点。这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识。在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他 例子描述 约束(Constraint) 在临时表和表变量,都可以创建Constrain... 阅读全文
摘要:
这一篇,我们来实现PowerShell 2.0在SQL Server中的一个应用,是批量执行SQL脚本。在接下来的内容,将使用到下面的命令或类库。 Sort-Object out-null Write-Error $_ System.IO.DirectoryInfo Microsoft.SqlServer.Management.Common.ServerConnection 创建测试环境 为了更能说明PowerShell脚本的应用,我们这里创建个测试环境,模拟一个要升级的SQL脚本文件;首先,要创建两个数据库『TestingDB... 阅读全文
摘要:
开始 引用Windows PowerShell官方的说明,Windows PowerShell 是专为系统管理员设计的新 Windows 命令行 shell。Windows PowerShell 包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。在我学习PowerShell过程中,发觉学习PowerShell的门槛不高,学起来不费劲,要是有DOTNET或其它编程语言基础,那么感觉就更容易了。因为,PowerShell最基本的功能命令就是cmdlet(command-let),cmdlet标准格式是“动词-名词”,如.Get-Help ,Get-Host,New-Serv... 阅读全文
摘要:
开始,下边的内容是我在工作中,碰到的问题,并且拿出来进行分析和解决,是对其过程的描述。由于时间原因没有进行繁体简体的转换。在一些字眼或术语中,简体繁体之间可能存在些差异。 如有不明可以通过文章后面的留言发表意见和建议,或发Email与我联系。問題描述 在SQL Server 2005(版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)),帶篩選的合併複製中,發現有這樣的一個問題,在訂閱者Insert數據,數據上傳到發行者,然後下載至訂閱者,發現訂閱者的部份數據被Delete,如圖描述: 下面就真實環境中的問題,... 阅读全文
摘要:
原因 先说写这篇文章的原因,这里通过两个简单的案例说明。 案例一:在一个Windows操作系统中,安装有10个SQL Server实例,每一个实例存在大约120个数据库。现在要同时启动10个实例的服务(SQL Server & SQL Server Agent & SQL Server FullText Search)。通过SQL Server Configuration Manager,需要一个实例,一个服务的一一启动。那是多么繁琐、笨拙的操作。 案例二:在案例一的场景,启动了全部的实例。不久,就发现程序运行缓慢,即使在Microsoft SQL Server Ma... 阅读全文
摘要:
在一些时候,我们发现数据库中的一些对象(object)发生了改动,如表结构发生了改动(有Create/Alter/Delete操作)引发了应用程序出错,这时候Boss就会发问,为什么会发生这样错误,原因何在,到底是谁的责任。作为一名SQL Server数据库DBA,针对这个,我们要尽快查明结构被改动的对象,改动时间,操作人或PC等。 在SQL Server 2005 中,通过读取默认跟踪日志文件,查询出最近哪些结构被改动,为我们找出问题的根源。接下来,就介绍如何通过读取默认跟踪日志文件。 default trace enabled 选项 在SQL Server中,使用... 阅读全文
摘要:
首先,学习Python,要了解它的历史、现在和未来;知道它的应用范围,学以致用;理解她的格言,深体味: "There should be one—and preferably only one—obvious way to do it." ---Tim Peters 大体意思是,“什么事情都应该有一个,而且最好只有一个显而易见的解决办法 ”。 回到正题,感觉对于学习新一门语言的开初,都要学习”Hello World !”。这里我学习Python,也是从”Hello World !”开始。 通过开始菜单-所有程序-Python 3.2下的PythonIDLE (Python 阅读全文
摘要:
之前打开http://msdn.microsoft.com/,不管使用Firefox浏览器还是IE浏览器,都没有问题。然而,最近发现使用Firefox打开MSDN,发现无法打开相应页面,返回错误提示: The specified CGI application encountered an error and the server terminated the process.后来搜索下,发现很多网友,当打开MSDN网站的时候都碰到类似的问题。找了很多方法,基本都是使用删除清除历史记录来解决。这个清除历史记录方法,无论在Firefox或IE浏览器,可以说是治标不治本,一下又出现错误了。... 阅读全文
摘要:
引述 在工作中,经常为测试或开发部门搭建数据库环境,每一次搭建环境,需要还原某一个目录下的所有数据库备份文件,也就是,一次需要还原一百多个数据库。 每碰到类似的情况,需要编写一个SQL脚本来实现还原数据库的功能。这里就简单介绍如何编写存储过程来实现,还原某一个目录下的所有数据库备份文件。 要实现还原某一个目录下的所有数据库备份文件,首先要实现还原某一个目录下的某一个备份文件。真实世界中,只提供数据库备份路径,和备份数据库文件名,及还原到的本地路径。接下来,将讲述以下内容: ●根据备份文件找出数据库名 ●根据备份文件找出数据、日志目录列表 ●构造还原数据... 阅读全文
摘要:
概述 在平时的工作中,我会经常的碰到这样需要合并SQL脚本的问题。如,有很多的SQL脚本文件,需要按照一定的先后顺序,再生成一个合并SQL脚本文件,然后再发布到用户SQL Server服务器上。 合并SQL脚本文件,最直接的方法就是新建1个空白的SQL脚本文件,再把需要合并的SQL脚本文件内容复制到新建的SQL文件中。当初,我合并脚本的操作方法与刚说的有类似。我在Microsoft SQL Server Management Studio(MSSMS)新建一个查询,再把要合并的SQL脚本文件,一个一个的打开,并复制内容到新建查询中,然后生成合并脚本文件。 上面的方法,对于几个... 阅读全文
摘要:
引述 首先,说我为什么写这篇文章,它让你了解到什么,对你是否有帮助。要是你是刚接触SQL Server同步复制,那么你可能会碰到各种各样的问题,你可能不会从哪里入手解决,或者你从Baidu,Google上找到解决问题的方法,但你很多时候只看到别人说的答案,很少有人去写分析其中的原因,倘若你没有找其他资料或查阅帮助文档了解为什么,以后你碰到同样问题,你也只能照搬之前的答案,有时候碰巧正确,你会突然的喜悦,但始终你不知道为什么那样,正如我们在学校学习,说的知其然而不知其所以然。 回到主题,以下内容使用我记录的繁体笔记,测试环境是SQL Server 2005 (SP3) ,因时间原因,没有作简体转 阅读全文
摘要:
引述 首先, 说下我写篇文章的目的,我希望能把我对触发器的理解,分享出来与你一起学习。如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,和触发器中事务个故事。在这边文章里面,我不会从触发器和事务的概念去讲述,而是从常见的两种触发器类型(DML触发器 & DDL触发器)和After触发器 & Instead Of 触发器的应用不同,开始... 阅读全文
摘要:
问题描述: 首先,不知道你有没有类似的经历,在可更新订阅的事务复制,当初始化订阅时,发生了类似这样的错误:列名 'msrepl_tran_version' 无效 。(源: MSSQLSERVER,错误号: 207 ) 图1.通过复制监视器来检查错误 图2.通过作业的历史记录来检查错误 问题分析: 我们知道,在允许可更新订阅的发布中发布表时,会将列 msrepl_tran_version 添加到表中。本文章中,在发布表Product是把列msrepl_tran_version添加到表中。View Code CREATETABLE[dbo].[Product]([Name][nva 阅读全文
摘要:
阅读全文
摘要:
之前在Microsoft SQL Server 2005的SP3版本中,当生成Drop & Create作业脚本的时候,有这样的问题:在 If Exists(...)使用的是JobName来判断,但If的下一句Delete Job的时候使用的是Job_id.生成Create脚本的时候又是使用JobName来Create了:这样导致了拿系统生成的Drop & Create 脚本去执行,就发生错误:这样给我们使用系统生成的Drop & Create作业脚本,非常的不方便。以为SQL2005SP3有这个问题,SQL2008没有,不过今天在使用SQL2008 ,无意中发现这个b 阅读全文
摘要:
當設定散髮,碰到數據庫msdb未啟動Service Broker選項錯誤,如下: 解決方法是: 1. 先停止代理SQL Server Agent。 2. 啟動msdb數據庫的Service Broker: Alter Database msdb Set enable_broker 3. 啟動代理SQL Server Agent。 4. 設定散髮。No incapable except unthinkable. MSN:weiguohao008@hotmail.com 阅读全文
摘要:
阅读全文
摘要:
最近做个远程数据同步复制测试,主要用来分析中央服务器与各个终端的网络数据传输情况。这里不描述如何设置同步,如何收集信息,而是描述收集数据后如何分析。如标题所说,使用Microsoft的Excel工具来分析,很简单而又直观的体现同步复制持续时间链路,从而分析出数据同步是否在预定时间范围,网络是否稳定。1.收集数据格式&内容,如图1: 图12.制作Excel图表分析。开始的时候,想通过测试项、服务器位置,统计出各个操作动作,的数据同步最大持续时间、最小时间、平均数据。虽然可以实现,感觉光光数据显示,太单调,毕竟要做报告。后来就想到可以使用Excel中的图表,来分析。这一更加 阅读全文