<?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>简单生活 -- Kevin Yang的博客 &#187; SQL</title>
	<atom:link href="http://www.imkevinyang.com/tags/sql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.imkevinyang.com</link>
	<description>It&#039;s all about sharing</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:37:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Sql Tips——Update语句也使用表别名(Table Alias)</title>
		<link>http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html</link>
		<comments>http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:11:21 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[BI/数据库]]></category>
		<category><![CDATA[其他随笔]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[表别名]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html</guid>
		<description><![CDATA[<p>在编写Sql脚本时通过表别名可以大大缩减Sql代码，同时表别名也是解决同表多次引用的手段之一。在select中使用表别名大家应该都很熟悉了：</p>
<pre class="brush: sql">select * from TableA as A inner join TableB as B on A.Key1 = B.Key1</pre>
<p>但是在Update中使用表别名可能就没那么多人知道了。&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>在编写Sql脚本时通过表别名可以大大缩减Sql代码，同时表别名也是解决同表多次引用的手段之一。在select中使用表别名大家应该都很熟悉了：</p>
<pre class="brush: sql">select * from TableA as A inner join TableB as B on A.Key1 = B.Key1</pre>
<p>但是在Update中使用表别名可能就没那么多人知道了。</p>
<pre class="brush: sql">update T
set T.Key1 = 'xxxx'
from TableA T</pre>
<p>这些天在写Sql Update脚本的时候需要引用两次同个表对象，如果直接像下面这样引用两次TableA则会抛出“The multi-part identifier ‘TableA.Index’ could not be bound”的错误。这是因为Sql引擎无法知道你在where子句中的TableA到底指的是要Update的表还是from后面的表。</p>
<pre class="brush: sql">update TableA
set TableA.NextKey = T.Key
from TableA T
where T.Index = TableA.Index + 1</pre>
<p>如果不对Update后面的TableA使用别名的话，我们只能通过以下方法来实现。</p>
<pre class="brush: sql">update TableA
set TableA.NextKey = T.Key
from
(
  select * from TableA
)T
where T.Index = TableA.Index + 1</pre>
<p>使用别名可以得到更简洁的写法:</p>
<pre class="brush: sql">update T1
set T1.NextKey = T2.Key
from TableA T1, TableA T2
whereT2.Index = T1.Index + 1</pre>
<p style="text-align: right;">——<a title="Sql Tips——Update语句也使用表别名(Table Alias)" href="http://www.imkevinyang.com/2010/07/sql-tipsupdate%E8%AF%AD%E5%8F%A5%E4%B9%9F%E4%BD%BF%E7%94%A8%E8%A1%A8%E5%88%AB%E5%90%8Dtable-alias.html" target="_self"><em>Kevin Yang</em></a></p>

	标签：<a href="http://www.imkevinyang.com/categories/techarticles/businessintelligence" title="BI/数据库" rel="tag">BI/数据库</a>, <a href="http://www.imkevinyang.com/tags/sql" title="SQL" rel="tag">SQL</a>, <a href="http://www.imkevinyang.com/tags/tips" title="Tips" rel="tag">Tips</a>, <a href="http://www.imkevinyang.com/tags/update" title="Update" rel="tag">Update</a>, <a href="http://www.imkevinyang.com/categories/techarticles/othertecharticles" title="其他随笔" rel="tag">其他随笔</a>, <a href="http://www.imkevinyang.com/tags/%e6%95%b0%e6%8d%ae%e5%ba%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.imkevinyang.com/tags/%e8%a1%a8%e5%88%ab%e5%90%8d" title="表别名" rel="tag">表别名</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/09/blend%e5%b0%8f%e8%b4%b4%e5%a3%ab%e6%94%b9%e5%8f%98%e9%bc%a0%e6%a0%87%e6%bb%9a%e8%bd%ae%e7%9a%84%e9%bb%98%e8%ae%a4%e8%a1%8c%e4%b8%ba-2.html" title="Blend小贴士&mdash;&mdash;改变鼠标滚轮的默认行为 (2009/09/18)">Blend小贴士&mdash;&mdash;改变鼠标滚轮的默认行为</a> </li>
	<li><a href="http://www.imkevinyang.com/2011/06/onenote-tips-%e6%b7%b7%e5%90%88%e4%bd%bf%e7%94%a8%e4%b8%ad%e8%8b%b1%e6%96%87%e5%ad%97%e4%bd%93.html" title="OneNote Tips — 混合使用中英文字体 (2011/06/16)">OneNote Tips — 混合使用中英文字体</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html" title="Sql Server中修改自增长列经常需要用到的配置 (2009/05/24)">Sql Server中修改自增长列经常需要用到的配置</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/08/sql-server%e9%87%8d%e5%91%bd%e5%90%8d%e6%89%80%e6%9c%89%e5%a4%96%e9%94%ae%e7%ba%a6%e6%9d%9f.html" title="Sql Server重命名所有外键约束 (2010/08/02)">Sql Server重命名所有外键约束</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html" title="SSIS调用存储过程失败 (2010/05/23)">SSIS调用存储过程失败</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/09/visual-studio%e5%b0%8f%e8%b4%b4%e5%a3%ab%e5%8a%a0%e4%ba%86try-catch%e4%b9%9f%e8%83%bd%e8%87%aa%e5%8a%a8%e5%ae%9a%e4%bd%8d%e5%88%b0%e5%bc%82%e5%b8%b8%e4%bb%a3%e7%a0%81.html" title="Visual Studio小贴士&mdash;&mdash;加了Try-Catch也能自动定位到异常代码 (2009/09/18)">Visual Studio小贴士&mdash;&mdash;加了Try-Catch也能自动定位到异常代码</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html" title="释放SQL Server占用的内存 (2009/09/01)">释放SQL Server占用的内存</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SSIS调用存储过程失败</title>
		<link>http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html</link>
		<comments>http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html#comments</comments>
		<pubDate>Sun, 23 May 2010 07:02:47 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[疑难杂症]]></category>
		<category><![CDATA[charindex]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[substring]]></category>
		<category><![CDATA[存储过程]]></category>
		<category><![CDATA[校验失败]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html</guid>
		<description><![CDATA[<p>最近更新了一个Sql存储过程的实现，结果导致做ETL的SSIS（Sql Server Integration Services）包出现了问题。在调试状态下发现，SSIS在启动时对包做校验的过程中抛出了异常，显示我修改后的这个存储过程有问题。</p>
<p> </p>
<blockquote><p>Invalid length parameter passed to the&#8230;</p></blockquote>]]></description>
			<content:encoded><![CDATA[<p>最近更新了一个Sql存储过程的实现，结果导致做ETL的SSIS（Sql Server Integration Services）包出现了问题。在调试状态下发现，SSIS在启动时对包做校验的过程中抛出了异常，显示我修改后的这个存储过程有问题。</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2010/05/image10.png" width="558" height="66" /> </p>
<blockquote><p>Invalid length parameter passed to the substring or left function.</p>
</blockquote>
<p>奇怪的是，这还不是调用的时候抛出了异常，而是在校验阶段（Validation Stage）就抛出了异常。我感到纳闷，难道SSIS或者Sql Server还能对我的存储过程作单元测试？？</p>
<p>用这句错误信息上Google搜了一下，发现问题是出在CharIndex函数和Substring函数的联合调用上。为了简化，我下面只摘取了一段出问题的代码：</p>
<pre class="brush: sql">declare @index int
set @index = charindex('/',@url,1)
set @url = substring(@url,1,@index - 1)</pre>
</p>
<p>以前的VBA函数还有Sql函数都喜欢使用1作为数组起始索引，用0表示返回失败，而不像现在C风格下使用0作为起始索引，-1作为失败返回值。charindex这个sql函数是用来查找某个字符串在特定字符串中的位置，如果找不着匹配的，则返回0。而下一行代码中的substring又传入了一个@index-1的参数，因此此参数有可能为负数。猜测就是因为这样，所以SSIS检测失败，抛出异常。之所以当时这么写，是因为基于一个假设，就是业务系统中，此字段都会包含/字符。但是人家SSIS组件可不认你的假设。（再一次证明了，编程的时候假设越少越好）</p>
<p>既然如此，我们就多加一层检测。修改代码如下：</p>
<pre class="brush: sql">declare @index int
set @index = charindex('/',@url,1)
if(@index &gt; 0)
  set @url = substring(@url,1,@index - 1)</pre>
<p>启动SSIS包，结果还是抛出一样的错误。这就奇怪了。难道做了检测还不行？难道substring的第三个参数非得是大于0的？试了一下，改成if(@index &gt; 1000)都不行。</p>
<p>想了半天，最终我只能怀疑，SSIS的这个校验组件，是通过判断变量什么时候被赋值来获得值的可能范围是多少，而不会判断上下文是否有对变量做有效性检测。也就是说，在上面这个存储过程中，@index变量只在charindex函数返回时被赋值，值范围是0~正无穷。因此传给substring的第三个参数的时候，@index – 1的值范围就变成了-1~正无穷了。它直接无视我上面的if语句了。</p>
<p>把这个猜想和同事讨论了一下，他设计了一个验证方案，就是添加一行永远不会被执行的的赋值语句。代码如下：</p>
<pre class="brush: sql">declare @index int
set @index = charindex('/',@url,1)
if(@index &gt; 0)
begin
  if(1=0) set @index = 1000
  set @url = substring(@url,1,@index - 1)
end</pre>
<p>注意上面代码中将@index赋值为1000的操作，是不会被执行的。可是却通过了SSIS的校验。这说明，SSIS的校验组件做的工作实际上是非常简单的校验而已，不会参考上下文代码。</p>
<p>既然如此，这个校验对于开发人员来说，不但没有意义，而且还会影响我们编写逻辑正确的代码。因为这个校验是不能被关闭的。也就是说，为了绕过这个没意义而且错误的校验，我不得不在charindex和substring这种联合调用的代码中加入一行永远不会被执行的赋值语句来迷惑SSIS的校验组件。否则SSIS的包根本启动不了。</p>
<p>感觉这应该是一个设计上的Bug。</p>
<p>希望对遇到这个问题的人有所帮助。</p>
<p style="text-align: right">——<a title="SSIS调用存储过程失败" href="http://www.imkevinyang.com/2010/05/SSIS%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/charindex" title="charindex" rel="tag">charindex</a>, <a href="http://www.imkevinyang.com/tags/sql" title="SQL" rel="tag">SQL</a>, <a href="http://www.imkevinyang.com/tags/sql-server" title="SQL Server" rel="tag">SQL Server</a>, <a href="http://www.imkevinyang.com/tags/ssis" title="SSIS" rel="tag">SSIS</a>, <a href="http://www.imkevinyang.com/tags/substring" title="substring" rel="tag">substring</a>, <a href="http://www.imkevinyang.com/tags/%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b" title="存储过程" rel="tag">存储过程</a>, <a href="http://www.imkevinyang.com/tags/%e6%a0%a1%e9%aa%8c%e5%a4%b1%e8%b4%a5" title="校验失败" rel="tag">校验失败</a>, <a href="http://www.imkevinyang.com/categories/techarticles/knottyproblems" title="疑难杂症" rel="tag">疑难杂症</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html" title="Sql Server中修改自增长列经常需要用到的配置 (2009/05/24)">Sql Server中修改自增长列经常需要用到的配置</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/08/sql-server%e9%87%8d%e5%91%bd%e5%90%8d%e6%89%80%e6%9c%89%e5%a4%96%e9%94%ae%e7%ba%a6%e6%9d%9f.html" title="Sql Server重命名所有外键约束 (2010/08/02)">Sql Server重命名所有外键约束</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html" title="Sql Tips——Update语句也使用表别名(Table Alias) (2010/07/02)">Sql Tips——Update语句也使用表别名(Table Alias)</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e5%85%a8%e5%8d%8a%e8%a7%92%e7%a9%ba%e6%a0%bc%e5%af%bc%e8%87%b4%e7%9a%84analysis-service%e5%a4%84%e7%90%86%e9%94%99%e8%af%af.html" title="全半角空格导致的Analysis Services处理错误 (2009/10/09)">全半角空格导致的Analysis Services处理错误</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html" title="释放SQL Server占用的内存 (2009/09/01)">释放SQL Server占用的内存</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>释放SQL Server占用的内存</title>
		<link>http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html</link>
		<comments>http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html#comments</comments>
		<pubDate>Tue, 01 Sep 2009 06:25:06 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[技术随笔]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[内存]]></category>
		<category><![CDATA[内存释放]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html</guid>
		<description><![CDATA[<p>由于Sql Server对于系统内存的管理策略是有多少占多少，除非系统内存不够用了（大约到剩余内存为4M左右），Sql Server才会释放一点点内存。所以很多时候，我们会发现运行Sql Server的系统内存往往居高不下。</p>
<p>这些内存一般都是Sql Server运行时候用作缓存的，例如你运行一个select语&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>由于Sql Server对于系统内存的管理策略是有多少占多少，除非系统内存不够用了（大约到剩余内存为4M左右），Sql Server才会释放一点点内存。所以很多时候，我们会发现运行Sql Server的系统内存往往居高不下。</p>
<p>这些内存一般都是Sql Server运行时候用作缓存的，例如你运行一个select语句，那么Sql Server会将相关的数据页（Sql Server操作的数据都是以页为单位的）加载到内存中来，下一次如果再次请求此页的数据的时候，就无需读取磁盘了，大大提高了速度。这类的缓存叫做数据缓存。还有一些其他类型的缓存，如执行存储过程时，Sql Server需要先编译再运行，编译后的结果也会缓存起来，下一次就无需再次编译了。如果这些缓存已经不需要了，那么我们可以调用以下几个DBCC管理命令来清理这些缓存：</p>
<pre class="csharpcode"><span class="kwrd">DBCC</span> FREEPROCCACHE
<span class="kwrd">DBCC</span> FREESESSIONCACHE
<span class="kwrd">DBCC</span> FREESYSTEMCACHE(<span class="str">'All'</span>)
<span class="kwrd">DBCC</span> DROPCLEANBUFFERS</pre>
<p>这几个命令分别用来清除存储过程相关的缓存、会话缓存、系统缓存以及所有所有缓存。详细的使用参考MSDN。</p>
<p>但是需要注意的是，这几个命令虽然会清除掉现有缓存，为新的缓存腾地方，但是Sql server并不会因此释放掉已经占用的内存。无奈的是，<strong><span style="color: #008000;">Sql Server并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整Sql Server可用的物理内存设置来强迫它释放内存。</span></strong></p>
<pre class="csharpcode"><span class="kwrd">USE</span> master
<span class="rem">-- 打开高级设置配置</span>
<span class="kwrd">EXEC</span> sp_configure <span class="str">'show advanced options'</span>, 1
<span class="kwrd">RECONFIGURE</span> <span class="kwrd">WITH</span> OVERRIDE
<span class="rem">-- 先设置物理内存上限到1G</span>
<span class="kwrd">EXEC</span> sp_configure <span class="str">'max server memory (MB)'</span>, 1024
<span class="kwrd">RECONFIGURE</span> <span class="kwrd">WITH</span> OVERRIDE
<span class="rem">-- 还原原先的上限</span>
<span class="kwrd">EXEC</span> sp_configure <span class="str">'max server memory (MB)'</span>, 5120
<span class="kwrd">RECONFIGURE</span> <span class="kwrd">WITH</span> OVERRIDE
<span class="rem">-- 恢复默认配置</span>
<span class="kwrd">EXEC</span> sp_configure <span class="str">'show advanced options'</span>, 0
<span class="kwrd">RECONFIGURE</span> <span class="kwrd">WITH</span> OVERRIDE</pre>
<p>我们也可以通过Sql Server Management企业管理器进行动态控制。连接到企业管理器之后打开Sql Server实例的属性面板，找到内存设置，改变其中的最大服务器内存使用即可。</p>
<p style="text-align: right;">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/sql" title="SQL" rel="tag">SQL</a>, <a href="http://www.imkevinyang.com/tags/sql-server" title="SQL Server" rel="tag">SQL Server</a>, <a href="http://www.imkevinyang.com/tags/%e5%86%85%e5%ad%98" title="内存" rel="tag">内存</a>, <a href="http://www.imkevinyang.com/tags/%e5%86%85%e5%ad%98%e9%87%8a%e6%94%be" title="内存释放" rel="tag">内存释放</a>, <a href="http://www.imkevinyang.com/categories/techarticles" title="技术随笔" rel="tag">技术随笔</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/11/dotnet%e4%b8%ad%e6%9c%aa%e9%80%80%e8%ae%a2%e4%ba%8b%e4%bb%b6%e5%bc%95%e8%b5%b7%e7%9a%84%e5%86%85%e5%ad%98%e6%b3%84%e9%9c%b2%e9%97%ae%e9%a2%98.html" title="DotNet中未退订事件引起的内存泄露问题 (2009/11/12)">DotNet中未退订事件引起的内存泄露问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html" title="Sql Server中修改自增长列经常需要用到的配置 (2009/05/24)">Sql Server中修改自增长列经常需要用到的配置</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/08/sql-server%e9%87%8d%e5%91%bd%e5%90%8d%e6%89%80%e6%9c%89%e5%a4%96%e9%94%ae%e7%ba%a6%e6%9d%9f.html" title="Sql Server重命名所有外键约束 (2010/08/02)">Sql Server重命名所有外键约束</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html" title="Sql Tips——Update语句也使用表别名(Table Alias) (2010/07/02)">Sql Tips——Update语句也使用表别名(Table Alias)</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html" title="SSIS调用存储过程失败 (2010/05/23)">SSIS调用存储过程失败</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e5%85%a8%e5%8d%8a%e8%a7%92%e7%a9%ba%e6%a0%bc%e5%af%bc%e8%87%b4%e7%9a%84analysis-service%e5%a4%84%e7%90%86%e9%94%99%e8%af%af.html" title="全半角空格导致的Analysis Services处理错误 (2009/10/09)">全半角空格导致的Analysis Services处理错误</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sql Server中修改自增长列经常需要用到的配置</title>
		<link>http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html</link>
		<comments>http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html#comments</comments>
		<pubDate>Sun, 24 May 2009 13:28:04 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[技术随笔]]></category>
		<category><![CDATA[DBCC]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[常用SQL]]></category>
		<category><![CDATA[自增长主键]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html</guid>
		<description><![CDATA[<p>手动设置当前的自增长种子</p>
<pre class="csharpcode"><span class="kwrd">DBCC</span> CHECKIDENT(<span class="str">'表名'</span>, RESEED, 0) ;</pre>
<p>后面的0表示当前的种子为0，新插入的自增长ID从1开始</p>
<p>插入或者更新自增长列时，需要将下面的选项打开：</p>
<pre class="csharpcode"><span class="kwrd">set</span> <span class="kwrd">identity_insert</span> mytable on</pre>
<p>当我们需要从一个自增长表导数据到另外一个数据库中的同个表时，需&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>手动设置当前的自增长种子</p>
<pre class="csharpcode"><span class="kwrd">DBCC</span> CHECKIDENT(<span class="str">'表名'</span>, RESEED, 0) ;</pre>
<p>后面的0表示当前的种子为0，新插入的自增长ID从1开始</p>
<p>插入或者更新自增长列时，需要将下面的选项打开：</p>
<pre class="csharpcode"><span class="kwrd">set</span> <span class="kwrd">identity_insert</span> mytable on</pre>
<p>当我们需要从一个自增长表导数据到另外一个数据库中的同个表时，需要设置这个选项。</p>

	标签：<a href="http://www.imkevinyang.com/tags/dbcc" title="DBCC" rel="tag">DBCC</a>, <a href="http://www.imkevinyang.com/tags/sql" title="SQL" rel="tag">SQL</a>, <a href="http://www.imkevinyang.com/tags/sql-server" title="SQL Server" rel="tag">SQL Server</a>, <a href="http://www.imkevinyang.com/tags/%e5%b8%b8%e7%94%a8sql" title="常用SQL" rel="tag">常用SQL</a>, <a href="http://www.imkevinyang.com/categories/techarticles" title="技术随笔" rel="tag">技术随笔</a>, <a href="http://www.imkevinyang.com/tags/%e8%87%aa%e5%a2%9e%e9%95%bf%e4%b8%bb%e9%94%ae" title="自增长主键" rel="tag">自增长主键</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2010/08/sql-server%e9%87%8d%e5%91%bd%e5%90%8d%e6%89%80%e6%9c%89%e5%a4%96%e9%94%ae%e7%ba%a6%e6%9d%9f.html" title="Sql Server重命名所有外键约束 (2010/08/02)">Sql Server重命名所有外键约束</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/07/sql-tipsupdate%e8%af%ad%e5%8f%a5%e4%b9%9f%e4%bd%bf%e7%94%a8%e8%a1%a8%e5%88%ab%e5%90%8dtable-alias.html" title="Sql Tips——Update语句也使用表别名(Table Alias) (2010/07/02)">Sql Tips——Update语句也使用表别名(Table Alias)</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/05/ssis%e8%b0%83%e7%94%a8%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b%e5%a4%b1%e8%b4%a5.html" title="SSIS调用存储过程失败 (2010/05/23)">SSIS调用存储过程失败</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e5%85%a8%e5%8d%8a%e8%a7%92%e7%a9%ba%e6%a0%bc%e5%af%bc%e8%87%b4%e7%9a%84analysis-service%e5%a4%84%e7%90%86%e9%94%99%e8%af%af.html" title="全半角空格导致的Analysis Services处理错误 (2009/10/09)">全半角空格导致的Analysis Services处理错误</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/09/%e9%87%8a%e6%94%besql-server%e5%8d%a0%e7%94%a8%e7%9a%84%e5%86%85%e5%ad%98.html" title="释放SQL Server占用的内存 (2009/09/01)">释放SQL Server占用的内存</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/05/sql-server%e4%b8%ad%e4%bf%ae%e6%94%b9%e8%87%aa%e5%a2%9e%e9%95%bf%e5%88%97%e7%bb%8f%e5%b8%b8%e9%9c%80%e8%a6%81%e7%94%a8%e5%88%b0%e7%9a%84%e9%85%8d%e7%bd%ae.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.imkevinyang.com @ 2012-02-08 00:22:57 -->
