
SQL Server专题
studyzy
PalletOne联合创始人&CTO
展开
-
分析与设计数据库模型的简单过程
近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法。 在数据库设计中,设计的目标就是要建立E-R图(实体-关系图),在PowerDesigner中就是要建立概念模型或者逻辑模型。既然是实体-关系图,所以整个建模的核心就是围绕建立“实体”对象和找到实体之间的“关系”。实体分为两部分:标识原创 2010-01-11 11:52:00 · 3103 阅读 · 0 评论 -
SQL Server 2008新特性——策略管理
策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例、数据库以及数据库对象的各种属性。策略管理在SSMS的对象资源管理器数据库实例下的“管理”节点下,如图: 从图中可以看到,策略管理中包含三个节点:策略、条件、方面。方面就是策略要应用的对象,包括:服务器、表、触发器、视图、存储过程……这些方面对象都是系统定义好了的,仅供瞻仰不可更改。双击具体的某一个方面可以查看该原创 2008-09-09 03:42:00 · 2716 阅读 · 8 评论 -
SQL Server 2008新特性——SSMS增强
SQL Server 2008已经发布很多天了,今天来总结一下我们最常用的工具SSMS在SQL 2008中的一些改进: 1.在注册的服务器组中一次SQL查询可以针对多个服务器执行。 首先是要在“已注册的服务器”中创建组,也可以使用系统默认的组,然后添加多个数据库到组中。接下来右击数据库组,选择“新建查询”选项,系统将打开一个多数据库查询的编辑器,选择多个服务器中公共的数据库,在其中输入SQL语原创 2008-08-27 18:02:00 · 2172 阅读 · 2 评论 -
BIT类型在SQL Server中的存储大小
对于一般的INT、CHAR、tinyint等数据类型,他们占用的存储空间都是以Byte字节为单位的,但是BIT类型由于只有0和1或者说false和true,这种情况只需要一个Bit位就可以表示了,那么在SQLServer中BIT类型到底占用了多少空间?是不是由一个Bit位来存储的?或者可能是使用一个字节来存储的?这两个答案都不正确!!!实际上BIT类型占用的空间与BIT类型的列所在表的原创 2008-08-23 22:12:00 · 2024 阅读 · 1 评论 -
SQL Server 2008正式发布了,示例数据库安装
等了好久,SQL Server 2008终于正式发布了,官方网站提供了SQL2008的下载试用,不过有一点不爽的就是他居然把X86,X64和IA64三种处理器的版本放在了同一个ISO中,我使用的是X86的操作系统(想必大多数用户也是这样吧),但是我却要把这个支持X64和IA64的ISO下载下来,本来X86只有1.5G左右,现在却要下载3.5G的一个ISO。郁闷啊,我可怜的硬盘空间,又有2G被浪费了原创 2008-08-18 13:54:00 · 4678 阅读 · 3 评论 -
公布下SQL Server 2008 RC0英文版下载地址
最近比较郁闷,下载的是SQL2008中文版来安装起了,结果装VS2008英文版的时候装是装起了,但是用不起,原来我的VS2008在以前的系统中是可以用的。也许是SQL与VS的冲突吧,所以我就卸载了VS2008英文版,安装了VS2008中文版,结果就一切正常了。具体是不是SQL2008中文版和VS2008英文版有冲突我也难得追究,英文中午不存在,只要2个都能用就行。现在我机器上是Windows200原创 2008-08-05 17:03:00 · 2451 阅读 · 1 评论 -
如何修改数据库的服务器名称
最近我要在SQL Server 2008上做数据库复制的实验,需要用到两台服务器,所以我需要同时开2个虚拟机(VPC),当然我不可能去单独安装2个SQL Server,安装过程太费时了,所以我是在一个虚拟机中安装了SQL2008,然后将该虚拟机文件复制了一个出来,然后还原成另外一个虚拟机,这样我就可以同时使用2个虚拟机来做复制的实验了。我先在虚拟机SQL2008RC0中安装了Windows2003原创 2008-07-04 19:27:00 · 9054 阅读 · 0 评论 -
SQL2008空间数据类型--欧氏几何1基础
在SQL2008中增加了对地理空间数据类型的支持,该类型分为2种:欧氏(平面)几何geometry 和地理空间(椭圆体)几何geography 。欧式几何大家基本上都学过,是以坐标来表示,而地理空间就是使用经度和纬度来表示,由于平面几何比较简单(我记得好像是初中时候学的平面解析几何,高中学立体解析几何),所以我就从简单的学起,先学习geometry 数据类型。在平面几何中我们有3个基本元素:点原创 2008-03-17 02:43:00 · 4412 阅读 · 17 评论 -
SQL2008空间数据类型--欧氏几何2类与方法
在上一篇博客中说道了几何数据类型(点、线、面和集合)的定义,既然几何数据类型是通过CLR来扩展出来的,学习过C#的都知道,一个对象下面会有属性和方法,那么几何数据类型对应的也有其属性和方法。下图就能够反映出这些几何对象的类关系。 由于我自己本身对C#比较熟悉(其实其他语言也就不怎么会了),这里我就按照C#的方式来讲一下。 首先要将的是函数。函数分为几种:构造函数、静态函数和实例下的函数原创 2008-03-20 03:16:00 · 3075 阅读 · 4 评论 -
SQL Server 2008新特性——更改跟踪
在大型的数据库应用中,经常会遇到部分数据的脱机和多个数据库的合并问题。比如现在有一个全省范围使用的应用程序,每个市都部署了单独的相同的应用程序服务器和数据库服务器,每个月需要将全省所有市的数据全部汇总起来用于出全省的报表,这是一种很常见的数据库合并问题。再比如我们做了一个SmartClient的应用程序,每个客户端都有应用程序和数据库,另外还有一个中心数据库用于汇总所有客户端的数据。每个智原创 2009-01-19 17:16:00 · 1612 阅读 · 2 评论 -
一个字节造成的巨大性能差异——SQL Server存储结构
今天同事问了我一个SQL的问题,关于SQL Server内部存储结构的,我觉得挺有意思,所以写下这篇博客讨论并归纳了一下。问题是这样的:首先我们创建两张表,一张表的列长度是4039字节,另一张表的长度是4040字节,他们就只有一个字节的差距,比如以下创建表的SQL:CREATE TABLE tb4039(c1 INT IDENTITY,c2 char(4035) not null)CREATE T原创 2008-11-28 10:44:00 · 2839 阅读 · 10 评论 -
在SQL Server中使用种子表生成流水号注意顺序
前几天一个人问到了关于流水号重复的问题,我想了下,虽然说这个问题比较简单,但是具有广泛性,所以写了这篇博客来介绍下,希望对大家有所帮助。在进行数据库应用开发时经常会遇到生成流水号的情况,比如说做了一个订单模块,要求订单号是唯一的,规则是:下订单时的年月日+6位的流水号这样的规则。对于这种要生成流水号的系统,我们一般是在数据库中新建了一个种子表,每次生成新的订单时:1.读取当天种子最大值。2.根据种原创 2008-11-28 11:10:00 · 2139 阅读 · 1 评论 -
SQL Server 2008 R2主数据服务安装
SQL Server 2008 R2的主数据服务(Master Data Services,简称MDS)已经放出,目前是CTP版本,微软提供了下载地址: http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=fe0c6a31-5ad6-4eea-a865-73bbe2608bd1 在下载页面中提供了原创 2009-12-28 00:22:00 · 2975 阅读 · 0 评论 -
SQL Server到底需要使用哪些端口
SQL Server在安装到服务器上后,由于出于服务器安全的需要,所以需要屏蔽掉所有不使用的端口,只开放必须使用的端口。下面就来介绍下SQL Server 2008中使用的端口有哪些:首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果我们要远程连接数据库引擎,那么就需要打开该端口。这个端口是可以修改的,在“SQL Server配置管理器”中切换到“XXX的协议”里面选择,TCP原创 2009-11-30 15:23:00 · 5586 阅读 · 0 评论 -
在做SQL故障转移群集的时候应该选择哪种模式?
如果我们的SQL Server要保证高可用性,那么可以采用故障转移群集。最简单的故障转移群集是两台服务器,一台做活动的服务器,另一台做备用服务器,这就是AP模式的Cluster。另外一个模式就是AA模式,也就是两台服务器都是运行SQL Server实例。SQL Server不像Oracle一样有RAC,所以不可能说两台服务器同时运行同一个实例,想要两台服务器都使用起来的话,那么只有各自运行一个原创 2009-10-29 19:23:00 · 3019 阅读 · 0 评论 -
让SQL Server 2008默认使用Report Builder 2.0做报表设计器
由于SQL Server 2008比Report Builder 2.0先发布,所以默认情况下,在SSRS 2008中的报表管理器中单击“报表生成器”,打开的是Report Builder 1.0版本。这个版本的设计器功能很弱,所以肯定是要换成2.0版本的。 要换成2.0版本的Report Builder,其实最简单的办法就是将SQL Server 2008升级到SP1,升级后系统将会按照Rep原创 2009-11-05 22:34:00 · 7329 阅读 · 5 评论 -
关于SQL Server中将数值类型转换为字符串的问题
今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。 SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够原创 2009-08-27 06:02:00 · 58046 阅读 · 0 评论 -
SQL Server2008 R2新特性
SQL Server 2008的R2版本马上就要放出CTP了,其中最令人兴奋的就是R2中提供了主数据管理的功能,下面简单说一下R2中到底为我们带来了哪些新特性: 对超过64个内核CPU的支持。在SQL2008中最多只支持64个CPU核,现在R2中可以支持256个核了!!! 提供对硬件资源进行深入监控的仪表、报表之类的,可以帮助用户调优SQL Server,提高硬件资源的发挥和保证系原创 2009-06-22 17:49:00 · 3762 阅读 · 0 评论 -
使用SQL Server维护计划实现数据库定时自动备份
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL原创 2009-04-12 17:42:00 · 8048 阅读 · 3 评论 -
SQL Server 2008新特性——FILESTREAM
FILESTREAM简介FILESTREAM是SQL Server2008中的一个新特性,允许以独立文件的形式存放大对象数据,而不是以往一样将所有数据都保存到数据文件中。以往在对业务系统的文件进行管理时有两种方法,一种是将文件保存到服务器文件系统中,数据库中只保存了该文件的路径,在使用该文件时应用程序连接到服务器读取文件;另一种是将文件以varbinary(max)或image数据原创 2009-02-23 21:54:00 · 2844 阅读 · 1 评论 -
在window下安装使用Sybase ASE 12.5
首先下载Sybase ASE 12.5的安装文件,下载地址为http://download.sybase.com/eval/ASE_1252_DE/ase1252_de_win.zip 另外还有Sybase ASE 12.5的客户端 ,当然在第一个下载地址中也包含了Sybase客户端,用户可以不用再专门下载客户端的。这次我们使用了2个VPC(Win2003的操作系统)来做该实验,1个安装运行Syb原创 2008-02-26 22:18:00 · 4871 阅读 · 1 评论 -
使用OPENXML函数将XML文档转换为行结果集
FOR XML子句都是将行结果集转换为XML结果集,那么如果想要将XML文档转换成行结果集,这时就要使用OPENXML函数。OPENXML在SQL Server 2000中就已经提供,但是在SQL Server 2005对该函数进行了增强。OPENXML的语法为:运行的结果为:FirstName MiddleName LastName---------------原创 2008-02-26 22:15:00 · 1323 阅读 · 0 评论 -
在SQL Server2005中使用 .NET程序集
昨天完成了一个最简单的在数据库中创建标量值函数,今天主要完成表值函数,存储过程和用户定义类型在和.NET结合下的使用方法.1,表值函数所谓表值函数就是说这个函数返回的结果是一个Table,而不是单个的值.在.NET 中创建这样的函数,返回的结果是一个IEnumerable接口.这个接口非常灵活,所有.NET数组集合等都是实现了该接口的.下面我们举一个简单的例子来说明.在VS2005中创建一个类St原创 2006-10-25 19:42:00 · 1829 阅读 · 0 评论 -
数据库设计范式
关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍。 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手 关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式转载 2006-10-24 17:11:00 · 1494 阅读 · 0 评论 -
数据库快照,自定义函数与计算列
数据库快照,自定义函数与计算列1.数据库快照数据库快照就是保存某个数据库在快照那一瞬间的状态.快照和备份原理上有所不同,但是功能有一点相同那就是可以将数据还原为备份的那个时刻.快照的原理是新建一个数据库指针,在原数据库没有变化的情况下快照是不占用空间的,而数据库发生了变化,那么在变化前,被修改的数据页会先复制一份到快照文件中,然后再对原数据页进行修改.显然这样做的好处就是比备份数据库占用空间小.快原创 2006-10-23 18:42:00 · 1520 阅读 · 0 评论 -
使用数据库引擎优化Tuning Advistor和dta
SQL Server 2005一个我非常欣赏的特性就是有了专门优化程序,据说在2K下面也有,不过我没有用过,估计也不会怎么样. 不说2K还是说说2005的这个好东东.在Sql Server Management Studio中点击"工具"的"数据库引擎优化顾问"可以启动这个程序,当然也可以通过开始菜单中的SQL2005下面的"性能工具"下来打开程序.打开该程序后输入正确的用户名密码就可以登原创 2006-10-12 19:04:00 · 1341 阅读 · 0 评论 -
SQL Server2005 新数据类型XML
在SQL Server2005中继续延续了微软在.Net中的设计思想 将XML和.Net紧密地结合到其中.用.Net在Sql2005中写存储过程定义函数我还没有研究过,今天就只简单得谈谈XML在SQL2005中的应用.相对SQLServer2000而言,2005在数据类型上最大的一点改变就是增加了XML这个数据类型.要把这个东西搞懂先就必须要懂XML.在数据库中xml的定义和使用和一般的数原创 2006-10-13 18:27:00 · 1172 阅读 · 0 评论 -
SQL Server连接中三个常见的错误分析
一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1.SQL Server名称或IP地址拼写有误 2.服务器端网络配置有误 3.客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接 ping 如果 ping转载 2006-10-12 11:44:00 · 1057 阅读 · 0 评论 -
SQL Server2005的连接和配置(入门)
如果服务器和客户端是同一台机器,那么可以使用ShareMemory进行连接,这种方式不需要通过网络,所以速度应该是最快的。使用方法就是在SQL Server Mangage Studio中的登录-选项-“连接属性”中选择该网络协议就是了。如果是服务器客户端分开的,一般是使用TCP/IP来进行连接,默认使用TCP1433端口,一般也不用改。若想自定义端口那么就要在服务器上打开配置工具“SQL原创 2006-10-12 11:03:00 · 1534 阅读 · 1 评论 -
走进SQL Server 2005:十大安全举措
SQL Server 2005 加强的十大安全举措 随着数据库系统被用作网络应用程序后台存储范围的持续扩大,对安全的关注也就越来越必要。虽然从发展的角度来看,围绕在SQL Server 2005的周围的还有不少的杂音,但是微软的囊括了很多优秀的新特性的数据管理系统还是可以帮助开发人员和数据库管理员锁定数据库系统,保护对敏感数据的访问。 以下是一个高层列表,没有特定的顺序,列出了SQL转载 2006-10-11 18:06:00 · 1399 阅读 · 0 评论 -
SQL Server2005中的SMO编程
SMO编程SMO是SQL Mangagement Objects的简称.与之相对应的是ADO.Net,不过不同的地方是ADO.Net是用于数据访问的,而SMO是用于设计的,虽然SMO能够再服务器上执行任意的SQL语句.另外一个不同的地方是ADO.Net可以访问计算机中任意数据源,而SMO对象是专门针对SQL Server而设计的.在SMO中最重要的一个类就是Server.其他大多数对象都是Serv原创 2006-10-26 18:33:00 · 2108 阅读 · 0 评论 -
SqlServer下数据库链接的使用方法
有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接。 数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上,并且像操作本地数据库一样。那么怎么创建数据库链接呢?我现在有两种方法可以实现。 第一种:在 sqlserver 企业管理器中,建转载 2006-12-08 15:02:00 · 1303 阅读 · 0 评论 -
微软产品居然出现中文兼容问题
微软的东西一直让我觉得比 Linux好的地方就是没有中文的兼容问题,不想Linux下装中文语言包了还要出现乱码。可是现在微软在开发上的两大产品VS2005和SQL2005都出现了和中文的兼容问题。VS2005出现的问题是在开发时,中文输入法老是要从半角变成全角。做出来的Form在Form切换的时候也出现了同样的问题,让用户体验大为下降。具体情况网上说的比较多,也有人提出了解决办法,参见:原创 2006-12-14 20:46:00 · 1232 阅读 · 0 评论 -
SQL Server 2005与Oracle同步注意NUMBER类型转换
在前面的文章中我已经讲到使用同义词的方法来在SQL Server 2005下连接Oracle,我们可以使用同义词来实时访问Oracle数据库,但是如果Oracle中的表数据流较大则会影响应用系统的性能,于是我采用数据库作业每天定时执行: drop table abc--删除旧表goselect * into abcfrom aaa--aaa为同义词这样就可以把Oracle中的数据同步到本地原创 2008-02-26 22:14:00 · 2135 阅读 · 0 评论 -
如何将SQLServer2005中的数据同步到Oracle中
有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实原创 2008-02-26 22:13:00 · 1860 阅读 · 0 评论 -
同样功能的SQL语句,写成参数和写成常量怎么效率会有那么大的差别
今天写一个存储过程,由于执行的时间比较长(7秒)所以打算优化一下.结果在优化测试代码中发现如下一个奇怪的现象.现在有一个表mis_gl_balance,其中有一个字段ACC_SEGMENT VARCHAR(181) NULL ,他的内容的形式如下:3810.105301.5414070180.000000.00000000.0000.000000另外一个表finance_budget_accoun原创 2008-02-26 22:10:00 · 1305 阅读 · 2 评论 -
如何防止插入删除表造成的数据库死锁
在数据库中经常会遇到这样的情况:一个主表A,一个子表B,B表中包含有A表的主键作为外键。当要插入数据的时候,我们会先插入A表,然后获得A表的Identity,再插入B表。如果要进行删除操作,那么就先删除子表B,然后再删除主表A。在程序设计中,对两个表的操作是在一个事务之中完成的。当系统使用频繁就会出现插入操作和删除操作同时进行的情况。这个时候插入事务会先将主表A放置独占锁,然后去原创 2008-02-26 22:09:00 · 1911 阅读 · 0 评论 -
SQL2005实现循环每一行做一定操作
要对一个表的每一行做出比较复杂的操作,一般会想到用游标,今天想到使用SQL2005中的新函数ROW_NUMBER()和while循环来对每一行执行操作。示例代码如下:select Department_No as departmentNo,ROW_NUMBER() OVER(ORDER BY Department_No) AS rowNumber into #depTemp--建立临时表fro原创 2008-02-26 22:06:00 · 1510 阅读 · 0 评论 -
利用SQLServer2005复制功能实现与Oracle数据库同步
在项目中经常会遇到一个项目操作几个数据库的情况,若是同种类型的数据库也还好说,可以直接链接两个数据库,也可以用数据库的同步功能。若我们的项目使用SQLServer2005进行开发,而且项目中要用到Oracle数据库中的数据,那么又该怎么实现拉?一般来说方案有以下几种。1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Dat原创 2007-02-05 11:07:00 · 5045 阅读 · 0 评论 -
SQL Server 2005 同义词Bug
今天发现了SQL2005的一个Bug,在建立同义词链接Oracle的时候,使用下面的语句: CREATE SYNONYM [dbo].mis_vendor FOR [TEST]..[MIS].MIS_VENDOR 这样建立好了同义词,然后刷新同义词,可以看到我们的同义词在ManegementStudio中了。这个时候查看他的属性可以看到架构变成了.MIS,这个明显不对,我原创 2006-12-26 15:40:00 · 1579 阅读 · 0 评论