Sql Server 2008
灰太狼
这个作者很懒,什么都没留下…
展开
-
SQL Server CLR全功略之五---CLR自定义数据类型
一、这是这个系列的最后一节了,自定义复杂数据类型目前只能通过CLR来实现。为了在 SQL Server 中运行,您的 UDT 必须实现 UDT 定义中的以下要求: 1.该 UDT 必须指定 Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute。System.SerializableAttribute 可选用,但建议使用。 2.U原创 2009-11-13 16:18:00 · 5123 阅读 · 7 评论 -
SQL Server CLR全功略之四---CLR触发器
CLR可以实现DML和DDL两种触发形式,但是本人一般不建议使用CLR的触发器,主要是考虑到效率问题。比如我们使用trigger来实现发mail等操作时,就要考虑pop3或是smtp等待时间,因为trigger本事就是个事务,也就是说,在smtp等待时间也算在了整个事务中,这样就会大大影响效率。1.CLR DML触发器DML指的是数据操作语言,也就是通常的insert,update和del原创 2009-11-10 21:23:00 · 8310 阅读 · 5 评论 -
SQL Server CLR全功略之三---CLR标量函数、表值函数和聚合函数(UDA)
本节主要介绍使用CLR创建标量函数,表值函数和聚合函数。所谓标量函数指的就是此函数只返回一个值。表值函数返回值是一个表。聚合函数是在select语句中使用的,用来聚合一个结果集,类似于Sum()或是Count()等内置的函数,而且真正的自定义聚合函数目前只能用CLR来实现。下面的例子使用了SQLServer自带的pubs数据库。1.CLR标量函数1.1无参函数 ///原创 2009-11-10 14:04:00 · 11757 阅读 · 4 评论 -
SQL Server CLR全功略之二---CLR存储过程
从这一节开始呢,我们就要开始CLR的编程之旅了。在这之前,我先把本节中需要了解的两个新类SqlDataRecord和SqlMetaData,及五个新方法SqlContext.Pipe.SendResultsStart,SqlContext.Pipe.SendResultsRow,SqlContext.Pipe.SendResultsEnd,SqlContext.Pipe.Send和SqlConte原创 2009-10-26 22:14:00 · 14873 阅读 · 2 评论 -
SQL Server CLR全功略之一---CLR介绍和配置
Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能。CLR 为托管代码提供服务,例如跨语言集成、代码访问安全性、对象生存期管理以及调试和分析支持。对于 SQL Server 用户和应用程序开发人员来说,CLR 集成意味着您现在可以使用任何 .NET Framework 语言原创 2009-10-25 22:04:00 · 24373 阅读 · 5 评论 -
SQL连接字符串大全
自己看吧。市面上能找到的大部分数据库都在这里了。 http://www.connectionstrings.com/附个图。无图无真相。转载 2009-10-25 16:21:00 · 2104 阅读 · 0 评论 -
使用SQLServer模板来写规范的SQL语句
如果你经常遇到下面的问题,你就要考虑使用SQL Server的模板来写规范的SQL语句了:SQL初学者。经常忘记常用的DML或是DDL SQL 语句。在多人开发维护的SQL中,每个人都有自己的SQL习惯,没有一套统一的规范。在SQL Server Management Studio中,已经给大家提供了很多常用的现成SQL规范模板。SQL Server Managemen原创 2009-09-15 14:43:00 · 8683 阅读 · 24 评论 -
在SQL Server 中使用EVENTDATA()函数来获取DDL 触发器信息
SQL Server 2005/2008中可以使用EVENTDATA函数来获取DDL触发器的上下文,从而在ROLLBACK之前截获DDL信息。EVENTDATA返回XML字段,下面的例子显示如何截获Drop Table的DDL信息。-- Create a log tableCREATE TABLE TriggerLog (LogInfo xml)-- Create a dummy原创 2009-07-08 16:54:00 · 4065 阅读 · 0 评论 -
SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库。转载请注明此文原创自CSDN TJVictor的专栏:http://blog.csdn.net/tjvictor/archive/2009/07/08/4331039.aspx 1.ROW_NUMBER()基本用法:SELECT Sales原创 2009-07-08 14:11:00 · 18436 阅读 · 1 评论 -
SQL Server 中使用参数化Top语句
在T-Sql中,一般top数据不确定的情况下,都是拼sql,这样无论是效率还是可读性都不好。应该使用下面参数化Top方式:declare @TopCount int set @TopCount = 100 select top (@TopCount) * from AdventureWorks.HumanResources.Employee 如果有Like等字句,一定要拼Sql的话,也原创 2009-07-07 11:00:00 · 6671 阅读 · 0 评论 -
SQL Server Job运行成功或失败时发送电子邮件通知
虽然我们可以通过Job日志来查看SQL Server Job运行成功或是失败,但是人工主动去查没有及时性,也不智能化。下面简单介绍一下如何设置SQL Server的邮件通知,让Job完成后,自动发送状态邮件。SQL Server 2005的设置如下: 1.运行SQL Server Surface Area Configuration->Surface Area Configura原创 2009-09-01 19:54:00 · 14433 阅读 · 1 评论 -
XML 数据类型方法"modify" 的参数1 必须是字符串文字
在使用XML的modify方法时,无法使用变量来替代相应的参数。只能使用动态SQL来解决这个问题。 declare @XmlContent xml = declare @InsertContent varchar(1024) = insert ttt as last into (/root[1]); 如果执行:set @XmlContent原创 2009-09-02 20:59:00 · 4604 阅读 · 0 评论 -
SQL Server中关于的checkpoint使用说明
在SQL Server中有一个非常重要的命令就是CheckPoint,它主要作用是把缓存中的数据写入mdf文件中。其实在我们进行insert, update, delete时,数据并没有直接写入数据库对应的mdf文件中,而是写入了缓存里,这有点像电驴,因为过于频繁的写入会使磁盘的寿命大大减小。 从上图可以直观的看出。只有当发生checkpoint时,数据才会被写入mdf数据文件。原创 2010-01-18 21:26:00 · 17287 阅读 · 1 评论 -
SQL Server里面的U锁
X锁即是我们常说的排它锁,U锁很少见,只在更新时会出现。U锁其实是X锁的一种,当数据更新时,U锁首先加到要更新的数据上(即使目标上面有S锁,U锁还是可以加上),等目标可以被更新时,U锁即转变为X锁。 如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor原创 2010-03-04 11:52:00 · 19132 阅读 · 1 评论 -
迟到的Top语句
with c as( select top 100 * from TestTable ) select * from c order by CreateTime desc 按照字面意思,我们需要先从TestTable上取前100条数据,再把这100条数据按时间倒序显示。可实际结果却是先按CreateTime倒序,然后取后100条数据。也就是说,我们需要的结果是100~1,但是实际结果却是999~900。原创 2010-06-04 11:57:00 · 23493 阅读 · 15 评论 -
SQL Server中GO的使用方法
GO不是标准SQL语句,甚至不是T-SQL语句。它只是SQL Server管理器(SSMS)中用来提交T-SQL语句的一个标志。你可以在SSMS中任意指定这个提交标志。SSMS->工具->选项->查询执行->SQL Server->批分隔符中指定这个提交标志。如下图: 除了提交外,GO还可以指定提交的次数。比如select * from tablego 2原创 2010-04-06 14:50:00 · 30656 阅读 · 3 评论 -
在SQL Server中使用自定义数据类型来规范数据库字段变量
我们在设计数据库或是设计表时,经常会遇到同一个字段出于某种原因出现在不同表中的情况。比如SchoolName varchar(50),出现在tblSchoolBase、tblSchoolReport、tblSchoolExpert……表中。这样就很难保证在不同表中SchoolName字段的一致性。比如有些表中是varchar(32),有些是char(32)等。数据类型的不一致会导致数据原创 2010-03-29 20:02:00 · 24089 阅读 · 3 评论 -
SQL Server 行列转换示例
SQL Server的行列转换功能非常实用,但是由于其语法不好懂,使很多初学者都不愿意使用它。下面我就用示例的形式,逐一展现Pivot和UnPivot的魅力。如下图 由于近期CSDN的图片服务器不稳定,如果图片挂了,请读者访问图片原地址:http://img242.ph.126.net/4isS79TpI8jxQViyLD410Q==/2136958023189057751.jpg原创 2010-01-13 17:26:00 · 4750 阅读 · 12 评论 -
SQL Server如何跨实例访问数据库
在我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instance02中的数据。例如在做数据迁移时,如下语句:insert into Instance01.DB01.dbo.Table01 select * from Instance02.DB01.dbo.Table01普通情况下,这样做是不允许的,因为SQL Server原创 2010-01-06 14:27:00 · 13193 阅读 · 8 评论 -
How to Set Up SQL Server 2008 FileStream In the Cluster
Today i meet a very odd problem. i use sql server 2008 filestream in the cluster, when i remove a sql instance form one node to another, the operator is succecced, but the filestream db is disable. wh原创 2009-12-30 08:09:00 · 1378 阅读 · 0 评论 -
SQL Server数据库自动处理外键关系的存储过程
最近总在做数据迁移的工作。做过类似工作的朋友都知道,数据迁移时,表之间的外键约束实在是让你头疼的事。因为你必须要确定表迁移的顺序,否则迁移过程中,总是在报外键约束的错误。即使你把表之间的外键临时drop了,迁移数据后,再create时,就会发现由于数据的不一致,导致外键已经无法创建成功了。 根据我的经验,如果迁移的数据不是那么重要的话或者说允许表中有些不一致数据存在的话,那么不必drop和原创 2009-12-29 13:29:00 · 3016 阅读 · 0 评论 -
SQL Server 如何在运行时重编译存储过程
有两种方法动态重编译存储过程: 1.在Create时加上RECOMPILE选项 CREATE PROCEDURE dbo.PersonAge (@MinAge INT, @MaxAge INT) WITH RECOMPILE AS SELECT * FROM dbo.tblTable 2.在执行时加上RECOMPILE选项 EXEC dbo.Perso原创 2010-03-04 11:56:00 · 19691 阅读 · 1 评论 -
如何在未加入域的机器上使用集成认证来登陆SQL Server
一般使用SQL Server的集成认证时,都需要登陆进域,下面介绍一种不需要登陆域就可以使用域用户登陆SQL Server的方法。SQL Server Management Studio 2005和2008的快捷方式如下图: SQL Server 2008 x64: "C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Bi原创 2010-03-01 10:42:00 · 3255 阅读 · 3 评论 -
SQL Server 中关于EXCEPT和INTERSECT的用法
熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。INTERSECT是指在两个集合中都存在的数据。测试如下:create table t1(id int,mark char(2))gocr原创 2010-03-04 15:08:00 · 90482 阅读 · 7 评论 -
SQL Server 2008行数据和页数据压缩解密
SQL Server的性能主要取决于磁盘I/O效率,提高I/O效率某种程序上就意味着提高性能。SQL Server 2008提供了数据压缩功能来提高磁盘I/O。数据压缩意味着减小数据的有磁盘占用量,所以数据压缩可以用在表,聚集索引,非聚集索引,视图索引或是分区表,分区索引上。数据压缩可以在两个级别上实现:行级别和页级别。页级别压缩包括行级别压缩。表和索引在创建的同时就可以压缩,也可以使用A原创 2010-03-04 13:52:00 · 19334 阅读 · 5 评论 -
SQL Server 优化存储过程的七种方法
优化存储过程有很多种方法,下面介绍最常用的7种。1.使用SET NOCOUNT ON选项我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。使用SET NOCOUNT ON后,除了数据集就不会返回额外的信息了,减小网络流量。2.使用确定的Schema在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以使SQL Server直接找到对应目标,避原创 2010-03-04 11:42:00 · 11968 阅读 · 3 评论 -
在sp_executesql中使用like字句
在sp_executesql中可以执行参数化的sql,但是如果sql中有like,那么一般都要拼字符串,下面的例子把两者结合了起来,既有拼sql的灵活性,又有参数化sql的优点。declare @LikeSql nvarchar(32);--定义一个like变量,如果是存储过程,此处可以存储过程的参数set @LikeSql = ‘someword%’;--把LikeSql变量赋值,可以赋原创 2009-06-25 16:50:00 · 2760 阅读 · 0 评论 -
SQL Server 触发器:表的特定字段更新时,触发Update触发器
create trigger TR_MasterTable_Updateon MasterTableafter updateas if update ([Type])--当Type字段被更新时,才会触发此触发器 insert into MasterLogTable select Id ,(Case [Type] when 1 then Type1 when 2 then Ty原创 2009-08-26 10:22:00 · 36173 阅读 · 0 评论 -
Sql Server 字符串聚合函数
Sql Server 有如下几种聚合函数SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN,但是这些函数都只能聚合数值类型,无法聚合字符串。如下表:AggregationTableIdName1赵2钱1孙1李2周如果想得到下图的聚合结果Id原创 2009-06-22 15:38:00 · 12316 阅读 · 8 评论 -
Sql Server 2008 FileSteam全攻略(一)---FileStream介绍
SqlServer2005及以前的版本,存储二进制大数据量对象(Blob)都是采用varbinary(max)的字段。Sql Server 2008通过将 varbinary(max) 二进制大型对象 (BLOB) 数据以文件形式存储在文件系统上,FILESTREAM 使 SQL Server 数据库引擎和 NTFS 文件系统成为了一个整体。Transact-SQL语句可以插入、更新、查询、原创 2009-04-30 12:50:00 · 3822 阅读 · 1 评论 -
SQL Server 2008 Merge语句的OUTPUT功能
SQL Server 2005中的Output功能可以把Insert,Update和Delete的内容都返回,2008中的Output同样具有此功能,下面介绍一下把Output同2008的新T-SQL语句Merge组合使用的方法:新建下面表:CREATE TABLE Book( ISBN varchar(20) PRIMARY KEY, Price decimal,原创 2009-07-13 16:50:00 · 4916 阅读 · 0 评论 -
SQL Server 2008 新类型介绍之Date和Time
SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset。各时间类型范围、精度一览表:数据类型时间范围精度datetime1753-01-01到9999-12-31 00:00:00 到 23:59:59.9973.33毫秒原创 2009-07-13 14:42:00 · 24517 阅读 · 3 评论 -
Sql Server 2008 FileSteam全攻略(二)---FileStream安装
1. 开启FileSteam功能在安装Sql Server 2008数据库实例时,会有一个选项提示此数据库是启开启FileStream功能,选上安装即可。如果在安装时没有选此项,那么按如下步骤也可以开启FileStream功能· 在“开始”菜单中,依次指向“所有程序”、“Microsoft SQL Server 2008”和“配置工具”,然后单击“SQ原创 2009-04-30 13:18:00 · 5805 阅读 · 3 评论 -
Sql Server 2008 FileStream如何删除磁盘上的文件
Sql Server 2008 FileStream是Sql Server 2008新引进的功能。它可以把二进制Blob数据以文件形式存放在磁盘上,而且提供select,insert,update,delete等操作。 本人最近使用FileStream时遇到一个问题,就是Sql Server无法自动删除磁盘上的文件。按照book online上的说明,删除包含 FILES原创 2009-04-30 11:34:00 · 5194 阅读 · 2 评论 -
SQL Server 2008 新增T-SQL 简写语法
1.定义变量时可以直接赋值DECLARE @Id int = 5 2.Insert 语句可以一次插入多行数据INSERT INTO StateList VALUES(@Id, WA), (@Id + 1, FL), (@Id + 2, NY) 3.支持+=操作符SET StateId += 1 完整示例如下:CREATE TABLE StateL原创 2009-07-14 11:22:00 · 3024 阅读 · 0 评论 -
SQL Server 服务器及数据库用户角色权限
Server Role Description bulkadmin Members can run the BULK INSERT statement. Membership in this role still requires that non-sysadmin users have access to th原创 2009-07-15 17:22:00 · 2928 阅读 · 0 评论 -
Sql Server 2008 FileSteam全攻略(三)---使用Win32管理FileStream数据
可以使用 Win32 在 FILESTREAM BLOB 中读取和写入数据。您需要执行以下步骤:· 读取 FILESTREAM 文件路径。· 读取当前事务上下文。· 获取 Win32 句柄,并使用该句柄在 FILESTREAM BLOB 中读取和写入数据。为了使用测试代码可用,请清空FileStreamTestDb数据,关于如何创建F原创 2009-04-30 13:37:00 · 3085 阅读 · 0 评论 -
Sql Server数据库事务介绍(二)---Sql语句,SqlTransaction和TransactionScope的使用方法
本节主要介绍Sql语句,SqlTransaction和TransactionScope这三种使用事务的方法。 本节的所有例子都在sql server 2008和vs 2008环境下运行通过,如果没有sql server2008,那么使用sql server 2005也一样,但是sql se rver 2000上是无法运行通过的,因为某些sql语句在2000中不支持。请大家原创 2009-04-14 22:37:00 · 24303 阅读 · 12 评论 -
Sql Server数据库事务介绍(一)---什么是事务
事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。 举个例子,比如你去银行转帐就是一个事务。转帐可以简单的分为两个步骤,一是把钱从你的帐户中扣除,二是把钱存到你指定转帐的帐户中。这两个步骤就是一个事务,必须全部执行,或是全部不执行。如果从你帐户扣钱成功,但是原创 2009-04-14 23:07:00 · 6440 阅读 · 0 评论 -
select * from sp_who的解决方案
sql server中提供很多有用的系统存储过程,但是我们都知道,存储过程的结果集是不能用select来过滤的,也就是说select * from sp_who where [dbname] = xxx;这样的语句是执行不过。下面介绍两种方法来解决这个问题方法一:使用临时表。首先创建一个与sp_who相同字段的临时,然后用insert into 方法赋值,这样就可以select这个临时表了原创 2009-04-14 21:26:00 · 3752 阅读 · 0 评论