﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-bob-文章分类-sql server</title><link>http://www.blogjava.net/keweibo/category/41658.html</link><description>一专  Java 多能  C#,Delphi,Powerbuilder ... 
&lt;br&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-1944176156128447";
/* 468x15, 创建于 09-2-25 */
google_ad_slot = "5582725142";
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 18 Jul 2014 05:49:21 GMT</lastBuildDate><pubDate>Fri, 18 Jul 2014 05:49:21 GMT</pubDate><ttl>60</ttl><item><title>SQL Server 2005中的CTE递归查询得到一棵树 (转)</title><link>http://www.blogjava.net/keweibo/articles/415936.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 17 Jul 2014 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/415936.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/415936.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/415936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/415936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/415936.html</trackback:ping><description><![CDATA[原文:<a href="http://blog.csdn.net/bin_520_yan/article/details/5998349">http://blog.csdn.net/bin_520_yan/article/details/5998349</a><br /><br />
<p style="text-align: left">感觉这个CTE递归查询蛮好用的，先举个例子：</p>
<p style="text-align: left">&nbsp;</p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 499px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_1" height="12" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=1&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>use&nbsp;City;&nbsp;&nbsp;</span></li><li><span>go&nbsp;&nbsp;</span></li><li class="alt"><span>create&nbsp;table&nbsp;Tree&nbsp;&nbsp;</span></li><li><span>(&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;ID&nbsp;<span class="keyword">int</span><span>&nbsp;identity(1,1)&nbsp;primary&nbsp;key&nbsp;not&nbsp;</span><span class="keyword">null</span><span>,&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;Name&nbsp;varchar(20)&nbsp;not&nbsp;<span class="keyword">null</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;Parent&nbsp;varchar(20)&nbsp;<span class="keyword">null</span><span>&nbsp;&nbsp;</span></span></li><li><span>)&nbsp;&nbsp;</span></li><li class="alt"><span>go&nbsp;&nbsp;</span></li><li><span>insert&nbsp;Tree&nbsp;values(<span class="string">'大学'</span><span>,</span><span class="keyword">null</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>insert&nbsp;Tree&nbsp;values(<span class="string">'学院'</span><span>,</span><span class="string">'大学'</span><span>)&nbsp;&nbsp;</span></span></li><li><span>insert&nbsp;Tree&nbsp;values(<span class="string">'计算机学院'</span><span>,</span><span class="string">'学院'</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>insert&nbsp;Tree&nbsp;values(<span class="string">'网络工程'</span><span>,</span><span class="string">'计算机学院'</span><span>)&nbsp;&nbsp;</span></span></li><li><span>insert&nbsp;Tree&nbsp;values(<span class="string">'信息管理'</span><span>,</span><span class="string">'计算机学院'</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>insert&nbsp;Tree&nbsp;values(<span class="string">'电信学院'</span><span>,</span><span class="string">'学院'</span><span>)&nbsp;&nbsp;</span></span></li><li><span>insert&nbsp;Tree&nbsp;values(<span class="string">'教务处'</span><span>,</span><span class="string">'大学'</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>insert&nbsp;Tree&nbsp;values(<span class="string">'材料科'</span><span>,</span><span class="string">'教务处'</span><span>)&nbsp;&nbsp;</span></span></li><li><span>insert&nbsp;Tree&nbsp;values(<span class="string">'招生办'</span><span>,</span><span class="string">'大学'</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>go&nbsp;&nbsp;</span></li><li><span>with&nbsp;CTE&nbsp;<span class="keyword">as</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>(&nbsp;&nbsp;</span></li><li><span>--&gt;Begin&nbsp;一个定位点成员&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;select&nbsp;ID,&nbsp;Name,Parent,cast(Name&nbsp;<span class="keyword">as</span><span>&nbsp;nvarchar(max))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,0&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;from&nbsp;Tree&nbsp;where&nbsp;Parent&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="keyword">null</span><span>&nbsp;&nbsp;</span></span></li><li><span>--&gt;End&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>union&nbsp;all&nbsp;&nbsp;</span></li><li><span>--&gt;Begin一个递归成员&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;select&nbsp;Tree.ID,&nbsp;Tree.Name,Tree.Parent,cast(replicate(<span class="string">'&nbsp;'</span><span>,len(CTE.TE))+</span><span class="string">'|_'</span><span>+Tree.name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(MAX))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,Levle+1&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;Tree&nbsp;inner&nbsp;join&nbsp;CTE&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;Tree.Parent=CTE.Name&nbsp;&nbsp;</span></li><li><span>--&gt;End&nbsp;&nbsp;</span></li><li class="alt"><span>)&nbsp;&nbsp;</span></li><li><span>select&nbsp;*&nbsp;from&nbsp;CTE&nbsp;order&nbsp;by&nbsp;ID&nbsp;&nbsp;</span></li><li class="alt"><span>--1.将&nbsp;CTE&nbsp;表达式拆分为定位点成员和递归成员。&nbsp;&nbsp;</span></li><li><span>--2.运行定位点成员，创建第一个调用或基准结果集&nbsp;(T0)。&nbsp;&nbsp;</span></li><li class="alt"><span>--3.运行递归成员，将&nbsp;Ti&nbsp;作为输入(这里只有一条记录)，将&nbsp;Ti+1&nbsp;作为输出。&nbsp;&nbsp;</span></li><li><span>--4.重复步骤&nbsp;3，直到返回空集。&nbsp;&nbsp;</span></li><li class="alt"><span>--5.返回结果集。这是对&nbsp;T0&nbsp;到&nbsp;Tn&nbsp;执行&nbsp;UNION&nbsp;ALL&nbsp;的结果。&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">上面的SQL语句再次插入一条数据：</p>
<p style="text-align: left">insert Tree values('网络1班','网络工程')</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;&nbsp; 运行结果如下图：</p>
<p style="text-align: center"><img alt="" src="http://hi.csdn.net/attachment/201011/10/0_1289396897R7x7.gif" /></p>
<p style="text-align: center">图1 运行结果</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp; &nbsp;注意点：貌似在递归成员处所选择的字段都必须Tree表的数据，而不能是CTE结果集中的除了Tree中没有而CTE中有的字段在这里才可以引用，比如字段TE。</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;&nbsp;首先看下，遍历的第1条记录的SQL语句：</p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 1718px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_2" height="12" name="ZeroClipboardMovie_2" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=2&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>select&nbsp;ID,&nbsp;Name,Parent,cast(Name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(max))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,0&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;from&nbsp;Tree&nbsp;where&nbsp;Parent&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="keyword">null</span><span>&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;获取的结果为：</p>
<p style="text-align: left">&nbsp;&nbsp; Name&nbsp; Parent&nbsp;&nbsp; TE&nbsp;&nbsp;&nbsp; Levle</p>
<p style="text-align: left">-------------------------------------</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;&nbsp; 大学&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp; 大学&nbsp;&nbsp;&nbsp;&nbsp; 0</p>
<p style="text-align: left">&nbsp;&nbsp; 递归第2次所获取的结果集合的类SQL语句为：</p>
<p style="text-align: left"></p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 1999px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_3" height="12" name="ZeroClipboardMovie_3" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=3&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>select&nbsp;Tree.ID,&nbsp;Tree.Name,Tree.Parent,cast(replicate(</span><span class="string">'&nbsp;'</span><span>,len(CTE.TE))+</span><span class="string">'|_'</span><span>+Tree.name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(MAX))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,Levle+1&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;&nbsp;</span></li><li><span>from&nbsp;Tree&nbsp;inner&nbsp;join&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;(select&nbsp;ID,&nbsp;Name,Parent,cast(Name&nbsp;<span class="keyword">as</span><span>&nbsp;nvarchar(max))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,0&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;from&nbsp;Tree&nbsp;where&nbsp;Parent&nbsp;</span><span class="keyword">is</span><span>&nbsp;</span><span class="keyword">null</span><span>)&nbsp;&nbsp;</span></span></li><li><span class="keyword">as</span><span>&nbsp;CTE&nbsp;&nbsp;</span></li><li class="alt"><span>on&nbsp;Tree.Parent=CTE.Name&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">&nbsp;&nbsp; 上面的CTE子查询的结果就是第一次递归查询的结果集，上面SQL运行结果为：</p>
<p style="text-align: left"><img alt="" src="http://hi.csdn.net/attachment/201011/10/0_1289397808S2H0.gif" /></p>
<p style="text-align: left">&nbsp;&nbsp; 同样的，将第二次递归查询的上面三条记录作为第三次查询的&#8216;定位成员&#8217;：</p>
<p style="text-align: left">&nbsp; 【这里要注意，上面的三条记录是从最后一条开始依次作为第三次递归的输入的，即第一条是ID=9的记录，接下来是7和2，关于第四次递归也类似】</p>
<p style="text-align: left">&nbsp;&nbsp; 第三次递归类SQL语句</p>
<p style="text-align: left"></p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 2429px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_4" height="12" name="ZeroClipboardMovie_4" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=4&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>select&nbsp;Tree.ID,&nbsp;Tree.Name,Tree.Parent,cast(replicate(</span><span class="string">'&nbsp;'</span><span>,len(CTE.TE))+</span><span class="string">'|_'</span><span>+Tree.name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(MAX))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,Levle+1&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;&nbsp;</span></li><li><span>from&nbsp;Tree&nbsp;inner&nbsp;join&nbsp;&nbsp;</span></li><li class="alt"><span>(第二次递归查询的SQL语句)<span class="keyword">as</span><span>&nbsp;CTE&nbsp;&nbsp;</span></span></li><li><span>on&nbsp;Tree.Parent=CTE.Name&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">&nbsp;&nbsp; 结果如下：</p>
<p style="text-align: left"><img alt="" src="http://hi.csdn.net/attachment/201011/10/0_1289398104CkJ5.gif" /></p>
<p style="text-align: left">其实每次递归的类SQL可为如下所示：</p>
<p style="text-align: left"></p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 2734px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_5" height="12" name="ZeroClipboardMovie_5" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=5&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>select&nbsp;Tree.ID,&nbsp;Tree.Name,Tree.Parent,cast(replicate(</span><span class="string">'&nbsp;'</span><span>,len(CTE.TE))+</span><span class="string">'|_'</span><span>+Tree.name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(MAX))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,Levle+1&nbsp;</span><span class="keyword">as</span><span>&nbsp;Levle&nbsp;&nbsp;</span></li><li><span>from&nbsp;Tree&nbsp;inner&nbsp;join&nbsp;&nbsp;</span></li><li class="alt"><span>(上次递归查询的结果集，仅仅是上次那一次的，而不是以前的总和结果集)&nbsp;&nbsp;</span></li><li><span class="keyword">as</span><span>&nbsp;CTE&nbsp;&nbsp;</span></li><li class="alt"><span>on&nbsp;Tree.Parent=CTE.Name&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">&nbsp;第四次递归一次类推，最后所查询的结果为上面所有递归的union。</p>
<p style="text-align: left">&nbsp;续：在上面的SQ语句查询结果中，ID为10的记录应该要放在ID为4的后面。</p>
<p style="text-align: left">&nbsp;往数据表中再次添加两条记录：</p>
<p style="text-align: left">insert Tree values('计科','计算机学院') <br />insert Tree values('我','网络1班')&nbsp;</p>
<p style="text-align: left">再次修改上面的SQL语句：</p>
<p style="text-align: left"></p>
<div class="dp-highlighter bg_c-sharp">
<div class="bar">
<div class="tools"><strong>[c-sharp]</strong> <a class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://blog.csdn.net/bin_520_yan/article/details/5998349#"><u><font color="#0000ff">?</font></u></a> 
<div style="z-index: 99; position: absolute; width: 23px; height: 12px; top: 3113px; left: 447px"><u><font color="#0000ff"><embed id="ZeroClipboardMovie_6" height="12" name="ZeroClipboardMovie_6" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" width="23" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="false" flashvars="id=6&amp;width=23&amp;height=12" wmode="transparent"></font></u></div></div></div>
<ol class="dp-c"><li class="alt"><span>with&nbsp;CTE&nbsp;</span><span class="keyword">as</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>--&gt;Begin&nbsp;一个定位点成员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;select&nbsp;ID,&nbsp;Name,Parent,cast(Name&nbsp;<span class="keyword">as</span><span>&nbsp;nvarchar(max))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROW_NUMBER()over(order&nbsp;by&nbsp;getdate())&nbsp;<span class="keyword">as</span><span>&nbsp;OrderID&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--最关键是上面这个字段，要获取排序字段，按字符串来排序。&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--其中窗口函数必须要使用order&nbsp;by，但是不能用整型，那就用时间吧&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;Tree&nbsp;where&nbsp;Parent&nbsp;<span class="keyword">is</span><span>&nbsp;</span><span class="keyword">null</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>--&gt;End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>union&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>--&gt;Begin一个递归成员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;select&nbsp;Tree.ID,&nbsp;Tree.Name,Tree.Parent,cast(replicate(<span class="string">'&nbsp;'</span><span>,len(CTE.TE))+</span><span class="string">'|_'</span><span>+Tree.name&nbsp;</span><span class="keyword">as</span><span>&nbsp;nvarchar(MAX))&nbsp;</span><span class="keyword">as</span><span>&nbsp;TE,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CTE.OrderID*100+ROW_NUMBER()over(Order&nbsp;by&nbsp;GETDATE())&nbsp;<span class="keyword">as</span><span>&nbsp;OrderID&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;Tree&nbsp;inner&nbsp;join&nbsp;CTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;Tree.Parent=CTE.Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>--&gt;End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>select&nbsp;*&nbsp;from&nbsp;CTE&nbsp;&nbsp;</span></li><li class="alt"><span>order&nbsp;by&nbsp;LTRIM(OrderID)--最后将这个整型数据转换为字符串型的进行排序&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>--有时候整型可以比大小，字符串也可以，字符串比的大小是一位一位进行字符比较的&nbsp;&nbsp;</span></li><li><span>--整型+字符串==整型，只有字符串+字符串==两个字符串的并和&nbsp;&nbsp;</span></li><li class="alt"><span>--递归查询中：第二条记录可以引用第一条记录的值&nbsp;&nbsp;</span></li><li><span>--动态加载记录时，同一个等级的记录识别符：RowNumber()over(order&nbsp;by&nbsp;getdate())&nbsp;&nbsp;</span></li><li class="alt"><span>--延伸：可以动态获取某个部门下的所以子部门。也可以获取该部门上级的所以部门&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>--总结：首先要拼凑出一个整型数据，然后转换为字符串，最后是进行字符串的order，而不是整型数据的order，&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<p style="text-align: left">最后的结果为：</p>
<p style="text-align: center"><img alt="" src="http://hi.csdn.net/attachment/201011/20/0_1290225874b9H7.gif" /></p>
<p style="text-align: center">图2 运行结果</p>
<p style="text-align: left">这样，无论用户插入多少条记录都可以进行按部门，按规律进行查询。</p><img src ="http://www.blogjava.net/keweibo/aggbug/415936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2014-07-17 14:46 <a href="http://www.blogjava.net/keweibo/articles/415936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server 2000 Split 自定义函数</title><link>http://www.blogjava.net/keweibo/articles/406147.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 08 Nov 2013 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/406147.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/406147.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/406147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/406147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/406147.html</trackback:ping><description><![CDATA[<div>/****** Object: Function [dbo].[F_SQLSERVER_SPLIT] &nbsp; Script Date: 2013-10-30 16:21:46 ******/</div><div>USE [ZBP];</div><div>GO</div><div>SET ANSI_NULLS OFF;</div><div>GO</div><div>SET QUOTED_IDENTIFIER ON;</div><div>GO</div><div>CREATE FUNCTION [dbo].[F_SQLSERVER_SPLIT](@Long_str varchar(8000),@split_str varchar(100)) &nbsp; &nbsp;</div><div>RETURNS &nbsp;@tmp TABLE( &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inT &nbsp; &nbsp; IDENTITY PRIMARY KEY, &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; short_str &nbsp; varchar(8000) &nbsp; &nbsp;</div><div>) &nbsp; &nbsp;</div><div>AS &nbsp;&nbsp;</div><div>BEGIN &nbsp;&nbsp;</div><div>&nbsp; &nbsp; DECLARE @long_str_Tmp varchar(8000),@short_str varchar(8000),@split_str_length int &nbsp;&nbsp;</div><div>&nbsp; &nbsp; SET @split_str_length = LEN(@split_str) &nbsp; &nbsp;</div><div>&nbsp; &nbsp; IF CHARINDEX(@split_str,@Long_str)=1&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET @long_str_Tmp=SUBSTRING(@Long_str,@split_str_length+1,LEN(@Long_str)-@split_str_length)</div><div>&nbsp; &nbsp; ELSE</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SET @long_str_Tmp=@Long_str</div><div>&nbsp; &nbsp; IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))&gt;1 &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; SET @long_str_Tmp=@long_str_Tmp+@split_str &nbsp; &nbsp;</div><div>&nbsp; &nbsp; ELSE &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; SET @long_str_Tmp=@long_str_Tmp &nbsp; &nbsp;</div><div>&nbsp; &nbsp; IF CHARINDEX(@split_str,@long_str_Tmp)=0</div><div>&nbsp; &nbsp; &nbsp; &nbsp; Insert INTO @tmp select @long_str_Tmp&nbsp;</div><div>&nbsp; &nbsp; ELSE</div><div>&nbsp; &nbsp; &nbsp; &nbsp; BEGIN</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHILE CHARINDEX(@split_str,@long_str_Tmp)&gt;0 &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BEGIN &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET @short_str=SUBSTRING(@long_str_Tmp,1,CHARINDEX(@split_str,@long_str_Tmp)-1) &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DECLARE @long_str_Tmp_LEN INT,@split_str_Position_END int &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET @long_str_Tmp_LEN = LEN(@long_str_Tmp) &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET @split_str_Position_END = LEN(@short_str)+@split_str_length &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SET @long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1,@long_str_Tmp_LEN-@split_str_Position_END))</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IF @short_str&lt;&gt;'' Insert INTO @tmp select @short_str &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; END &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; END</div><div>&nbsp; &nbsp; RETURN &nbsp; &nbsp;&nbsp;</div><div>END</div><div>GO</div><div></div><img src ="http://www.blogjava.net/keweibo/aggbug/406147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2013-11-08 16:57 <a href="http://www.blogjava.net/keweibo/articles/406147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server 2000 十六进制与十进制互转（收藏）</title><link>http://www.blogjava.net/keweibo/articles/406146.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Fri, 08 Nov 2013 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/406146.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/406146.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/406146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/406146.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/406146.html</trackback:ping><description><![CDATA[<br /><strong style="color: red;">十进制转十六进制</strong><br /><div>/****** Object: Function [dbo].[IntToHex] &nbsp; Script Date: 2013-10-30 16:22:15 ******/</div><div>USE [ZBP];</div><div>GO</div><div>SET ANSI_NULLS OFF;</div><div>GO</div><div>SET QUOTED_IDENTIFIER ON;</div><div>GO</div><div>CREATE FUNCTION [dbo].[IntToHex]</div><div>(@IntNum bigint)</div><div>RETURNS varchar(16)</div><div>AS</div><div>BEGIN</div><div>declare @Mods bigint, @res varchar(16)</div><div>set @res=''</div><div>while @IntNum &lt;&gt; 0</div><div>begin</div><div><span style="white-space:pre">	</span>set @Mods = @IntNum % 16</div><div><span style="white-space:pre">	</span>if @Mods &gt; 9</div><div><span style="white-space:pre">		</span>set @res = Char(Ascii('A')+@Mods-10)+@res</div><div><span style="white-space:pre">	</span>else</div><div><span style="white-space:pre">		</span>set @res = Cast(@Mods as varchar(4))+@res</div><div><span style="white-space:pre">	</span>set @IntNum = @IntNum/16</div><div>end</div><div>return @res</div><div></div><div>END</div><div>GO</div><div><span style="color: red;"><strong>十六进制转十进制</strong></span></div><div>/****** Object: Function [dbo].[HexToInt] &nbsp; Script Date: 2013-10-30 16:22:04 ******/</div><div>USE [ZBP];</div><div>GO</div><div>SET ANSI_NULLS OFF;</div><div>GO</div><div>SET QUOTED_IDENTIFIER ON;</div><div>GO</div><div>CREATE FUNCTION [dbo].[HexToInt]</div><div>(@hex varchar(100))</div><div>RETURNS int</div><div>AS</div><div>BEGIN</div><div>Declare @result bigint,@iPos int,@iTmp bigint,@iLoop int,@tmp varchar(16)</div><div>&nbsp; &nbsp; Set @tmp = '0123456789ABCDEF'</div><div>&nbsp; &nbsp; Select @result = 0,@iPos = 0</div><div>&nbsp; &nbsp; While @iPos &lt; &nbsp; Len(@hex)</div><div>&nbsp; &nbsp; Begin</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set &nbsp;@iTmp =&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CharIndex(substring(@hex,Len(@hex) - @iPos,1),@tmp)-1</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @iLoop = 1</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; While @iLoop &lt;= @iPos and @iTmp &gt; 0</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @iTmp = @iTmp * 16</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @iLoop = @iLoop + 1</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @result = @result + @iTmp</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @iLoop = @iLoop + 1 &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set @iPos = @iPos + 1</div><div>&nbsp; &nbsp; End</div><div></div><div>&nbsp; &nbsp; return @result</div><div>END</div><div>GO</div><div></div><img src ="http://www.blogjava.net/keweibo/aggbug/406146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2013-11-08 16:54 <a href="http://www.blogjava.net/keweibo/articles/406146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>存储过程递归调用时 游标的使用注意事项 </title><link>http://www.blogjava.net/keweibo/articles/399268.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 14 May 2013 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/399268.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/399268.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/399268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/399268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/399268.html</trackback:ping><description><![CDATA[<span style="color: red;">注意：</span><span style="color: red; font-family: arial, 'courier new', courier, 宋体, monospace; line-height: 24px; white-space: pre-wrap; background-color: #f1fedd;">必须</span><span style="background-color: #f1fedd; color: red; font-family: arial, 'courier new', courier, 宋体, monospace; line-height: 24px; white-space: pre-wrap;">把游标声明为局部的，即加上local</span><br /><br /><div>CREATE PROCEDURE [dbo].[p_expand_k3_bom]</div><div>@p_itemID int, @p_levelID int</div><div>WITH EXEC AS CALLER</div><div>AS</div><div>declare @v_itemID int</div><div>declare @v_levelID int</div><div>declare @v_itemNO varchar(20)</div><div>declare @v_itemName varchar(200)</div><div>declare @v_itemModel varchar(200)</div><div>declare @v_note1 varchar(20)</div><div>declare cursor_bom CURSOR <strong style="color: red;">LOCAL </strong>FOR select b.FItemID,c.FShortNumber, c.FName, c.FModel, &nbsp;b.FNote1</div><div>&nbsp; from AIS20120110144135.dbo.ICBOM a, AIS20120110144135.dbo.ICBOMChild b, AIS20120110144135.dbo.t_ICItem c</div><div>&nbsp; where a.FInterID = b.FInterID</div><div>&nbsp; and b.FItemID = c.FItemID</div><div>&nbsp; and a.FInterID = (select top 1 FInterID from AIS20120110144135.dbo.ICBOM where FItemID = @p_itemID)</div><div>&nbsp; and a.FItemID = @p_itemID</div><div></div><div>set @v_levelID = @p_levelID+1</div><div>open cursor_bom&nbsp;</div><div>fetch next from cursor_bom into @v_itemID, @v_itemNO, @v_itemName, @v_itemModel, @v_note1</div><div>while (@@FETCH_STATUS = 0)</div><div>&nbsp; begin</div><div>&nbsp; &nbsp; INSERT INTO k3_bom_info</div><div>&nbsp; &nbsp; &nbsp; (level_id, item_id, item_no, item_name, item_model, note_1)&nbsp;</div><div>&nbsp; &nbsp; VALUES (@v_levelID, @v_itemID, @v_itemNO, @v_itemName, @v_itemModel, @v_note1)</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; exec p_expand_k3_bom @v_itemID, @v_levelID</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; fetch next from cursor_bom into @v_itemID, @v_itemNO, @v_itemName, @v_itemModel, @v_note1</div><div>&nbsp; end</div><div></div><div>close cursor_bom</div><div>deallocate cursor_bom</div><div>GO</div><div></div><img src ="http://www.blogjava.net/keweibo/aggbug/399268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2013-05-14 17:17 <a href="http://www.blogjava.net/keweibo/articles/399268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何查看SQL SERVER补丁的版本</title><link>http://www.blogjava.net/keweibo/articles/391210.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 12 Nov 2012 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/391210.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/391210.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/391210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/391210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/391210.html</trackback:ping><description><![CDATA[<p>原文：<a href="http://hi.baidu.com/einsteinalbert/item/b0366529705c5cfb51fd87ee">http://hi.baidu.com/einsteinalbert/item/b0366529705c5cfb51fd87ee</a><br /><br />有两种方法：<br /><br /><strong>第一步：使用SQL语句查询</strong><br /><br />select @@version<br /><br />查询结果如下：</p>
<p>Microsoft SQL Server&nbsp;&nbsp; 2000 - 8.00.2039 (Intel X86) <br />&nbsp;&nbsp; May&nbsp;&nbsp; 3 2005 23:18:38 <br />&nbsp;&nbsp; Copyright (c) 1988-2003 Microsoft Corporation<br />&nbsp;&nbsp; Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)</p><br />其实在C:\Program Files\Microsoft SQL Server\MSSQL\Binn\sqlservr.exe<br />点击鼠标右键查看版本也能得到，不过信息比较简单而已。8.00.2039就代表安装的SQL Server的版本了。对应以下的表格，可以查出来具体对应的补丁版本。<strong style="color: #ff0000">8.00.2039表示安装了SP4，8.00.760表示安装了SP3</strong>。<br /><br /><strong>第二步：对照表格查找具体的补丁版本</strong><br /><br /><strong>SQL Server Versions</strong><br /><br />@Version SQL Server Version Released <br /><br />6.50.201 SQL Server 6.5 RTM <br />6.50.213 SQL Server 6.5 with Service Pack 1 <br />6.50.240 SQL Server 6.5 with Service Pack 2 <br />6.50.258 SQL Server 6.5 with Service Pack 3 <br />6.50.281 SQL Server 6.5 with Service Pack 4 <br />6.50.415 SQL Server 6.5 with Service Pack 5 <br />6.50.416 SQL Server 6.5 with Service Pack 5a <br />7.00.623 SQL Server 7.0 / MSDE 1.0 RTM <br />7.00.699 SQL Server 7.0 SP1 July 1999 <br />7.00.842 SQL Server 7.0 SP2 March 20th, 2000 <br />7.00.961 SQL Server 7.0 SP3 December 15th, 2000 <br />7.00.1063 SQL Server 7.0 SP4 <br />8.00.194 SQL Server 2000 RTM <br />8.00.384 SQL Server 2000 SP1 <br />8.00.534 SQL Server 2000 SP2 November 30th, 2001 <br /><strong style="color: #ff0000">8.00.760 SQL Server 2000 SP3 <br />8.00.2039 SQL Server 2000 SP4</strong><strong><br /></strong><br />更多的版本对照表：<br /><br /><strong>For SQL Server 8</strong><br /><br />Main Releases <br />@@version Version and Service Pack <br />8.00.2039 Service Pack 4<br />8.00.760 Service Pack 3 <br />8.00.534 Service Pack 2 <br />8.00.384 Service Pack 1 <br />8.00.194 RTM <br /><br />All Releases <br />@@version Version and Service Pack <br />8.00.2039 Service Pack 4<br />8.00.760 Service Pack 3 <br />8.00.686 SP 2 + Q316333 <br />8.00.679 SP 2 + Q316333 <br />8.00.665 SP 2 + Q316333 <br />8.00.655 SP 2 + Q316333 <br />8.00.650 SP 2 + Q316333 <br />8.00.644 SP 2 + Q324186 <br />8.00.608 SP 2 + Q316333/Q356326/Q356938 <br />8.00.578 SP 2 + Q316333 <br />8.00.534 Service Pack 2 <br />8.00.532 Service Pack 2 Beta <br />8.00.452 SP 1 + Q308547 <br />8.00.444 SP 1 + Q308547/Q307655 <br />8.00.443 SP 1 + Q307538 <br />8.00.428 SP 1 + Q304850 <br />8.00.384 Service Pack 1 <br />8.00.287 Q297209 <br />8.00.251 Q300194 <br />8.00.250 Q291683 <br />8.00.249 Q288122 <br />8.00.239 Q285290 <br />8.00.233 Q282416 <br />8.00.231 Q282279 <br />8.00.226 Q278239 <br />8.00.225 Q281663 <br />8.00.223 Q280380 <br />8.00.222 Q281769 <br />8.00.218 Q279183 <br />8.00.217 Q279293/Q279296 <br />8.00.211 Q276329 <br />8.00.210 Q275900 <br />8.00.205 Q274330 <br />8.00.204 Q274329 <br />8.00.194 RTM(SQL Server 8 with no service pack applied)<br /><br /><strong>For SQL Server 7</strong><br /><br />Main Releases<br />@@version Version and Service Pack <br />7.00.1063 SQL Server 7 with Service Pack 4 <br />7.00.961 SQL Server 7 with Service Pack 3 <br />7.00.842 SQL Server 7 with Service Pack 2 <br />7.00.699 SQL Server 7 with Service Pack 1 <br />7.00.623 SQL Server 7 with no service pack applied <br /><br /><strong>For SQL Server 6.5</strong><br /><br />Main Releases<br />@@version Version and Service Pack <br />6.50.479 SQL Server 6.5 with Service Pack 5a (updated) <br />6.50.416 SQL Server 6.5 with Service Pack 5a. <br />6.50.415 SQL Server 6.5 with Service Pack 5 <br />6.50.281 SQL Server 6.5 with Service Pack 4 <br />6.50.258 SQL Server 6.5 with Service Pack 3 <br />6.50.240 SQL Server 6.5 with Service Pack 2 <br />6.50.213 SQL Server 6.5 with Service Pack 1 <br />6.50.201 SQL Server 6.5 with no service pack applied <br /><br /><strong>For SQL Server 6</strong><br /><br />Main Releases<br />@@version Version and Service Pack <br />6.00.151 SQL Server 6 with Service Pack 3 <br />6.00.139 SQL Server 6 with Service Pack 2 <br />6.00.124 SQL Server 6 with Service Pack 1 <br />6.00.121 SQL Server 6 with no service pack applied <br /><br /><strong>补充</strong><br />For SQL Server 2005<br />打了sp3后版本号是&nbsp;<strong>9.0.4035</strong>如果是这个旧说明不用打了，如果比这个低，说明没有打<img src ="http://www.blogjava.net/keweibo/aggbug/391210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-11-12 16:19 <a href="http://www.blogjava.net/keweibo/articles/391210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server：查看SQL日志文件大小命令：dbcc sqlperf(logspace)</title><link>http://www.blogjava.net/keweibo/articles/388697.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 27 Sep 2012 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/388697.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/388697.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/388697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/388697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/388697.html</trackback:ping><description><![CDATA[<p>SQL Server：查看SQL日志文件大小命令：dbcc sqlperf(logspace) </p>
<p>DBA 日常管理工作中，很重要一项工作就是监视数据库文件大小，及日志文件大小。如果你管理数据库的有很多的话，每天一个一个数据库的去查看文件大小就太费神了，那就写个SQL脚本吧，放到 SQL Agent 中，每天自动去查看各个数据库文件及日志文件的大小，然后再通过数据库邮件，Email 到我们手中，岂不快哉！当然，可以把每天的记录存放到数据库中去，这样数据库及日志文件的增长趋势，我们也就一目了然了。 </p>
<p>这里，介绍下获取数据库日志文件大小的方法。其实很简单，就是执行 SQL Server DBCC 命令：dbcc sqlperf(logspace) </p><pre class="sqlcode">dbcc sqlperf(logspace)
</pre><pre class="sqlcode">Database Name  Log Size (MB)            Log Space Used (%)       Status
-------------- ------------------------ ------------------------ -----------
master         2.2421875                32.600174                0
tempdb         0.4921875                39.285713                0
model          0.4921875                41.07143                 0
msdb           2.2421875                30.901567                0
pubs           0.7421875                49.934212                0
Northwind      0.9921875                34.940945                0
</pre>
<p>dbcc sqlperf(logspace) 可以获取实例中每个数据库日志文件大小，及使用情况。如果要保存SQL日志文件大小，则需要先创建一个数据表，然后动态执行dbcc sqlperf(logspace)命令： </p><pre class="sqlcode">create table dbo.LogSize
(
   dbname   nvarchar(50) not null
  ,logsize  decimal(8,2) not null
  ,logused  decimal(5,2) not null
  ,status   int          null
)
</pre><pre class="sqlcode">insert into dbo.LogSize
execute('dbcc sqlperf(logspace) with no_infomsgs') 
</pre>
<p>&nbsp;</p>
<p><font color="#ff0000">本文由 <strong>www.sqlstudy.com</strong> 原创，版权所有，转载请注明作者和出处！</font></p>
<p>本文链接：<a title="SQL Server：查看SQL日志文件大小命令：dbcc sqlperf(logspace)" href="http://www.sqlstudy.com/sql_article.php?id=2008082901" target="_blank">http://www.sqlstudy.com/sql_article.php?id=2008082901</a></p><img src ="http://www.blogjava.net/keweibo/aggbug/388697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-09-27 15:46 <a href="http://www.blogjava.net/keweibo/articles/388697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>该操作未能执行，因为 OLE DB 提供程序SQLOLEDB无法启动分布式事务(收藏)</title><link>http://www.blogjava.net/keweibo/articles/384082.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 26 Jul 2012 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/384082.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/384082.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/384082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/384082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/384082.html</trackback:ping><description><![CDATA[<div class="postBody">
<div id="cnblogs_post_body">
<p><span style="font-family: 宋体">源文: <a href="http://www.cnblogs.com/pato/archive/2010/08/20/1804998.html">http://www.cnblogs.com/pato/archive/2010/08/20/1804998.html</a><br /><br />适用环境</span><span style="font-family: Verdana"></span></p>
<p><span style="font-family: 宋体">操作系统：</span><span style="font-family: Verdana">windows 2003</span></p>
<p><span style="font-family: 宋体">数据库：</span><span style="font-family: Verdana">sql server 2000/sql server 2005</span></p>
<p><span style="font-family: 宋体">使用链接服务器进行远程数据库访问的情况</span></p>
<h1><span style="line-height: 150%; font-family: Verdana; font-size: 12pt">一、&nbsp;</span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">问题现象</span></h1>
<p><span style="font-family: 宋体">在执行分布式事务时，在</span><span style="font-family: Verdana">sql server 2005</span><span style="font-family: 宋体">下收到如下错误：</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: 宋体; color: red">消息</span><span style="font-family: Verdana; color: red"> 7391</span><span style="font-family: 宋体; color: red">，级别</span><span style="font-family: Verdana; color: red"> 16</span><span style="font-family: 宋体; color: red">，状态</span><span style="font-family: Verdana; color: red"> 2</span><span style="font-family: 宋体; color: red">，过程</span><span style="font-family: Verdana; color: red"> xxxxx</span><span style="font-family: 宋体; color: red">，第</span><span style="font-family: Verdana; color: red"> 16 </span><span style="font-family: 宋体; color: red">行</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: 宋体; color: red">无法执行该操作，因为链接服务器</span><span style="font-family: Verdana; color: red"> "xxxxx" </span><span style="font-family: 宋体; color: red">的</span><span style="font-family: Verdana; color: red"> OLE DB </span><span style="font-family: 宋体; color: red">访问接口</span><span style="font-family: Verdana; color: red"> "SQLNCLI" </span><span style="font-family: 宋体; color: red">无法启动分布式事务。</span></p>
<p><span style="font-family: 宋体">在</span><span style="font-family: Verdana">sql server 2000</span><span style="font-family: 宋体">下收到如下错误：</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: 宋体; color: red">该操作未能执行，因为</span><span style="font-family: Verdana; color: red"> OLE DB </span><span style="font-family: 宋体; color: red">提供程序</span><span style="font-family: Verdana; color: red"> 'SQLOLEDB' </span><span style="font-family: 宋体; color: red">无法启动分布式事务。</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: Verdana; color: red">[OLE/DB provider returned message: </span><span style="font-family: 宋体; color: red">新事务不能登记到指定的事务处理器中。</span><span style="font-family: Verdana; color: red"> ]</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: Verdana; color: red">OLE DB </span><span style="font-family: 宋体; color: red">错误跟踪［</span><span style="font-family: Verdana; color: red">OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a</span><span style="font-family: 宋体; color: red">］。</span></p>
<p>&nbsp;</p>
<h1><span style="line-height: 150%; font-family: Verdana; font-size: 12pt">二、&nbsp;</span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt">解决方案</span></h1>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">双方启动</span><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">MSDTC</span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">服务</span></h2>
<p style="text-indent: 17.95pt"><span style="font-family: Verdana">MSDTC</span><span style="font-family: 宋体">服务提供分布式事务服务，如果要在数据库中使用分布式事务，必须在参与的双方服务器启动</span><span style="font-family: Verdana">MSDTC</span><span style="font-family: 宋体">（</span><span style="font-family: Verdana">Distributed Transaction Coordinator</span><span style="font-family: 宋体">）</span><span style="font-family: 宋体">服务。</span></p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">打开双方</span><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">135</span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">端口</span></h2>
<p style="text-indent: 17.95pt"><span style="font-family: Verdana">MSDTC</span><span style="font-family: 宋体">服务依赖于</span><span style="font-family: Verdana">RPC</span><span style="font-family: 宋体">（</span><span style="font-family: Verdana">Remote Procedure Call (RPC)</span><span style="font-family: 宋体">）服务</span><span style="font-family: Verdana">,RPC</span><span style="font-family: 宋体">使用</span><span style="font-family: Verdana">135</span><span style="font-family: 宋体">端口，保证</span><span style="font-family: Verdana">RPC</span><span style="font-family: 宋体">服务启动，如果服务器有防火墙，保证</span><span style="font-family: Verdana">135</span><span style="font-family: 宋体">端口不被防火墙挡住。</span><span style="font-family: Verdana">&nbsp;&nbsp; </span></p>
<p style="text-indent: 17.95pt"><span style="font-family: Verdana">&nbsp;</span><span style="font-family: 宋体">使用&#8220;</span><span style="font-family: Verdana">telnet IP 135 <span style="font-family: 宋体">&#8221;</span><span style="font-family: 宋体">命令测试对方端口是否对外开放。也可用端口扫描软件（比如</span>Advanced Port Scanner</span><span style="font-family: 宋体">）扫描端口以判断端口是否开放。</span></p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">3.<span style="font: 7pt 'Times New Roman'; color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; color: red; font-size: 10.5pt">保证链接服务器中语句没有访问发起事务服务器的操作</span></h2>
<p style="text-indent: 17.95pt"><span style="font-family: 宋体">在发起事务的服务器执行链接服务器上的查询、视图或存储过程中含有访问发起事务服务器的操作，这样的操作叫做环回（</span><span style="font-family: Verdana">loopback</span><span style="font-family: 宋体">），是不被支持的，所以要保证在链接服务器中不存在此类操作。</span></p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">在事务开始前加入</span><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">set xact_abort ON</span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">语句</span></h2>
<p style="text-indent: 17.95pt"><span style="font-family: 宋体">对于大多数</span><span style="font-family: Verdana"> OLE DB </span><span style="font-family: 宋体">提供程序（包括</span><span style="font-family: Verdana"> SQL Server</span><span style="font-family: 宋体">），必须将隐式或显示事务中的数据修改语句中的</span><span style="font-family: Verdana"> XACT_ABORT </span><span style="font-family: 宋体">设置为</span><span style="font-family: Verdana"> ON</span><span style="font-family: 宋体">。唯一不需要该选项的情况是在提供程序支持嵌套事务时。</span></p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">MSDTC</span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">设置</span></h2>
<p style="text-indent: 17.95pt"><span style="font-family: 宋体">打开&#8220;管理工具&#8213;&#8213;组件服务&#8221;，以此打开&#8220;组件服务&#8213;&#8213;计算机&#8221;，在&#8220;我的电脑&#8221;上点击右键。在</span><span style="font-family: Verdana">MSDTC</span><span style="font-family: 宋体">选项卡中，点击&#8220;安全配置&#8221;按钮。</span></p>
<p style="margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: 宋体">在安全配置窗口中做如下设置：</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">选中&#8220;网络</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">访问&#8221;</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">在客户端管理中选中&#8220;允许远程客户端&#8221;&#8220;允许远程管理&#8221;</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">在事务管理通讯中选&#8220;允许入站&#8221;&#8220;允许出站&#8221;&#8220;不要求进行验证&#8221;</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">保证</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">登陆账户为：</span><span style="font-family: Verdana">NT&nbsp;&nbsp; Authority\NetworkService<br /><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/chnking/DTC/dtc.JPG" width="435" height="394" /><br /></span></p>
<p style="text-indent: 17.95pt"><span style="font-family: Verdana"></span></p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">链接服务器和名称解析问题</span></h2>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 17.95pt"><span style="font-family: 宋体">建立链接</span><span style="font-family: Verdana">sql server</span><span style="font-family: 宋体">服务器，通常有两种情况</span><span style="font-family: Verdana">:</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 39pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">第一种情况，产品选</span><span style="font-family: Verdana">&#8221;sql server&#8221;</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">EXEC sp_addlinkedserver </span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @server='linkServerName',</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @srvproduct = N'SQL Server'</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 35.9pt"><span style="font-family: 宋体">这种情况，</span><span style="font-family: Verdana">@server </span><span style="font-family: 宋体">（</span><span style="font-family: Verdana">linkServerName</span><span style="font-family: 宋体">）就是要链接的</span><span style="font-family: Verdana">sqlserver</span><span style="font-family: 宋体">服务器名或者</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址。</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 39pt"><span style="font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">第二种情况，访问接口选</span><span style="font-family: Verdana">&#8220;Microsoft OLE DB Provider Sql Server&#8221;</span><span style="font-family: 宋体">或</span><span style="font-family: Verdana">&#8220;Sql Native Client&#8221;</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">EXEC sp_addlinkedserver&nbsp;&nbsp; </span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @server=' linkServerName ', </span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @srvproduct='',</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @provider='SQLNCLI', </span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 38.95pt"><span style="font-family: Verdana">&nbsp;&nbsp; @datasrc='sqlServerName'</span></p>
<p style="text-indent: 0.05pt; margin: 0cm 0cm 0pt 35.9pt"><span style="font-family: 宋体">这种情况，</span><span style="font-family: Verdana">@datasrc</span><span style="font-family: 宋体">（</span><span style="font-family: Verdana">sqlServerName</span><span style="font-family: 宋体">）就是要链接的实际</span><span style="font-family: Verdana">sqlserver</span><span style="font-family: 宋体">服务器名或者</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt">&nbsp;</p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: Verdana">Sql server</span><span style="font-family: 宋体">数据库引擎是通过上面设置的服务器名或者</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址访问链接服务器，</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">服务只通过服务器名</span><span style="font-family: 宋体">地址访问链接服务器，所以要保证数据库引擎和</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">都能通过服务器名或者</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址访问到链接服务器。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: 宋体">数据库引擎和</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">解析服务器的方式不太一样，下面分别叙述</span></p>
<h3><span style="font-family: Verdana; font-size: 10.5pt">6.1<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; font-size: 10.5pt">数据库引擎</span></h3>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">第一种情况的</span><span style="font-family: Verdana">@server</span><span style="font-family: 宋体">或者第二种情况的</span><span style="font-family: Verdana">@datasrc</span><span style="font-family: 宋体">设置为</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址时，数据库引擎会根据</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址访问链接服务器，这时不需要做名称解析。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">第一种情况的</span><span style="font-family: Verdana">@server</span><span style="font-family: 宋体">或者第二种情况的</span><span style="font-family: Verdana">@datasrc</span><span style="font-family: 宋体">设置为</span><span style="font-family: Verdana">sql server</span><span style="font-family: 宋体">服务器名时，需要做名称解析，就是把服务器名解析为</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">有两个办法解析服务器名：</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">一是在</span><span style="font-family: Verdana">sql server</span><span style="font-family: 宋体">客户端配置中设置一个别名，将上面的服务器名对应到链接服务器的</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">二是在&#8220;</span><span style="font-family: Verdana">C:\WINDOWS\system32\drivers\etc\hosts</span><span style="font-family: 宋体">&#8221;文件中增加一条记录：</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: Verdana">xxx.xxx.xxx.xxx&nbsp;&nbsp; </span><span style="font-family: 宋体">服务器名</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">作用同样是把服务器名对应到链接服务器的</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址。</span></p>
<h3><span style="font-family: Verdana; font-size: 10.5pt">6.2<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: Verdana; font-size: 10.5pt">DTC</span></h3>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: 宋体">不管哪一种情况，只要</span><span style="font-family: Verdana">@server</span><span style="font-family: 宋体">设置的是服务器名而不是</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址，就需要进行名称解析，办法同上面第二种办法，在</span><span style="font-family: Verdana">hosts</span><span style="font-family: 宋体">文件中增加解析记录，上面的第一种办法对</span><span style="font-family: Verdana">DTC</span><span style="font-family: 宋体">不起作用。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: 宋体">如果</span><span style="font-family: Verdana">@server</span><span style="font-family: 宋体">设置的是</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">地址，同样不需要做域名解析工作。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: Verdana">&nbsp;</p>
<h2><span style="line-height: 150%; font-family: Verdana; font-size: 10.5pt">7.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 10.5pt">远程服务器上的名称解析</span></h2>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 21pt"><span style="font-family: 宋体">分布式事务的参与服务器是需要相互访问的，发起查询的服务器要根据机器名或</span><span style="font-family: Verdana">ip</span><span style="font-family: 宋体">查找远程服务器的，同样远程服务器也要查找发起服务器，远程服务器通过发起服务器的机器名查找服务器，所以要保证远程服务器能够通过发起服务器的机器名访问到发起服务器。</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">一般的，两个服务器在同一网段机器名能就行很好的解析，但是也不保证都能很好的解析，所以比较保险的做法是：</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: 宋体">在远程服务器的在&#8220;</span><span style="font-family: Verdana">C:\WINDOWS\system32\drivers\etc\hosts</span><span style="font-family: 宋体">&#8221;文件中增加一条记录：</span></p>
<p style="text-indent: 17.95pt; margin: 0cm 0cm 0pt 27pt"><span style="font-family: Verdana">xxx.xxx.xxx.xxx&nbsp;&nbsp; </span><span style="font-family: 宋体">发起服务器名</span></span></p></div></div><img src ="http://www.blogjava.net/keweibo/aggbug/384082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-07-26 16:19 <a href="http://www.blogjava.net/keweibo/articles/384082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sql Server 2000 DB Link</title><link>http://www.blogjava.net/keweibo/articles/383977.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 25 Jul 2012 11:13:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/383977.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/383977.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/383977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/383977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/383977.html</trackback:ping><description><![CDATA[<p>一个sqlserver下访问另一个sqlserver数据库上的数据，或者访问其他oracle数据库上的数据，要想完成这些操作，我们首要的是创建数据库链接。 </p>
<p>　　有两种方法可以实现。</p>
<p>　　第一种：在　sqlserver　企业管理器中建立，这个比较简单的，首先在　"<span style="color: red">安全性</span>"节点下的&#8220;<span style="color: red">链接服务器</span>&#8221;节点　上点右键　，在出现的菜单中点　&#8220;<span style="color: red">新建数据库链接...</span>&#8221;　，然后会弹出一个界面，需要我们填写的有：链接服务器（这是一个名字，自己根据情况自行定义，以后就要通过他进行远程访问了），提供程序名称（这个就是选择数据驱动，根据数据库类型来选择，不能乱选，否则链接不上的），数据源（对于sqlserver就是远程数据库服务器的主机名或者IP,对于 oracle　就是在 oracle net config 中配置的别名），安全上下文用户和口令（也就是远程服务器的用户和口令）。</p>
<p>　　第二种：利用系统存储过程</p>
<p>　　创建一个sqlserver对sqlserver的数据库链接：</p>
<p><strong>exec sp_addlinkedserver&nbsp; 'link_northsnow','','SQLOLEDB','远程服务器主机名或域名或ip地址'<br />exec sp_addlinkedsrvlogin 'link_northsnow','false',null,'用户名','用户口令'</strong></p>
<p>　　创建一个sqlserver对Oracle的数据库链接：</p>
<p>exec sp_addlinkedserver 'link_ora', 'Oracle', 'MSDAORA', 'oracle数据库服务器别名'<br />exec sp_addlinkedsrvlogin 'link_ora', false, 'sa', '用户名', '用户口令'</p>
<p>　　有了数据库链接我们就可以使用了。对于sqlserver和oracle中的使用方法是有区别的。</p>
<p>　　对于sqlserver：</p>
<p>&nbsp;create view v_lhsy_user as select * from link_northsnow.lhsy.dbo.sys_user<br />&nbsp;select * from v_lhsy_user<br />其中lhsy为远程的数据库名<br />sys_user为表名</p>
<p>　　对于 oracle：</p>
<p>create view vvv as select * from link_ora..NORTHSNOW.SYS_USER<br />select * from vvv;<br />其中northsnow为远程oracle数据库服务器的一个用户名，SYS_USER为该用户在该服务器上的一个表，要非常注意的是：数据库链接（link_ora）后面有两个点（..），再往后面必须全部<span style="color: #ff0000">大写</span>，查询的对象一般为表格或者视图，不能查询同义词。</p>
<p><br /><strong style="font-size: 24pt">要想删除数据库链接，也有两种方法，</strong></p>
<p>　　一种是在企业管理器中操作，这个简单。</p>
<p>　　另一种是用系统存储过程：</p>
<p>　　exec sp_dropserver&nbsp; 数据库链接名称,'droplogins'</p><img src ="http://www.blogjava.net/keweibo/aggbug/383977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-07-25 19:13 <a href="http://www.blogjava.net/keweibo/articles/383977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql server还原备份, 其它用户无法登录解决方法</title><link>http://www.blogjava.net/keweibo/articles/382518.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sun, 08 Jul 2012 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/382518.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/382518.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/382518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/382518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/382518.html</trackback:ping><description><![CDATA[<div>孤立用户和对象名无效问题的解决方法<br /><div style="font-family: Georgia; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; line-height: normal; background-color: #ffffff; "><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><span style="color: #333333; "><br />A. 显示登录映射的当前用户的报告</span></div><div style="color: #333333; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; overflow-x: visible; overflow-y: visible; width: auto; height: auto; "><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; border-image: initial; "><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><p>以下示例生成当前数据库中未链接到任何登录名的用户及其安全标识符 (SID) 的报告。</p><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><div dir="ltr" style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><pre space="preserve" style="word-wrap: break-word; "><span style="color: red; ">EXEC sp_change_users_login 'Report';</span></pre></div></div></div><h3>B. 将数据库用户映射到新的 SQL Server 登录名</h3><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><p>在以下示例中，数据库用户与新的 SQL Server 登录名关联。数据库用户&nbsp;<code>MB-Sales</code>&nbsp;首先映射到另一个登录名，然后重新映射到登录名&nbsp;<code>MaryB</code>。</p><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><div dir="ltr" style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><pre space="preserve" style="word-wrap: break-word; ">--Create the new login.<br />CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';<br />GO<br />--Map database user MB-Sales to login MaryB.<br />USE AdventureWorks;<br />GO<br />EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';<br />GO</pre></div></div></div><h3>C. 自动将用户映射到登录名（必要时新建一个登录名）</h3><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><p>以下示例显示如何使用&nbsp;<code>Auto_Fix</code>&nbsp;将现有用户映射到同名的登录名，以及如何在不存在登录名&nbsp;<code>Mary</code>&nbsp;的情况下，创建密码为&nbsp;<code>B3r12-3x$098f6</code>&nbsp;的 SQL Server 登录名&nbsp;<code>Mary</code>。</p><div style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><div dir="ltr" style="word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; "><pre space="preserve" style="word-wrap: break-word; ">USE AdventureWorks;<br />GO<br />EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';<br />GO</pre><pre space="preserve" style="word-wrap: break-word; ">------------结束--------------------</pre></div></div></div></div></div></div></div></div><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">一、孤立帐户，就是某个数据库的帐户只有用户名而没有登录名，这样的用户在用户库的sysusers系统表中存在，而在master数据库的syslogins中却没有对应的记录。</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">孤立帐户的产生一般是以下两种：<br />1.将备份的数据库在其它机器上还原；<br />2.重装系统或SQL SERVER之后只还原了用户库</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">解决方法是使用sp_change_users_login来修复。</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">sp_change_users_login的用法有三种</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">用法1：<br /><strong style="color: red; ">exec sp_change_users_login 'REPORT'<br />列出当前数据库的孤立用户</strong></p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">用法2：<br />exec sp_change_users_login 'AUTO_FIX','用户名'<br />可以自动将用户名所对应的同名登录添加到syslogins中<br />如果没有建立testuser的登录用户，还可以用&nbsp;<br />sp_change_users_login 'Auto_Fix', 'testuser', NULL, 'testpass'</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">用法3：<br /><strong style="color: red; ">exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'<br />将用户名映射为指定的登录名。</strong></p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">二、对象名'xxxx&#8217;无效的问题</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">这里可能会有人遇到对象名 &#8216;xxxx&#8217;无效的问题。系统表却不会产生这个问题，而用户表还要加上用户名，然后是表明才能访问，比如select * from author,会说对象名 author 无效，而用select * from test.author就可以访问，这个是用户首选身份的问题。</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">解决很简单，就是察看test登录用户是否具有dba的权限或者系统管理的权限，有的话去掉就行了。</p><p style="line-height: normal; color: #333333; font-family: Georgia; background-color: #ffffff; ">因为如果用户有dba身份，那么它登陆后的默认表空间是dbo的系统表空间，所以去掉了之后，就会以正常的test表空间访问数据表了</p></div><img src ="http://www.blogjava.net/keweibo/aggbug/382518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-07-08 12:13 <a href="http://www.blogjava.net/keweibo/articles/382518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:SQL SERVER 2000中全角半角互转</title><link>http://www.blogjava.net/keweibo/articles/379663.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 31 May 2012 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/379663.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/379663.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/379663.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/379663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/379663.html</trackback:ping><description><![CDATA[<p style="line-height: normal; color: #555555; font-family: Georgia; font-size: 12px; letter-spacing: 2px; background-color: #f5f3f4; ">CREATE FUNCTION f_Convert(&nbsp;<br />@str NVARCHAR(4000), --要转换的字符串&nbsp;<br />@flag bit --转换标志,0转换成半角,1转换成全角&nbsp;<br />)RETURNS nvarchar(4000)&nbsp;<br />AS&nbsp;<br />BEGIN&nbsp;<br />DECLARE @pat nvarchar(8),@step int,@i int,@spc int&nbsp;<br />IF @flag=0&nbsp;<br />SELECT @pat=N'%[！-～]%',@step=-65248,&nbsp;<br />@str=REPLACE(@str,N'　',N' ')&nbsp;<br />ELSE&nbsp;<br />SELECT @pat=N'%[!-~]%',@step=65248,&nbsp;<br />@str=REPLACE(@str,N' ',N'　')&nbsp;<br />SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)&nbsp;<br />WHILE @i&gt;0&nbsp;<br />SELECT @str=REPLACE(@str,&nbsp;<br />SUBSTRING(@str,@i,1),&nbsp;<br />NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))&nbsp;<br />,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)&nbsp;<br />RETURN(@str)&nbsp;<br />END&nbsp;<br />GO&nbsp;&nbsp;</p><p style="line-height: normal; color: #555555; font-family: Georgia; font-size: 12px; letter-spacing: 2px; background-color: #f5f3f4; "><br />---------------------------------</p><p style="line-height: normal; color: #555555; font-family: Georgia; font-size: 12px; letter-spacing: 2px; background-color: #f5f3f4; ">DECLARE @t TABLE(col nvarchar(10))&nbsp;<br />INSERT @t SELECT 'aa'&nbsp;<br />UNION ALL SELECT 'Aa'&nbsp;<br />UNION ALL SELECT 'ＡＡ'&nbsp;<br />UNION ALL SELECT 'Ａ,Ａ'&nbsp;<br />UNION ALL SELECT 'Ａ，Ａ'&nbsp;<br /><br />select * from @t&nbsp;<br /><br />select dbo.f_Convert(col,0) from @t&nbsp;<br />--测试效果</p><p style="line-height: normal; color: #555555; font-family: Georgia; font-size: 12px; letter-spacing: 2px; background-color: #f5f3f4; "><a href="http://topic.csdn.net/t/20060317/14/4621265.html" style="color: #555555; text-decoration: none; line-height: 20px; ">http://topic.csdn.net/t/20060317/14/4621265.html</a></p><img src ="http://www.blogjava.net/keweibo/aggbug/379663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-05-31 14:08 <a href="http://www.blogjava.net/keweibo/articles/379663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SQL Server死锁的解除方法 </title><link>http://www.blogjava.net/keweibo/articles/379377.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 28 May 2012 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/379377.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/379377.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/379377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/379377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/379377.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转:http://database.51cto.com/art/201011/233039.htmSQL Server死锁使我们经常遇到的问题，下面就为您介绍如何查询SQL Server死锁，希望对您学习SQL Server死锁方面能有所帮助。SQL Server死锁的查询方法：exec&nbsp;master.dbo.p_lockinfo&nbsp;0,0&nbsp;---显示死锁的进程,不显示...&nbsp;&nbsp;<a href='http://www.blogjava.net/keweibo/articles/379377.html'>阅读全文</a><img src ="http://www.blogjava.net/keweibo/aggbug/379377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-05-28 18:04 <a href="http://www.blogjava.net/keweibo/articles/379377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL SERVER锁机制</title><link>http://www.blogjava.net/keweibo/articles/378398.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 17 May 2012 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/378398.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/378398.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/378398.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/378398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/378398.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, arial, helvetica; font-size: 12px; line-height: 18px; background-color: #dfdfdf; ">SQL SERVER的锁机制是这样的：</span><br style="word-wrap: break-word; font-family: verdana, arial, helvetica; font-size: 12px; line-height: 18px; background-color: #dfdfdf; " /><span style="font-family: verdana, arial, helvetica; font-size: 12px; line-height: 18px; background-color: #dfdfdf; ">当对表进行修改时，系统首先会在TABLE和PAGE上加一个IU或IX锁，也就是意向锁，然后给被操作行加一个U锁或X锁，因为对表中行修改的事务没结束，这些锁是一直存在的，当你查询该表时，要加S锁，因为S锁和已经加的IU或IX模式不兼容，因此，查询只能等待。</span>&nbsp;<br /><br /><div>use [DataBase Name]</div><div>exec sp_lock</div><br /><div>--查看对象名 Parameter: ObjectId</div><div>SELECT object_name(572642716)</div><img src ="http://www.blogjava.net/keweibo/aggbug/378398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-05-17 14:09 <a href="http://www.blogjava.net/keweibo/articles/378398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server2000删除日志释放磁盘空间</title><link>http://www.blogjava.net/keweibo/articles/377740.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 09 May 2012 12:42:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/377740.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/377740.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/377740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/377740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/377740.html</trackback:ping><description><![CDATA[<strong><span style="font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; color: red; background-color: #faf7ef; ">转自:&nbsp;</span></strong><strong style="color: red; ">http://www.mzwu.com/article.asp?id=2476</strong><br /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; "><br /></span><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">在SQL Server2000中要删除日志释放磁盘空间得分两步进行：</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">&#183;执行backup log语句来删除不活动日志，但此时磁盘空间并未释放；</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">&#183;收缩数据库释放未使用的磁盘空间；</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">下边详细说明：</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; color: #a52a2a; ">&#9312;.执行backup log语句删除不活动日志</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">执行sql语句：backup log Northwind with no_log，不活动日志将被删除，下图为sql语句执行前后数据库大小：</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><img src="http://www.mzwu.com/pic/201005/078.gif" border="0" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #faf7ef; border-right-color: #faf7ef; border-bottom-color: #faf7ef; border-left-color: #faf7ef; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><img src="http://www.mzwu.com/pic/201005/079.gif" border="0" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #faf7ef; border-right-color: #faf7ef; border-bottom-color: #faf7ef; border-left-color: #faf7ef; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">但在资源管理器中查看，你会发现剩余的磁盘空间并没有多出来，原因是日志删除了，但占用的空间未被释放，所以得再收缩下数据库来释放磁盘空间。</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><strong style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">说明</strong><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">：这个步骤也有人是执行"dump transaction Northwind with no_log"，但SQL Server2000帮助文件中说dump transaction和backup log是同义的，保险起见这两句可都执行一下。</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">SQL Server2000帮助相关说明：</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><div quotepanel"="" style="background-image: url(http://www.mzwu.com/skins/simple_yellow/layout.css); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #faf7ef; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-color: initial; border-image: initial; word-break: break-all; color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-repeat: repeat no-repeat; "><div style="color: #999999; padding-left: 8px; font-family: Georgia, Helvetica, sans-serif, 'Times New Roman', 宋体; ">引用内容</div><div style="background-color: #97957f; padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; line-height: 19px; ">DUMP DATABASE 和 DUMP TRANSACTION 语句与 BACKUP DATABASE 和 BACKUP LOG 语句同义。在以后的版本中可能会取消对 DUMP DATABASE 和 DUMP TRANSACTION 语句的支持。&nbsp;<br />考虑删除所有对 DUMP DATABASE 的引用，并替换为对 BACKUP DATABASE 的引用。考虑删除所有对 DUMP TRANSACTION 的引用，并替换为对 BACKUP LOG 的引用。</div></div><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; color: #a52a2a; ">&#9313;.收缩数据库释放未使用的磁盘空间</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">收缩数据库会删除每个文件中未使用的页，以释放出磁盘空间。右键单击数据库，选择"所有任务&#8594;收缩数据库"，点确定，你会看到剩余磁盘空间多了很多出来，数据库大小也变化了：</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><img src="http://www.mzwu.com/pic/201005/080.gif" border="0" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #faf7ef; border-right-color: #faf7ef; border-bottom-color: #faf7ef; border-left-color: #faf7ef; border-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><strong style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">说明</strong><span style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">：第&#9313;步操作也可以通过执行sql语句"dbcc shrinkdatabase(Northwind,1) "来进行，但实际发现执行非常慢！后测试可使用dbcc shrinkfile(n)语句，速度快很多，n的值可执行'select * from sysfiles"来获取！</span><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><strong style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; ">总结t-sql：</strong><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><div codepanel"="" style="background-image: url(http://www.mzwu.com/skins/simple_yellow/layout.css); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #faf7ef; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-color: initial; border-image: initial; word-break: break-all; color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-repeat: repeat no-repeat; "><div style="color: #999999; padding-left: 8px; font-family: Georgia, Helvetica, sans-serif, 'Times New Roman', 宋体; "><a style="float: right; cursor: pointer; ">复制内容到剪贴板</a>程序代码</div><div id="code4140" style="background-color: #97957f; padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; line-height: 19px; ">/*第一步：查询出文件编号,修改@fileid值*/<br />select * from sysfiles<br /><br />/*第二步：删除日志并释放空间*/<br />declare @table nvarchar(50),@fileid int<br />set @table = 'Northwind'<br />set @fileid = 2<br /><br />dump transaction @table with no_log<br />backup log @table with no_log<br />dbcc shrinkfile(@fileid)</div></div>More Information:http://wenku.baidu.com/view/099cf2f24693daef5ef73d32.html<br /><br style="color: #464646; font-family: Verdana, 微软雅黑, Arial, 宋体; font-size: 12px; text-align: left; background-color: #faf7ef; " /><img src ="http://www.blogjava.net/keweibo/aggbug/377740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-05-09 20:42 <a href="http://www.blogjava.net/keweibo/articles/377740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Update与Top关键字,更新指定表中数据的任意一条记录</title><link>http://www.blogjava.net/keweibo/articles/377722.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 09 May 2012 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/377722.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/377722.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/377722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/377722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/377722.html</trackback:ping><description><![CDATA[<br />更新指定表中数据的任意一条记录<br /><br /><div>update &nbsp;ad_user set [password] = '1234'&nbsp;</div><div>from ad_user a join (select top 1 * from ad_user) b on a.ad_user_id = b.ad_user_id</div><img src ="http://www.blogjava.net/keweibo/aggbug/377722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-05-09 17:16 <a href="http://www.blogjava.net/keweibo/articles/377722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>秒數與日期時間的轉換函數</title><link>http://www.blogjava.net/keweibo/articles/371280.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 05 Mar 2012 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/371280.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/371280.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/371280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/371280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/371280.html</trackback:ping><description><![CDATA[<p>select dateadd(s, 1261557316 ,'1970-1-1')</p><p><br />select datediff(s , '1970-01-01' , '2009-12-23 08:35:16')</p><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/keweibo/Capture.JPG" width="595" height="610" /><br /><img src ="http://www.blogjava.net/keweibo/aggbug/371280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-03-05 17:05 <a href="http://www.blogjava.net/keweibo/articles/371280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解決com.microsoft.sqlserver.jdbc.SQLServerException: 連接到主機的 TCP/IP 連接已經失敗</title><link>http://www.blogjava.net/keweibo/articles/371173.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 03 Mar 2012 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/371173.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/371173.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/371173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/371173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/371173.html</trackback:ping><description><![CDATA[<div><div><span style="font-size: 14pt; font-family: Arial; ">com.microsoft.sqlserver.jdbc.SQLServerException: 連接到主機 10.240.19.130 的 TCP/IP 連接已經失敗。</span><br /><span style="font-size: 14pt; font-family: Arial; ">錯誤: "Connection refused: connect。請確認連接屬性並檢查 SQL Server 的執行個體是否正在主機上執行，而且通訊埠可接收 TCP/IP 連接，</span><br /><span style="font-size: 14pt; font-family: Arial; ">同時防火牆也未封鎖連到通訊埠的 TCP 連接。"。</span><br /><br /><span style="font-size: 14pt; font-family: Arial; ">XP操作系統上新安裝的SQL Server 2000數據庫使用JDBC連結數據庫時出現以上錯誤信息.</span><br /><pre id="content-567639229"  mb10"=""><span style="font-size: 14pt; font-family: Arial; ">在DOS命令窗口输入如下命令&#8220;netstat - na&#8221;，看下这里面有没有1433端口或者自定义的端口，此时未发现SQL的端口处于监听状态</span></pre><pre id="content-574151799"  mb10"=""><span style="font-size: 14pt; font-family: Arial; ">原來是SQL server2000没有打补丁. 2000在低于SP3的子版本时，没有打开默认的1433端口，需要安裝SP3補丁进行升级！ </span><br /><br /><span style="font-size: 14pt; font-family: Arial; ">安裝完成后再次使用</span><span style="font-size: 14pt; font-family: Arial; ">命令&#8220;netstat - na&#8221;查看,發現已經1433端口.</span><br /><br /><span style="font-size: 14pt; font-family: Arial; ">測試代碼:</span><br /><span style="font-size: 14pt; font-family: Arial; ">package test;  </span><br /><span style="font-size: 14pt; font-family: Arial; ">import java.sql.Connection;</span><br /><span style="font-size: 14pt; font-family: Arial; ">import java.sql.DriverManager; </span><br /><span style="font-size: 14pt; font-family: Arial; ">import java.sql.SQLException;  </span><br /><span style="font-size: 14pt; font-family: Arial; ">public class Test {  	/** 	 * @param args 	 */ 	</span><br /><span style="font-size: 14pt; font-family: Arial; ">public static void main(String[] args) { 		 		 </span><br /><span style="font-size: 14pt; font-family: Arial; ">String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动   	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">String dbURL = "jdbc:sqlserver://10.240.19.130:1433;DatabaseName=dev"; // 连接服务器和数据库sample   	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">String userName = "sa"; // 默认用户名  ，如果没有开启，请到SQL Server Management Studio Express下开启sa用户。 	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">String userPwd = "123456789"; // 密码  ，自己设的  	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">Connection dbConn = null;    	       </span><br /><span style="font-size: 14pt; font-family: Arial; ">try {    	           </span><br /><span style="font-size: 14pt; font-family: Arial; ">Class.forName(driverName);    	           </span><br /><span style="font-size: 14pt; font-family: Arial; ">dbConn = DriverManager.getConnection(dbURL, userName, userPwd);    	           </span><br /><span style="font-size: 14pt; font-family: Arial; ">System.out.println("连接成功！"); // 如果连接成功控制台输出：Connection Successful!    	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">  } catch (Exception e) {    	           </span><br /><span style="font-size: 14pt; font-family: Arial; ">e.printStackTrace();    	      </span><br /><span style="font-size: 14pt; font-family: Arial; "> } finally { 	    	 </span><br /><span style="font-size: 14pt; font-family: Arial; ">  try { 			</span><br /><span style="font-size: 14pt; font-family: Arial; ">	dbConn.close(); 			</span><br /><span style="font-size: 14pt; font-family: Arial; ">} catch (SQLException e) { 				</span><br /><span style="font-size: 14pt; font-family: Arial; ">// TODO Auto-generated catch block 			</span><br /><span style="font-size: 14pt; font-family: Arial; ">	e.printStackTrace(); 			</span><br /><span style="font-size: 14pt; font-family: Arial; ">} 	     </span><br /><span style="font-size: 14pt; font-family: Arial; ">  } 	</span><br /><span style="font-size: 14pt; font-family: Arial; ">}  </span><br /><span style="font-size: 14pt; font-family: Arial; ">} </span><br /><br />
</pre></div><div><span style="white-space: pre;"><br /></span></div><div></div></div><img src ="http://www.blogjava.net/keweibo/aggbug/371173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-03-03 16:49 <a href="http://www.blogjava.net/keweibo/articles/371173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MSSQL 1069錯誤（由於登錄失敗而無法啟動服務）解決方法</title><link>http://www.blogjava.net/keweibo/articles/326533.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Mon, 19 Jul 2010 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/326533.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/326533.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/326533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/326533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/326533.html</trackback:ping><description><![CDATA[<div class="blog_content">
&nbsp;&nbsp;&nbsp;在本版面出現這個問題的頻率也算是很高的了，新手通常會比較多遇到這個問題<br />
原因很簡單，安裝SQL Server時是使用默認登錄用戶來作為啟動SQL
Server服務的賬號（對於自己使用的單機，通常就是administrator了），當該用戶更改了用戶名（如有人喜歡把administrator
改成admin）或更改了其口令時，再次啟動服務器，就出現&#8220;同於登錄失敗而無法啟動服務&#8221;的錯誤了<br />
知道了原因，解決方法也就很顯然了<br />
1，把用戶口令改回原來的，再啟動服務<br />
2，使用控制面版服務管理器，找到MSSQLSERVER服務，更改啟動賬號信息，改成變更後的，再啟動服務<br />
3，也是推薦使用的方法，創建一個新用戶，專門用於啟動SQL Server服務，安裝SQL Server時就使用該用戶來啟動SQL
Server，這樣就可以避免用於頻繁更改administrator口令而帶來的1069錯誤了。如果已經安裝好SQL
Server，也可以在控制面版服務管理器下更改MSSQLSERVER服務的服務賬號信息，換成SQL服務專用的用戶。
</div>
<img src ="http://www.blogjava.net/keweibo/aggbug/326533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2010-07-19 17:02 <a href="http://www.blogjava.net/keweibo/articles/326533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Microsoft][ODBC   驱动程序管理器]   驱动程序的   SQLAllocHandle   on   SQL_HANDLE_ENV   失败</title><link>http://www.blogjava.net/keweibo/articles/289716.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 04 Aug 2009 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/289716.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/289716.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/289716.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/289716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/289716.html</trackback:ping><description><![CDATA[弄了好久，原來是環境配置問題！<br />
環境變量path值<br />
<strong><span style="color: red;">%JAVA_HOME%\bin;%CATALINA_HOME%\bin;</span><span style="color: red;">D:\oracle\ora92\bin;</span></strong>D:\oracle\isuite\jdk\jre\bin\classic;D:\oracle\isuite\jdk\jre\bin;D:\oracle\isuite\jdk\jre\bin\client;D:\oracle\isuite\jlib;D:\oracle\isuite\bin;D:\oracle\isuite\jre\1.1.8\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem<br />
因為昨天又安裝了一個Oracle客戶端，今天發現ODBC就無法使用了，老是提示&#8220;[Microsoft][ODBC&nbsp;&nbsp; 驱动程序管理器]&nbsp;&nbsp; 驱动程序的&nbsp;&nbsp; SQLAllocHandle&nbsp;&nbsp; on&nbsp;&nbsp; SQL_HANDLE_ENV&nbsp;&nbsp; 失败&#8221;之類的錯誤信息，把紅色部份調到path值的最前面，成功解決問題！<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/289716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2009-08-04 10:28 <a href="http://www.blogjava.net/keweibo/articles/289716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过SQL中的.MDF和.LDF文件恢复数据库</title><link>http://www.blogjava.net/keweibo/articles/143050.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Thu, 06 Sep 2007 00:29:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/143050.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/143050.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/143050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/143050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/143050.html</trackback:ping><description><![CDATA[附加数据库: &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 企业管理器 &nbsp; <br />
&nbsp; --右键"数据库" &nbsp; <br />
&nbsp; --所有任务 &nbsp; <br />
&nbsp; --附加数据库 &nbsp; <br />
&nbsp; --选择你的.mdf文件名 &nbsp; <br />
&nbsp; --确定 &nbsp; <br />
&nbsp; --如果提示没有.ldf文件,是否创建,选择"是" &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; <nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="key0" onmouseover="kwE(event,0, this);" style="border-bottom: 1px dotted rgb(102, 0, 255); color: rgb(102, 0, 255); background-color: transparent; text-decoration: underline;" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">查询</nobr>分析器中的方法: &nbsp; <br />
&nbsp; --有数据文件及日志文件的情况 &nbsp; <br />
&nbsp; sp_attach_db &nbsp; '数据库名' &nbsp; <br />
&nbsp; ,'数据文件名(*.mdf注意要带目录)' &nbsp; --后面可以是用,分隔的该数据库的多个数据文件 &nbsp; <br />
&nbsp; ,'日志文件名(*.ldf注意要带目录)'--后面可以是用,分隔的该数据库的多个日志文件 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; --如果只有数据文件的情况 &nbsp; <br />
&nbsp; sp_attach_single_file_db &nbsp; '数据库名' &nbsp; <br />
&nbsp; ,'数据文件名(*.mdf注意要带目录)' &nbsp; --后面可以是用,分隔的该数据库的多个数据文件&nbsp;&nbsp;
<img src ="http://www.blogjava.net/keweibo/aggbug/143050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2007-09-06 08:29 <a href="http://www.blogjava.net/keweibo/articles/143050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>