<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>旁门左道 &#187; SQL Server</title>
	<atom:link href="http://log.medcl.net/item/category/%e6%95%b0%e6%8d%ae%e5%ba%93/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://log.medcl.net</link>
	<description>记录生活</description>
	<lastBuildDate>Wed, 08 Feb 2012 02:51:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>SQL Server 切换用户模式</title>
		<link>http://log.medcl.net/item/2010/09/sql-server-user-mode-switch/</link>
		<comments>http://log.medcl.net/item/2010/09/sql-server-user-mode-switch/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 09:57:20 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=579</guid>
		<description><![CDATA[在sql server中，数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用： alter database DatabaseName set single_user 该命令限制用户只能逐个访问数据库 alter database DatabaseName set restricted_user 该命令限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问数据库 alter database DatabaseName set multi_user 该命令将数据库的访问权限返回其一般运行状态 在sql server中，数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用： alter database DatabaseName set single_user 该命令限制用户只能逐个访问数据库 alter database DatabaseName set restricted_user 该命令限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问数据库 alter [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/09/sql-server-user-mode-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sqlserver2008安装报错 “Previous releases of Microsoft Visual Studio 2008″ failed.</title>
		<link>http://log.medcl.net/item/2010/04/sqlserver2008-installation-error-u0026quotprevious-releases-of-microsoft-visual-studio-2008u0026quot-failed/</link>
		<comments>http://log.medcl.net/item/2010/04/sqlserver2008-installation-error-u0026quotprevious-releases-of-microsoft-visual-studio-2008u0026quot-failed/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 07:40:16 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sqlserver2008]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=386</guid>
		<description><![CDATA[“Previous releases of Microsoft Visual Studio 2008″ failed. 问题原因，vs2008未安装sp1 解决办法： 1.去掉下面3个安装组件 Management Tools Integration Services Business Intelligence Development Studio 2.转到安装目录，执行： Setup /ACTION=install /SkipRules=VSShellInstalledRule RebootRequiredCheck     Tags: sqlserver2008]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/04/sqlserver2008-installation-error-u0026quotprevious-releases-of-microsoft-visual-studio-2008u0026quot-failed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转] SQL优化心得</title>
		<link>http://log.medcl.net/item/2010/03/change-sql-optimization-experience/</link>
		<comments>http://log.medcl.net/item/2010/03/change-sql-optimization-experience/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 03:56:51 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[sql优化]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=240</guid>
		<description><![CDATA[大家都在讨论关于数据库优化方面的东东，刚好参与开发了一个数据仓库方面的项目，以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了，拿出来大家共享。欢迎批评指正阿！ SQL语句： 是对数据库(数据)进行操作的惟一途径； 消耗了70%~90%的数据库资源；独立于程序设计逻辑，相对于对程序源代码的优化，对SQL语句的优化在时间成本和风险上的代价都很低； 可以有不同的写法；易学，难精通。 SQL优化： 固定的SQL书写习惯，相同的查询尽量保持相同，存储过程的效率较高。 应该编写与其格式一致的语句，包括字母的大小写、标点符号、换行的位置等都要一致 ORACLE优化器： 在任何可能的时候都会对表达式进行评估，并且把特定的语法结构转换成等价的结构，这么做的原因是 要么结果表达式能够比源表达式具有更快的速度 要么源表达式只是结果表达式的一个等价语义结构 不同的SQL结构有时具有同样的操作（例如：= ANY (subquery) and IN (subquery)），ORACLE会把他们映射到一个单一的语义结构。 1 常量优化： 常量的计算是在语句被优化时一次性完成，而不是在每次执行时。下面是检索月薪大于2000的的表达式： sal > 24000/12 sal > 2000 sal*12 > 24000 如果SQL语句包括第一种情况，优化器会简单地把它转变成第二种。 优化器不会简化跨越比较符的表达式，例如第三条语句，鉴于此，应尽量写用常量跟字段比较检索的表达式，而不要将字段置于表达式当中。否则没有办法优化，比如如果sal上有索引，第一和第二就可以使用，第三就难以使用。 2 操作符优化： 优化器把使用LIKE操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。 例如：优化器会把表达式ename LIKE 'SMITH'转换为ename = 'SMITH' 优化器只能转换涉及到可变长数据类型的表达式，前一个例子中，如果ENAME字段的类型是CHAR(10)， 那么优化器将不做任何转换。 一般来讲LIKE比较难以优化。 其中： ~~ IN 操作符优化： 优化器把使用IN比较符的检索表达式替换为等价的使用“=”和“OR”操作符的检索表达式。 例如，优化器会把表达式ename IN ('SMITH','KING','JONES')替换为 ename = 'SMITH' OR [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/03/change-sql-optimization-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转] 影响SQL server性能的关键三个方面</title>
		<link>http://log.medcl.net/item/2010/03/change-impact-the-performance-of-sql-server-the-key-to-three-aspects-of/</link>
		<comments>http://log.medcl.net/item/2010/03/change-impact-the-performance-of-sql-server-the-key-to-three-aspects-of/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 03:54:32 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[索引优化]]></category>
		<category><![CDATA[聚镞]]></category>
		<category><![CDATA[非聚镞]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=239</guid>
		<description><![CDATA[1 逻辑数据库和表的设计 数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为 优化数据库和应用程序打下良好的基础。 标准化的数据库逻辑设计包括用多的、有相互关系的窄表来代替很多列的长数据表。下面是一些使用标准化 表的一些好处。 A:由于表窄，因此可以使排序和建立索引更为迅速 B:由于多表，所以多镞的索引成为可能 C:更窄更紧凑的索引 D:每个表中可以有少一些的索引，因此可以提高insert update delete等的速度，因为这些操作在索引 多的情况下会对系统性能产生很大的影响 E:更少的空值和更少的多余值，增加了数据库的紧凑性 由于标准化，所以会增加了在获取数据时引用表的数目和其间的连接关系的复杂性。太多的表和复杂的连接关系会降低服务器的性能，因此在这两者之间需要综合考虑。 定义具有相关关系的主键和外来键时应该注意的事项主要是：用于连接多表的主键和参考的键要有相同的数据类型。 2 索引的设计 A:尽量避免表扫描 检查你的查询语句的where子句，因为这是优化器重要关注的地方。包含在where里面的每一列（column)都是可能的侯选索引，为能达到最优的性能，考虑在下面给出的例子：对于在where子句中给出了column1这个列。 下面的两个条件可以提高索引的优化查询性能！ 第一：在表中的column1列上有一个单索引 第二：在表中有多索引，但是column1是第一个索引的列 避免定义多索引而column1是第二个或后面的索引，这样的索引不能优化服务器性能 例如：下面的例子用了pubs数据库。 SELECT au_id, au_lname, au_fname FROM authors WHERE au_lname = 'White' 按下面几个列上建立的索引将会是对优化器有用的索引 ?au_lname ?au_lname, au_fname 而在下面几个列上建立的索引将不会对优化器起到好的作用 ?au_address ?au_fname, au_lname 考虑使用窄的索引在一个或两个列上，窄索引比多索引和复合索引更能有效。用窄的索引，在每一页上 将会有更多的行和更少的索引级别（相对与多索引和复合索引而言），这将推进系统性能。 对于多列索引，SQL Server维持一个在所有列的索引上的密度统计（用于联合）和在第一个索引上的 histogram（柱状图）统计。根据统计结果，如果在复合索引上的第一个索引很少被选择使用，那么优化器对很多查询请求将不会使用索引。 有用的索引会提高select语句的性能，包括insert,uodate,delete。 但是，由于改变一个表的内容，将会影响索引。每一个insert,update,delete语句将会使性能下降一些。实验表明，不要在一个单表上用大量的索引，不要在共享的列上（指在多表中用了参考约束）使用重叠的索引。 在某一列上检查唯一的数据的个数，比较它与表中数据的行数做一个比较。这就是数据的选择性，这比较结果将会帮助你决定是否将某一列作为侯选的索引列，如果需要，建哪一种索引。你可以用下面的查询语句返回某一列的不同值的数目。 select count(distinct cloumn_name) from [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/03/change-impact-the-performance-of-sql-server-the-key-to-three-aspects-of/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>多个字段排序的sql</title>
		<link>http://log.medcl.net/item/2010/03/sort-multiple-fields-sql/</link>
		<comments>http://log.medcl.net/item/2010/03/sort-multiple-fields-sql/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:59:05 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[排序]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=236</guid>
		<description><![CDATA[sql又生疏了... CREATE TABLE testsort&#40; a VARCHAR, b VARCHAR, c VARCHAR&#41; --需要按照b,c排序，按照a来分组,b降序,c升序，每个A组里面取排序后的第一条记录 INSERT INTO testsort VALUES&#40;'A','1','2'&#41;; INSERT INTO testsort VALUES&#40;'A','3','2'&#41;; INSERT INTO testsort VALUES&#40;'A','3','1'&#41;; INSERT INTO testsort VALUES&#40;'B','3','2'&#41;; INSERT INTO testsort VALUES&#40;'B','2','1'&#41;; INSERT INTO testsort VALUES&#40;'C','1','2'&#41;; INSERT INTO testsort VALUES&#40;'C','1','4'&#41;; &#160; SELECT * FROM testsort; &#160; SELECT *, IDENTITY&#40;INT,1,1&#41; AS id INTO #temp FROM testsort ORDER [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/03/sort-multiple-fields-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>深入讲解数据库中User和Schema的关系</title>
		<link>http://log.medcl.net/item/2010/02/depth-briefing-on-the-database-the-relationship-between-the-user-and-schema/</link>
		<comments>http://log.medcl.net/item/2010/02/depth-briefing-on-the-database-the-relationship-between-the-user-and-schema/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 04:57:47 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Schema]]></category>
		<category><![CDATA[User]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=200</guid>
		<description><![CDATA[ User和Schema比较容易混淆，搞不清他们之间是什么关系，转一篇文章。 假如我们想了解数据库中的User和Schema究竟是什么关系，首先必须了解一下数据库中User和Schema到底是什么概念。        在SQL Server2000中，由于架构的原因，User和Schema总有一层隐含的关系，让我们很少意识到其实User和Schema是两种完全不同的概念，不过在SQL Server2005中这种架构被打破了，User和Schema也被分开了。 首先我来做一个比喻，什么是Database，什么是Schema，什么是Table，什么是列，什么是行，什么是User？我们可以可以把Database看作是一个大仓库，仓库分了很多很多的房间，Schema就是其中的房间，一个Schema代表一个房间，Table可以看作是每个Schema中的床，Table（床）就被放入每个房间中，不能放置在房间之外，那岂不是晚上睡觉无家可归了J。，然后床上可以放置很多物品，就好比Table上可以放置很多列和行一样，数据库中存储数据的基本单元是Table，现实中每个仓库放置物品的基本单位就是床， User就是每个Schema的主人，（所以Schema包含的是Object，而不是User），其实User是对应与数据库的（即User是每个对应数据库的主人），既然有操作数据库（仓库）的权利，就肯定有操作数据库中每个Schema（房间）的权利，就是说每个数据库映射的User有每个Schema（房间）的钥匙，换句话说，如果他是某个仓库的主人，那么这个仓库的使用权和仓库中的所有东西都是他的（包括房间），他有完全的操作权，可以扔掉不用的东西从每个房间，也可以放置一些有用的东西到某一个房间，呵呵，和现实也太相似了吧。我还可以给User分配具体的权限，也就是他到某一个房间能做些什么，是只能看（Read-Only），还是可以像主人一样有所有的控制权（R/W），这个就要看这个User所对应的角色Role了，至于分配权限的问题，我留在以后单独的blog中详述。比喻到这里，相信大家都清楚了吧。 在SQL Server2000中，假如我们在某一个数据库中创建了用户Bosco，按么此时后台也为我们默认地创建了默认Schema 【Bosco】。Schema的名字和User的名字相同，这也是我们分不清楚用户和Schema的原因。 在SQL Server2005中，为了向后兼容，当你用sp_adduser 存储过程创建一个用户的时候，SQL Server2005同时也创建了一个和用户名相同的Schema，然而这个存储过程是为了向后兼容才保留的，我们应该逐渐熟悉用新的DDL语言Create User和Create Schema来操作数据库。在SQL Server2005中，当我们用Create User创建数据库用户时，我们可以为该用户指定一个已经存在的Schema作为默认Schema，如果我们不指定，则该用户所默认的Schema即为dbo Schema，dbo 房间（Schema）好比一个大的公共房间，在当前登录用户没有默认Schema的前提下，如果你在大仓库中进行一些操作，比如Create Tabe，如果没有指定特定的房间（Schema），那么你的物品就只好放进公共的dbo房间（Schema）了。但是如果当前登录用户有默认的Schema，那么所做的一切操作都是在默认Schema上进行（比如当前登录用户为login1，该用户的默认Schema为login1，那么所做的所有操作都是在这个login1默认Schema上进行的。实验已经证明的确如此）。估计此时你会有一点晕，为什么呢？我刚才说dbo是一个Schema，但是你可以在数据库中查看到，dbo同时也是一个user，晕了吧，呵呵。 在SQL Server2005中创建一个数据库的时候，会有一些Schema包括进去，被包括进去的Schema有：dbo，INFORMATION_SCHEMA, guest，sys等等（还有一些角色Schema，不提了，有晕了）。 我在上文中已经提到了，在SQL Server2005中当用存储过程sp_adduser创建一个user时，同时SQL Server2005也为我们创建了一个默认的和用户名相同的Schema，这个时候问题出来了，当我们create table A时，如果没有特定的Schema做前缀，这个A表创建在了哪个Schema上，即进入了哪个房间？答案是： 1.如果当前操作数据库的用户（可以用Select current_user查出来）有默认的Schema（在创建用户的时候指定了），那么表A被创建在了默认的Schema上。 2.如果当前操作数据库的用户没有默认的Schema（即在创建User的时候默认为空），但是有一个和用户名同名的Schema，那么表A照样被创建在了dbo Schema上，即使有一个和用户名同名的Schema存在，由于它不是该用户默认的Schema，所以创建表的时候是不会考虑的，当作一般的Schema来处理，别看名字相同，可是没有任何关系哦。 3.如果在创建表A的时候指定了特定的Schema做前缀，则表A被创建在了指定的 Schema上（有权限吗？） 现在问题又出来了，在当前操作数据库的用户（用select current_user可以查看到，再次强调）没有默认Schema的前提下，当我们用Create table A语句时，A表会去寻找dbo Schema，并试图创建在dbo Schema上，但是如果创建A表的用户只有对dbo Schema的只读权限，而没有写的权限呢？这个时候A表既不是建立不成功，这个就是我以后会提及到的Login,User, Role和Schema四者之间的关系。在这里，为了避免混淆和提高操作数据库的速度（在少量数据范围内，对我们肉眼来说几乎看不到差异），我们最好每次在操作数据库对象的时候都显式地指定特定的Schema最为前缀。 现在如果登录的用户为Sue，该用户有一个默认Schema也为Sue，那么如果现在有一条查询语句为Select * from mytable, 那么搜寻每个房间（Schema）的顺序是怎样的呢？顺序如下： 1. 首先搜寻sys.mytable （Sys Schema） 2. 然后搜寻Sue.mytable [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/02/depth-briefing-on-the-database-the-relationship-between-the-user-and-schema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL条件处理--Case语句</title>
		<link>http://log.medcl.net/item/2010/01/case-statement-in-the-sql-processing-conditions-used-in-the-data/</link>
		<comments>http://log.medcl.net/item/2010/01/case-statement-in-the-sql-processing-conditions-used-in-the-data/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 11:35:04 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=198</guid>
		<description><![CDATA[SQL中使用CASE处理条件      在使用SQL的过程中，有时候可能会要对数据进行条件查询。比如字段A为True时查询出“男”，否则查询出“女”。这样就可以不在程序中在去判断了。在SQL中，可以利用Case语句来完成这样的查询。 一、Case介绍 CASE 计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式： 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。 语法 简单 CASE 函数： CASE input_expression     WHEN when_expression THEN result_expression         [ ...n ]     [         ELSE else_result_expression     END CASE 搜索函数： CASE     WHEN Boolean_expression THEN result_expression         [ ...n ]     [         ELSE else_result_expression [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/01/case-statement-in-the-sql-processing-conditions-used-in-the-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SET PARSEONLY 与SET NOEXEC (Transact-SQL)</title>
		<link>http://log.medcl.net/item/2010/01/set-parseonly-with-the-set-noexec-transact-sql/</link>
		<comments>http://log.medcl.net/item/2010/01/set-parseonly-with-the-set-noexec-transact-sql/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 06:37:13 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SET]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=196</guid>
		<description><![CDATA[SET PARSEONLY 检查每个 Transact-SQL 语句的语法并返回任何错误消息，但不编译和执行语句。 SET PARSEONLY { ON &#124; OFF } 当 SET PARSEONLY 为 ON 时，SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时，SQL Server 编译并执行语句。 SET PARSEONLY 的设置是在分析时设置，而不是在执行或运行时设置。 在存储过程或触发器中不要使用 PARSEONLY。如果 OFFSETS 选项为 ON 而且没有出现错误，则 SET PARSEONLY 返回偏移量。 SET NOEXEC (Transact-SQL) 编译每个查询但不执行查询。 SET NOEXEC { ON &#124; OFF } 当 SET NOEXEC 为 ON [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/01/set-parseonly-with-the-set-noexec-transact-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>从数据库随机读取数据</title>
		<link>http://log.medcl.net/item/2010/01/random-read-data-from-the-database/</link>
		<comments>http://log.medcl.net/item/2010/01/random-read-data-from-the-database/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 06:11:43 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=194</guid>
		<description><![CDATA[示例代码： SQL Server：Select Top * From  表 Order By NewID()   Access  ：Select Top * From 表 Order By Rnd(ID)          *说明-Rnd(ID) 其中的ID是自动编号字段，可以利用其他任何数值来完成，比如用姓名字段(UserName)  Select Top 10 * From 表 Order BY Rnd(Len(UserName))   MySql：Select * From 表 Order By Rand() Limit 10 Tags: access, mysql, random, SQL, SQL Server]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/01/random-read-data-from-the-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>set nocount on 是什么意思？</title>
		<link>http://log.medcl.net/item/2010/01/set-nocount-on-what-does-it-mean/</link>
		<comments>http://log.medcl.net/item/2010/01/set-nocount-on-what-does-it-mean/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 06:04:33 +0000</pubDate>
		<dc:creator>medcl</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[set nocount]]></category>

		<guid isPermaLink="false">http://log.medcl.net/?p=193</guid>
		<description><![CDATA[我想請問一下: set nocount on 是什麼意思， 為什麼很多的stored procedures的第一行都有遮一句話??多謝!!! 每次我们在使用查询分析器调试SQL语句的时候，通常会看到一些信息，提醒我们当前有多少个行受到了影响，这是些什么信息？在我们调用的时候这些信息有用吗？是否可以关闭呢？ 答案是这些信息在我们的客户端的应用程序中是没有用的，这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 我们可以利用SET NOCOUNT 来控制这些信息，以达到提高程序性能的目的。 MSDN中帮助如下： SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 语法 SET NOCOUNT { ON &#124; OFF } 注释 当 SET NOCOUNT 为 ON 时，不返回计数（表示受 Transact-SQL 语句影响的行数）。当 SET NOCOUNT 为 OFF 时，返回计数。 即使当 SET NOCOUNT 为 ON 时，也更新 @@ROWCOUNT 函数。 当 SET NOCOUNT 为 ON 时，将不给客户端发送存储过程中的每个语句的 [...]]]></description>
		<wfw:commentRss>http://log.medcl.net/item/2010/01/set-nocount-on-what-does-it-mean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

