﻿<?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>C++博客-李亚@中国-随笔分类-Sql Server</title><link>http://www.cppblog.com/lilac/category/5641.html</link><description>做.成为.拥有.</description><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 10:21:55 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 10:21:55 GMT</pubDate><ttl>60</ttl><item><title>精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41075.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:21:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41075.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41075.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41075.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41075.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;说明：复制表(只复制结构,源表名：a&nbsp;新表名：b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;into&nbsp;b&nbsp;from&nbsp;a&nbsp;where&nbsp;1&lt;&gt;1&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;说明：拷贝表(拷贝数据,源表名：a&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/lilac/archive/2008/01/13/41075.html'>阅读全文</a><img src ="http://www.cppblog.com/lilac/aggbug/41075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:21 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>备份服务器端SQL SERVER数据库至本地目录</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41074.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:18:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41074.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41074.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41074.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41074.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top none?; Codehighlighter1_0_12_Open_Text.style.display="none" Codehighlighter1_0_12_Closed_Image.style.display="inline" ; Codehighlighter1_0_12_Closed_Text.style.display="inline" ;?><img style="DISPLAY: none" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top none?; Codehighlighter1_0_12_Open_Text.style.display="inline" ; Codehighlighter1_0_12_Closed_Text.style.display="none" ;? Codehighlighter1_0_12_Open_Image.style.display="inline"><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">數據庫備份存儲過程</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top none?; ; ;? Codehighlighter1_14_33_Open_Text.style.display="none" Codehighlighter1_14_33_Closed_Image.style.display="inline" Codehighlighter1_14_33_Closed_Text.style.display="inline"><img style="DISPLAY: none" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top none?; ; ;? Codehighlighter1_14_33_Open_Text.style.display="inline" Codehighlighter1_14_33_Closed_Text.style.display="none" Codehighlighter1_14_33_Open_Image.style.display="inline"></span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">支持從服務器備份數據至本地機器上</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008080">--</span><span style="COLOR: #008080">&nbsp;</span><span style="COLOR: #008080"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">PROCEDURE</span><span style="COLOR: #000000">&nbsp;up_dbbackup<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>(<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">@backup_db_name</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">128</span><span style="COLOR: #000000">),<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top none?; ; ;? Codehighlighter1_133_144_Open_Text.style.display="none" Codehighlighter1_133_144_Closed_Image.style.display="inline" Codehighlighter1_133_144_Closed_Text.style.display="inline"><img style="DISPLAY: none" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top none?; ; ;? Codehighlighter1_133_144_Open_Text.style.display="inline" Codehighlighter1_133_144_Closed_Text.style.display="none" Codehighlighter1_133_144_Open_Image.style.display="inline"></span><span style="COLOR: #008000">@filename</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">128</span><span style="COLOR: #000000">),&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">備份路徑+文件名</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">@flag</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">VARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">60</span><span style="COLOR: #000000">)&nbsp;OUTPUT<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>)<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">AS</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">SET</span><span style="COLOR: #000000">&nbsp;NOCOUNT&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">NVARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">4000</span><span style="COLOR: #000000">),</span><span style="COLOR: #008000">@par</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">NVARCHAR</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1000</span><span style="COLOR: #000000">)<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">IF</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">NOT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">EXISTS</span><span style="COLOR: #000000">(<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">FROM</span><span style="COLOR: #000000">&nbsp;master..sysdatabases<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">WHERE</span><span style="COLOR: #000000">&nbsp;name</span><span style="COLOR: #808080">=</span><span style="COLOR: #008000">@backup_db_name</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;)<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@flag</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">數據庫</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">+</span><span style="COLOR: #008000">@backup_db_name</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">不存在!</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">RETURN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">ELSE</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">IF</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">RIGHT</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@filename</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #808080">&lt;&gt;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">\</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">CHARINDEX</span><span style="COLOR: #000000">(</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">\</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">@filename</span><span style="COLOR: #000000">)</span><span style="COLOR: #808080">&lt;&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top none?; ; ;? Codehighlighter1_475_482_Open_Text.style.display="none" Codehighlighter1_475_482_Closed_Image.style.display="inline" Codehighlighter1_475_482_Closed_Text.style.display="inline"><img style="DISPLAY: none" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top none?; ; ;? Codehighlighter1_475_482_Open_Text.style.display="inline" Codehighlighter1_475_482_Closed_Text.style.display="none" Codehighlighter1_475_482_Open_Image.style.display="inline">&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">定義標誌</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000">&nbsp;<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@lFlag</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">INT</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">EXECUTE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@lFlag</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">master..xp_cmdshell&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">DIR&nbsp;Z:</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">IF</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@lFlag</span><span style="COLOR: #808080">&lt;&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top none?; ; ;? Codehighlighter1_579_640_Open_Text.style.display="none" Codehighlighter1_579_640_Closed_Image.style.display="inline" Codehighlighter1_579_640_Closed_Text.style.display="inline"><img style="DISPLAY: none" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top none?; ; ;? Codehighlighter1_579_640_Open_Text.style.display="inline" Codehighlighter1_579_640_Closed_Text.style.display="none" Codehighlighter1_579_640_Open_Image.style.display="inline">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span style="COLOR: #008080">/*</span><span style="COLOR: #008080">&nbsp;在客戶機192.168.2.45上建立一個完全共享目錄db,指定一個用戶名和密碼.Win98用戶不需要用戶名和密碼</span><span style="COLOR: #008080">*/</span></span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">EXECUTE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@lFlag</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">master..xp_cmdshell&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">NET&nbsp;USE&nbsp;Z:&nbsp;\\192.168.2.45\db$&nbsp;test&nbsp;/user:ca.atc\test</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">IF</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@lFlag</span><span style="COLOR: #808080">&lt;&gt;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000">&nbsp;&nbsp;<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@flag</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">服務器創建目錄失敗!</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">RETURN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000">&nbsp;<br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@par</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">@filename&nbsp;VARCHAR(1000)</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@sql</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">BACKUP&nbsp;DATABASE&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">+</span><span style="COLOR: #008000">@backup_db_name</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">&nbsp;TO&nbsp;DISK=@filename&nbsp;WITH&nbsp;INIT</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">EXECUTE</span><span style="COLOR: #000000">&nbsp;sp_executesql&nbsp;</span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">@par</span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">@filename</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">EXECUTE</span><span style="COLOR: #000000">&nbsp;master..xp_cmdshell&nbsp;</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">NET&nbsp;USE&nbsp;Z:&nbsp;/DELETE</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@flag</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">數據庫</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">+</span><span style="COLOR: #008000">@backup_db_name</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">備份成功!</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">RETURN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">ELSE</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">@flag</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">數據庫備份路徑錯誤!</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">RETURN</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #808080">**</span><span style="COLOR: #000000">以上過程在SQL&nbsp;SERVER下測試通過</span> 
<img src ="http://www.cppblog.com/lilac/aggbug/41074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:18 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql实现分段功能的函数/去掉重复记录，获取重复记录</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41073.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:12:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41073.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41073.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41073.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41073.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_2s8dCJjn9zxDj4SGMMC67if8UXwyjvxx>
<div href="http://blog.csdn.net/wuyxdream/archive/2006/12/22/1452410.aspx">sql实现分段功能的函数</a> </div>
<div>
<p><font face=Arial><font face=Arial>--简单分段语句</font></font></p>
<div style="BORDER-RIGHT: #cccccc 1px dashed; BORDER-TOP: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; BORDER-BOTTOM: #cccccc 1px dashed; BACKGROUND-COLOR: #f1f1f1">
<pre style="WIDTH: 565px; WORD-WRAP: break-word"> <span style="COLOR: #0000ff">declare</span> @b <span style="COLOR: #0000ff">varchar</span>(20)
<span style="COLOR: #0000ff">select</span> @b=<span style="COLOR: #ff0000">'a-b-c-d-e'</span>
<span style="COLOR: #008080">--处理
</span><span style="COLOR: #0000ff">declare</span> @sql <span style="COLOR: #0000ff">varchar</span>(4000)
<span style="COLOR: #0000ff">select</span> @sql= <span style="COLOR: #ff0000">'<span style="COLOR: #0000ff">select</span> '</span><span style="COLOR: #ff0000">''</span>+<span style="COLOR: #ff00ff">replace</span>(@b,<span style="COLOR: #ff0000">'-'</span>,<span style="COLOR: #ff0000">''</span><span style="COLOR: #ff0000">' union all <span style="COLOR: #0000ff">select</span> '</span><span style="COLOR: #ff0000">''</span>) <span style="COLOR: #ff0000">''</span><span style="COLOR: #ff0000">''</span>
<span style="COLOR: #0000ff">exec</span>(@sql)</pre>
</div>
<font face=Arial>--实现 split 分段功能的函数</font><br>
<div style="BORDER-RIGHT: #cccccc 1px dashed; BORDER-TOP: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; BORDER-BOTTOM: #cccccc 1px dashed; BACKGROUND-COLOR: #f1f1f1">
<pre style="WIDTH: 565px; WORD-WRAP: break-word"> <span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">function</span> f_split(@SourceSql <span style="COLOR: #0000ff">varchar</span>(8000),@StrSeprate <span style="COLOR: #0000ff">varchar</span>(10))
<span style="COLOR: #0000ff">returns</span> @temp <span style="COLOR: #0000ff">table</span>(a <span style="COLOR: #0000ff">varchar</span>(100))
<span style="COLOR: #0000ff">as</span>
<span style="COLOR: #0000ff">begin</span>
<span style="COLOR: #0000ff">declare</span> @i <span style="COLOR: #0000ff">int</span>
<span style="COLOR: #0000ff">set</span> @SourceSql=<span style="COLOR: #ff00ff">rtrim</span>(<span style="COLOR: #ff00ff">ltrim</span>(@SourceSql))
<span style="COLOR: #0000ff">set</span> @i=<span style="COLOR: #ff00ff">charindex</span>(@StrSeprate,@SourceSql)
<span style="COLOR: #0000ff">while</span> @i&gt;=1
<span style="COLOR: #0000ff">begin</span>
<span style="COLOR: #0000ff">insert</span> @temp <span style="COLOR: #0000ff">values</span>(<span style="COLOR: #ff00ff">left</span>(@SourceSql,@i-1))
<span style="COLOR: #0000ff">set</span> @SourceSql=<span style="COLOR: #ff00ff">substring</span>(@SourceSql,@i+1,<span style="COLOR: #ff00ff">len</span>(@SourceSql)-@i)
<span style="COLOR: #0000ff">set</span> @i=<span style="COLOR: #ff00ff">charindex</span>(@StrSeprate,@SourceSql)
<span style="COLOR: #0000ff">end</span>
<span style="COLOR: #0000ff">if</span> @SourceSql&lt;&gt;<span style="COLOR: #ff0000">'\'</span>
<span style="COLOR: #0000ff">insert</span> @temp <span style="COLOR: #0000ff">values</span>(@SourceSql)
<span style="COLOR: #0000ff">return</span>
<span style="COLOR: #0000ff">end</span>
<span style="COLOR: #008080">--用法:
</span><span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> dbo.f_split(<span style="COLOR: #ff0000">'A:B:C:D:E'</span>,<span style="COLOR: #ff0000">':'</span>)
<span style="COLOR: #008080">--输出
</span>  a
1 A
2 B
3 C
4 D
5 E</pre>
</div>
<font face=Arial>--实现简单模糊查找的过程</font>
<div style="BORDER-RIGHT: #cccccc 1px dashed; BORDER-TOP: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; BORDER-BOTTOM: #cccccc 1px dashed; BACKGROUND-COLOR: #f1f1f1">
<pre style="WIDTH: 565px; WORD-WRAP: break-word"> <span style="COLOR: #0000ff">create</span> procedure splitter
@<span style="COLOR: #ff00ff">str</span> <span style="COLOR: #0000ff">varchar</span>(1024)
<span style="COLOR: #0000ff">as</span>
<span style="COLOR: #0000ff">declare</span> @s <span style="COLOR: #0000ff">varchar</span>(1024)
<span style="COLOR: #0000ff">declare</span> @i <span style="COLOR: #0000ff">int</span>
<span style="COLOR: #0000ff">set</span> @s=<span style="COLOR: #ff0000">'<span style="COLOR: #0000ff">select</span> message <span style="COLOR: #0000ff">from</span> T_QQMsgLog <span style="COLOR: #0000ff">where</span> 1=1'</span>
<span style="COLOR: #0000ff">set</span> @i=1
</pre>
</div>
&nbsp;--------------------------------------------------------------------------------------
<div href="http://blog.csdn.net/wuyxdream/archive/2006/12/22/1452409.aspx">去掉重复记录，获取重复记录</a> </div>
<div style="COLOR: #008080">--查询一个表中有效去掉重复的记录，UserID为自增长主键，RoleID为重复字段<br></span><span style="COLOR: #0000ff">select</span> MIN(UserID) <span style="COLOR: #0000ff">as</span> UserID, RoleID <span style="COLOR: #0000ff">from</span> tmpTable <span style="COLOR: #0000ff">group</span> <span style="COLOR: #0000ff">by</span> RoleID<br><br><span style="COLOR: #0000ff">select</span> RoleID <span style="COLOR: #0000ff">from</span> tmpTable <span style="COLOR: #0000ff">group</span> <span style="COLOR: #0000ff">by</span> RoleID HAVING (<span style="COLOR: #ff00ff">count</span>(*) &gt; 1)<br><br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">distinct</span> * <span style="COLOR: #0000ff">from</span> tmpTable<br><br><br><span style="COLOR: #008080">--删除重复记录<br></span><span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">distinct</span> * <span style="COLOR: #0000ff">into</span> #Tmp <span style="COLOR: #0000ff">from</span> tableName <br><span style="COLOR: #0000ff">drop</span> <span style="COLOR: #0000ff">table</span> tableName <br><span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">into</span> tableName <span style="COLOR: #0000ff">from</span> #Tmp <br><span style="COLOR: #0000ff">drop</span> <span style="COLOR: #0000ff">table</span> #Tmp</div>
</div>
</div>
<img src ="http://www.cppblog.com/lilac/aggbug/41073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:12 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单密码加密过程</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41071.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:11:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41071.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41071.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41071.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41071.html</trackback:ping><description><![CDATA[<div style="COLOR: #008080">--新增或修改密码<br></span><span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">proc</span> modifypwd<br>@uid <span style="COLOR: #0000ff">varchar</span>(16),@pwd <span style="COLOR: #0000ff">varchar</span>(16)<br><span style="COLOR: #0000ff">as</span><br><span style="COLOR: #0000ff">declare</span> @encode <span style="COLOR: #0000ff">varbinary</span>(255)<br><span style="COLOR: #0000ff">set</span> @encode=<span style="COLOR: #ff00ff">convert</span>(<span style="COLOR: #0000ff">varbinary</span>(255),pwdencrypt(@pwd))<br><span style="COLOR: #0000ff">if</span> <span style="COLOR: #808080">exists</span>(<span style="COLOR: #0000ff">select</span> uid <span style="COLOR: #0000ff">from</span> [<span style="COLOR: #ff00ff">user</span>] <span style="COLOR: #0000ff">where</span> uid=@uid)<br><span style="COLOR: #0000ff">update</span> [<span style="COLOR: #ff00ff">user</span>] <span style="COLOR: #0000ff">set</span> pwd=@encode <span style="COLOR: #0000ff">where</span> uid=@uid<br><span style="COLOR: #0000ff">else</span><br><span style="COLOR: #0000ff">insert</span> <span style="COLOR: #0000ff">into</span> [<span style="COLOR: #ff00ff">user</span>](uid,pwd) <span style="COLOR: #0000ff">values</span>(@uid,@encode)<br>go<br><br><span style="COLOR: #008080">--判断密码是否正确<br></span><span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">proc</span> checkid<br>@uid <span style="COLOR: #0000ff">varchar</span>(16),@pwd <span style="COLOR: #0000ff">varchar</span>(16)<br><span style="COLOR: #0000ff">as</span><br><span style="COLOR: #0000ff">declare</span> @encode <span style="COLOR: #0000ff">varbinary</span>(255)<br><span style="COLOR: #0000ff">select</span> @encode=pwd <span style="COLOR: #0000ff">from</span> [<span style="COLOR: #ff00ff">user</span>] <span style="COLOR: #0000ff">where</span> uid=@uid<br><span style="COLOR: #0000ff">if</span> pwdcompare(@pwd,@encode,0)=<span style="COLOR: #ff0000">'1'</span><br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #ff0000">'登录成功'</span><br><span style="COLOR: #0000ff">else</span><br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #ff0000">'用户名或密码错'</span><br>GO<br><br><span style="COLOR: #008080">--调用过程<br></span><span style="COLOR: #0000ff">exec</span> modifypwd <span style="COLOR: #ff0000">'admin'</span>,<span style="COLOR: #ff0000">'123456'</span><br><span style="COLOR: #0000ff">exec</span> checkid <span style="COLOR: #ff0000">'admin'</span>,<span style="COLOR: #ff0000">'123456'</span><br><br><span style="COLOR: #008080">--返回随机字符串的过程<br></span><span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">proc</span> randomchar<br>@times <span style="COLOR: #0000ff">int</span>,@result <span style="COLOR: #0000ff">varchar</span>(255) out<br><span style="COLOR: #0000ff">as</span><br><span style="COLOR: #0000ff">declare</span> @k <span style="COLOR: #0000ff">int</span><br><span style="COLOR: #0000ff">declare</span> @r <span style="COLOR: #0000ff">int</span><br><span style="COLOR: #0000ff">declare</span> @i <span style="COLOR: #0000ff">int</span><br><span style="COLOR: #0000ff">declare</span> @s <span style="COLOR: #0000ff">varchar</span>(255)<br><span style="COLOR: #0000ff">set</span> @i=0<br><span style="COLOR: #0000ff">set</span> @s=<span style="COLOR: #ff0000">''</span><br><span style="COLOR: #0000ff">while</span> @i&lt;@times<br><span style="COLOR: #0000ff">begin</span><br><span style="COLOR: #0000ff">set</span> @k=<span style="COLOR: #ff00ff">rand</span>()*61<br><span style="COLOR: #0000ff">if</span> @k&lt;26<br><span style="COLOR: #0000ff">set</span> @r=@k+97<br><span style="COLOR: #0000ff">else</span> <span style="COLOR: #0000ff">if</span> @k&gt;51<br><span style="COLOR: #0000ff">set</span> @r=@k-4<br><span style="COLOR: #0000ff">else</span><br><span style="COLOR: #0000ff">set</span> @r=@k 39 <br><span style="COLOR: #0000ff">set</span> @s=@s <span style="COLOR: #0000ff">char</span>(@r)<br><span style="COLOR: #0000ff">set</span> @i=@i 1<br><span style="COLOR: #0000ff">end</span><br><span style="COLOR: #0000ff">set</span> @result=@s<br><span style="COLOR: #008080">--调用<br></span><span style="COLOR: #0000ff">declare</span> @s <span style="COLOR: #0000ff">varchar</span>(255)<br><span style="COLOR: #0000ff">exec</span> randomchar 20,@s out </div>
<img src ="http://www.cppblog.com/lilac/aggbug/41071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:11 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL 行列转换</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41069.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:10:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41069.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41069.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41069.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41069.html</trackback:ping><description><![CDATA[<div 行列转换><span style="COLOR: #008080">--普通 <br></span><br>假设有张学生成绩表(CJ)如下 <br>[姓名]&nbsp; [学科]&nbsp; [成绩]<br>张三&nbsp;&nbsp;&nbsp; 语文&nbsp;&nbsp;&nbsp; 80 <br>张三&nbsp;&nbsp;&nbsp; 数学&nbsp;&nbsp;&nbsp; 90 <br>张三&nbsp;&nbsp;&nbsp; 物理&nbsp;&nbsp;&nbsp; 85 <br>李四&nbsp;&nbsp;&nbsp; 语文&nbsp;&nbsp;&nbsp; 85 <br>李四&nbsp;&nbsp;&nbsp; 数学&nbsp;&nbsp;&nbsp; 92 <br>李四&nbsp;&nbsp;&nbsp; 物理&nbsp;&nbsp;&nbsp; 82<br>王五&nbsp;&nbsp;&nbsp; 数学&nbsp;&nbsp;&nbsp; 60<br><br>想变成&nbsp;&nbsp;&nbsp;&nbsp; <br>[姓名] [语文] [数学] [物理]<br>张三&nbsp;&nbsp; 80&nbsp;&nbsp;&nbsp;&nbsp; 90&nbsp;&nbsp;&nbsp;&nbsp; 85 <br>李四&nbsp;&nbsp; 85&nbsp;&nbsp;&nbsp;&nbsp; 92&nbsp;&nbsp;&nbsp;&nbsp; 82<br>王五&nbsp;&nbsp; null&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; null <br><br><span style="COLOR: #0000ff">declare</span> @sql <span style="COLOR: #0000ff">varchar</span>(4000) <br><span style="COLOR: #0000ff">set</span> @sql = <span style="COLOR: #ff0000">'<span style="COLOR: #0000ff">select</span> 姓名'</span> <br><span style="COLOR: #0000ff">select</span> @sql = @sql + <span style="COLOR: #ff0000">',<span style="COLOR: #ff00ff">sum</span>(<span style="COLOR: #ff00ff">case</span> 学科 <span style="COLOR: #0000ff">when</span> '</span><span style="COLOR: #ff0000">''</span> 学科 <span style="COLOR: #ff0000">''</span><span style="COLOR: #ff0000">' <span style="COLOR: #0000ff">then</span> 成绩 <span style="COLOR: #0000ff">end</span>) <span style="COLOR: #0000ff">as</span> '</span> 学科 <br>&nbsp; <span style="COLOR: #0000ff">from</span> (<span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">distinct</span> 学科 <span style="COLOR: #0000ff">from</span> CJ) <span style="COLOR: #0000ff">as</span> a <br><span style="COLOR: #0000ff">set</span> @sql = @sql <span style="COLOR: #ff0000">' <span style="COLOR: #0000ff">from</span> cj <span style="COLOR: #0000ff">group</span> <span style="COLOR: #0000ff">by</span> 姓名'</span> <br><span style="COLOR: #0000ff">exec</span>(@sql) <br><br><br>2. 行列转换<span style="COLOR: #008080">--合并 <br></span><br>有表A, <br><span style="COLOR: #0000ff">id</span> pid <br>1&nbsp;&nbsp; 1 <br>1&nbsp;&nbsp; 2 <br>1&nbsp;&nbsp; 3 <br>2&nbsp;&nbsp; 1 <br>2&nbsp;&nbsp; 2 <br>3&nbsp;&nbsp; 1 <br>如何化成表B: <br><span style="COLOR: #0000ff">id</span> pid <br>&nbsp; 1&nbsp; 1,2,3 <br>&nbsp; 2&nbsp; 1,2 <br>&nbsp; 3&nbsp; 1 <br><br>创建一个合并的函数 <br><span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">function</span> fmerg(@<span style="COLOR: #0000ff">id</span> <span style="COLOR: #0000ff">int</span>) <br><span style="COLOR: #0000ff">returns</span> <span style="COLOR: #0000ff">varchar</span>(8000) <br><span style="COLOR: #0000ff">as</span> <br><span style="COLOR: #0000ff">begin</span> <br><span style="COLOR: #0000ff">declare</span> @<span style="COLOR: #ff00ff">str</span> <span style="COLOR: #0000ff">varchar</span>(8000) <br><span style="COLOR: #0000ff">set</span> @<span style="COLOR: #ff00ff">str</span>=<span style="COLOR: #ff0000">''</span> <br><span style="COLOR: #0000ff">select</span> @<span style="COLOR: #ff00ff">str</span>=@<span style="COLOR: #ff00ff">str</span> <span style="COLOR: #ff0000">','</span> <span style="COLOR: #ff00ff">cast</span>(pid <span style="COLOR: #0000ff">as</span> <span style="COLOR: #0000ff">varchar</span>) <span style="COLOR: #0000ff">from</span> 表A <span style="COLOR: #0000ff">where</span> <span style="COLOR: #0000ff">id</span>=@<span style="COLOR: #0000ff">id</span> <br><span style="COLOR: #0000ff">set</span> @<span style="COLOR: #ff00ff">str</span>=<span style="COLOR: #ff00ff">right</span>(@<span style="COLOR: #ff00ff">str</span>,<span style="COLOR: #ff00ff">len</span>(@<span style="COLOR: #ff00ff">str</span>)-1) <br><span style="COLOR: #0000ff">return</span>(@<span style="COLOR: #ff00ff">str</span>) <br><span style="COLOR: #0000ff">end</span> <br>go <br><br><span style="COLOR: #008080">--调用自定义函数得到结果<br></span><span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">distinct</span> <span style="COLOR: #0000ff">id</span>,dbo.fmerg(<span style="COLOR: #0000ff">id</span>) <span style="COLOR: #0000ff">from</span> 表A </div>
<img src ="http://www.cppblog.com/lilac/aggbug/41069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:10 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精妙SQL</title><link>http://www.cppblog.com/lilac/archive/2008/01/13/41068.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 16:08:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/13/41068.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41068.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/13/41068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41068.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41068.html</trackback:ping><description><![CDATA[<p>★说明：复制表(只复制结构,源表名：a 新表名：b)<br><br>SQL: <span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">into</span> b <span style="COLOR: #0000ff">from</span> a <span style="COLOR: #0000ff">where</span> 1&lt;&gt;1&nbsp; <br><br>★说明：拷贝表(拷贝数据,源表名：a 目标表名：b)&nbsp; <br><br>SQL: <span style="COLOR: #0000ff">insert</span> <span style="COLOR: #0000ff">into</span> b(a, b, c) <span style="COLOR: #0000ff">select</span> d,e,f <span style="COLOR: #0000ff">from</span> b;&nbsp; <br><br>★说明：显示文章、提交人和最后回复时间&nbsp; <br><br>SQL: <span style="COLOR: #0000ff">select</span> a.title,a.username,b.adddate <span style="COLOR: #0000ff">from</span> <span style="COLOR: #0000ff">table</span> a,(<span style="COLOR: #0000ff">select</span> max(adddate) adddate <span style="COLOR: #0000ff">from</span> <span style="COLOR: #0000ff">table</span> <span style="COLOR: #0000ff">where</span> <span style="COLOR: #0000ff">table</span>.title=a.title) b&nbsp; <br><br>★说明：外连接查询(表名1：a 表名2：b)&nbsp; <br><br>SQL: <span style="COLOR: #0000ff">select</span> a.f1, a.f2, a.f3, b.f3, b.f4, b.f5 <span style="COLOR: #0000ff">from</span> a <span style="COLOR: #ff00ff">left</span> OUT JOIN b ON a.f1 = b.f3 (左连接)<br>SQL: <span style="COLOR: #0000ff">select</span> a.f1, b.f2 <span style="COLOR: #0000ff">from</span> a FULL OUT JOIN b ON a.f1 = b.f1 (全连接)<br><br>★说明：日程安排提前五分钟提醒&nbsp; <br><br>SQL: <span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> 日程安排 <span style="COLOR: #0000ff">where</span> <span style="COLOR: #ff00ff">datediff</span>(<span style="COLOR: #ff0000">'minute'</span>,f开始时间,<span style="COLOR: #ff00ff">getdate</span>())&gt;5&nbsp; <br><br>★说明：两张关联表，删除主表中已经在副表中没有的信息&nbsp; <br><br>SQL:&nbsp; <br><br><span style="COLOR: #0000ff">delete</span> <span style="COLOR: #0000ff">from</span> info <span style="COLOR: #0000ff">where</span> not <span style="COLOR: #808080">exists</span> ( <span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> infobz <span style="COLOR: #0000ff">where</span> info.infid=infobz.infid ) <br><br>★说明：四表联查问题：&nbsp; <br><br><span style="COLOR: #0000ff">select</span> f1, (<span style="COLOR: #0000ff">select</span> min(f)-1 <span style="COLOR: #0000ff">from</span> t <span style="COLOR: #0000ff">where</span> f&gt;f1) <span style="COLOR: #0000ff">as</span> f2 <span style="COLOR: #0000ff">from</span> <br>(<span style="COLOR: #0000ff">select</span> f 1 <span style="COLOR: #0000ff">as</span> f1 <span style="COLOR: #0000ff">from</span> t <span style="COLOR: #0000ff">where</span> f 1 not <span style="COLOR: #808080">in</span> (<span style="COLOR: #0000ff">select</span> f <span style="COLOR: #0000ff">from</span> t) <span style="COLOR: #808080">and</span> f &lt;(<span style="COLOR: #0000ff">select</span> max(f) <span style="COLOR: #0000ff">from</span> t)) <span style="COLOR: #0000ff">as</span> cc<br><br>★说明：<span style="COLOR: #008080">--&nbsp; <br></span><br>SQL:&nbsp; <br><br><span style="COLOR: #0000ff">select</span> A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE&nbsp; <br><span style="COLOR: #0000ff">from</span> TABLE1,&nbsp; <br>(<span style="COLOR: #0000ff">select</span> X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE&nbsp; <br><span style="COLOR: #0000ff">from</span> (<span style="COLOR: #0000ff">select</span> NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND&nbsp; <br><span style="COLOR: #0000ff">from</span> TABLE2&nbsp; <br><span style="COLOR: #0000ff">where</span> TO_CHAR(UPD_DATE,<span style="COLOR: #ff0000">'YYYY/MM'</span>) = TO_CHAR(SYSDATE, <span style="COLOR: #ff0000">'YYYY/MM'</span>)) X,&nbsp; <br>(<span style="COLOR: #0000ff">select</span> NUM, UPD_DATE, STOCK_ONHAND&nbsp; <br><span style="COLOR: #0000ff">from</span> TABLE2&nbsp; <br><span style="COLOR: #0000ff">where</span> TO_CHAR(UPD_DATE,<span style="COLOR: #ff0000">'YYYY/MM'</span>) =&nbsp; <br>TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, <span style="COLOR: #ff0000">'YYYY/MM'</span>) || <span style="COLOR: #ff0000">'/01'</span>,<span style="COLOR: #ff0000">'YYYY/MM/DD'</span>) - 1, <span style="COLOR: #ff0000">'YYYY/MM'</span>) ) Y,&nbsp; <br><span style="COLOR: #0000ff">where</span> X.NUM = Y.NUM （ ）&nbsp; <br><span style="COLOR: #808080">and</span> X.INBOUND_QTY&nbsp;&nbsp; NVL(Y.STOCK_ONHAND,0) &lt;&gt; X.STOCK_ONHAND ) B&nbsp; <br><span style="COLOR: #0000ff">where</span> A.NUM = B.NUM&nbsp; <br><br>★说明：<span style="COLOR: #008080">--&nbsp; <br></span><br>SQL:&nbsp; <br><br><span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> studentinfo <span style="COLOR: #0000ff">where</span> not <span style="COLOR: #808080">exists</span>(<span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> student <span style="COLOR: #0000ff">where</span> studentinfo.<span style="COLOR: #0000ff">id</span>=student.<span style="COLOR: #0000ff">id</span>) <span style="COLOR: #808080">and</span> 系名称=<span style="COLOR: #ff0000">'"&amp;strdepartmentname&amp;"'</span> <span style="COLOR: #808080">and</span> 专业名称=<span style="COLOR: #ff0000">'"&amp;strprofessionname&amp;"'</span> <span style="COLOR: #0000ff">order</span> <span style="COLOR: #0000ff">by</span> 性别,生源地,高考总成绩&nbsp; <br><br>★说明：&nbsp; <br><br>从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源）&nbsp; <br><br>SQL:&nbsp; <br><br><span style="COLOR: #0000ff">select</span> a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'yyyy'</span>) <span style="COLOR: #0000ff">as</span> telyear,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'01'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> JAN,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'02'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> FRI,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'03'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> MAR,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'04'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> APR,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'05'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> MAY,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'06'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> JUE,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'07'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> JUL,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'08'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> AGU,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'09'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> SEP,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'10'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> OCT,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'11'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> NOV,&nbsp; <br><span style="COLOR: #ff00ff">sum</span>(decode(TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'mm'</span>), <span style="COLOR: #ff0000">'12'</span>, a.factration)) <span style="COLOR: #0000ff">as</span> DEC&nbsp; <br><span style="COLOR: #0000ff">from</span> (<span style="COLOR: #0000ff">select</span> a.userper, a.tel, a.standfee, b.telfeedate, b.factration&nbsp; <br><span style="COLOR: #0000ff">from</span> TELFEESTAND a, TELFEE b&nbsp; <br><span style="COLOR: #0000ff">where</span> a.tel = b.telfax) a&nbsp; <br><span style="COLOR: #0000ff">group</span> <span style="COLOR: #0000ff">by</span> a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, <span style="COLOR: #ff0000">'yyyy'</span>)&nbsp; </p>
1.把某个字段重新生起序列(从1到n):&nbsp;&nbsp;
<p>&nbsp;</p>
<p><span style="COLOR: #0000ff">set</span> IDENTITY_INSERT Table1 ON<br><span style="COLOR: #0000ff">declare</span> @i <span style="COLOR: #0000ff">int</span><br><span style="COLOR: #0000ff">set</span> @i = 0<br><span style="COLOR: #0000ff">update</span> Table1 <span style="COLOR: #0000ff">set</span> @i = @i&nbsp;&nbsp; 1,Field1 = @i<br><span style="COLOR: #0000ff">set</span> IDENTITY_INSERT Table1 <span style="COLOR: #0000ff">off</span><br><br>2.按成绩排名次<br><span style="COLOR: #0000ff">update</span> 成绩表<br><span style="COLOR: #0000ff">set</span> a.名次 = (<br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #ff00ff">count</span>(*)&nbsp;&nbsp; 1<br><span style="COLOR: #0000ff">from</span> 成绩表 b<br><span style="COLOR: #0000ff">where</span> a.总成绩 &lt; b.总成绩<br>)<br><span style="COLOR: #0000ff">from</span> 成绩表 a<br><br>3.查询外部数据库<br><span style="COLOR: #0000ff">select</span> a.*<br><span style="COLOR: #0000ff">from</span> OpenRowSet(<span style="COLOR: #ff0000">'Microsoft.Jet.OLEDB.4.0'</span>,<span style="COLOR: #ff0000">'c:\test.mdb'</span>;<span style="COLOR: #ff0000">'admin'</span>;<span style="COLOR: #ff0000">''</span>,Table1) a<br><br>4.查询Excel文件<br><span style="COLOR: #0000ff">select</span> * <br><span style="COLOR: #0000ff">from</span> OpenDataSource(<span style="COLOR: #ff0000">'Microsoft.Jet.OLEDB.4.0'</span>,<span style="COLOR: #ff0000">'Data Source="c:\test.xls";<span style="COLOR: #ff00ff">user</span> <span style="COLOR: #0000ff">id</span>=Admin;Password=;Extended properties=Excel 8.0'</span>)...Sheet1$<br><br>5.在查询中指定排序规则<br><span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> Table1 <span style="COLOR: #0000ff">order</span> <span style="COLOR: #0000ff">by</span> Field1 COLLATE Chinese_PRC_BIN<br>为什么要指定排序规则呢?参见:<br>http://www.zahui.com/html/8/15480.htm<br>例,检查数据库中的Pub_Users表中是否存在指定的用户:<br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #ff00ff">count</span>(*) <span style="COLOR: #0000ff">from</span> Pub_Users <span style="COLOR: #0000ff">where</span> [UserName]=<span style="COLOR: #ff0000">'admin'</span> <span style="COLOR: #808080">and</span> [PassWord]=<span style="COLOR: #ff0000">'aaa'</span> COLLATE Chinese_PRC_BIN<br>默认比较是不区分大小写的,如果不加COLLATE Chinese_PRC_BIN,那么密码aaa与AAA是等效的,这当然与实际不符.注意的是,每个条件都要指定排序规则,上例中用户名就不区分大小写.<br><br>6.<span style="COLOR: #0000ff">order</span> <span style="COLOR: #0000ff">by</span>的一个小技巧<br><span style="COLOR: #0000ff">order</span> <span style="COLOR: #0000ff">by</span>可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名)<br><span style="COLOR: #0000ff">select</span> a.<span style="COLOR: #0000ff">id</span>,a.Name,(<span style="COLOR: #0000ff">select</span> <span style="COLOR: #ff00ff">count</span>(*) <span style="COLOR: #0000ff">from</span> TableB b <span style="COLOR: #0000ff">where</span> a.<span style="COLOR: #0000ff">id</span>=b.PID) <span style="COLOR: #0000ff">from</span> TableA a <span style="COLOR: #0000ff">order</span> <span style="COLOR: #0000ff">by</span> 3<br><br>7.SQL简单分页的存储过程&nbsp;&nbsp;&nbsp; ◆常用◆◆常用◆◆常用◆◆常用◆◆常用◆<br><span style="COLOR: #008080">/*<br><span style="COLOR: #0000ff">create</span> <span style="COLOR: #0000ff">proc</span> recordpages<br>@nowpage <span style="COLOR: #0000ff">int</span>,<br>@per <span style="COLOR: #0000ff">int</span><br><span style="COLOR: #0000ff">as</span><br><span style="COLOR: #0000ff">declare</span> @s nvarchar(255)<br><span style="COLOR: #0000ff">if</span> @nowpage&lt;1 <span style="COLOR: #0000ff">set</span> @nowpage=1<br><span style="COLOR: #0000ff">if</span> @per&lt;1 <span style="COLOR: #0000ff">set</span> @per=1<br><span style="COLOR: #0000ff">set</span> @s=N<span style="COLOR: #ff0000">'<span style="COLOR: #0000ff">declare</span> @k <span style="COLOR: #0000ff">int</span> <span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">top</span> '</span> <span style="COLOR: #ff00ff">convert</span>(<span style="COLOR: #0000ff">varchar</span>(10),(@nowpage-1)*@per) ' @k=<span style="COLOR: #0000ff">id</span> <span style="COLOR: #0000ff">from</span> table1<br><span style="COLOR: #0000ff">select</span> <span style="COLOR: #0000ff">top</span> <span style="COLOR: #ff0000">' <span style="COLOR: #ff00ff">convert</span>(<span style="COLOR: #0000ff">varchar</span>(10),@per) '</span> * <span style="COLOR: #0000ff">from</span> table1 <span style="COLOR: #0000ff">where</span> <span style="COLOR: #0000ff">id</span>&gt;@k'<br><span style="COLOR: #0000ff">exec</span> <span style="COLOR: #af0000">sp_executesql </span>@s<br>go<br>*/</span><br><span style="COLOR: #0000ff">exec</span> recordpages 3,10</p>
<p>8：得到表中最小的未使用的<span style="COLOR: #0000ff">id</span>号</p>
<p>SQL: <span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> a <span style="COLOR: #ff00ff">left</span> inner join b on a.a=b.b <span style="COLOR: #ff00ff">right</span> inner join c on a.a=c.c inner join d on a.a=d.d <span style="COLOR: #0000ff">where</span> .....&nbsp; <br><br>9.得到表中自动编号列精心策划号的起始位置<br><br>SQL:&nbsp; <br><span style="COLOR: #0000ff">select</span> (<span style="COLOR: #ff00ff">case</span> <span style="COLOR: #0000ff">when</span> <span style="COLOR: #808080">exists</span>(<span style="COLOR: #0000ff">select</span> * <span style="COLOR: #0000ff">from</span> Handle b <span style="COLOR: #0000ff">where</span> b.HandleID = 1) <span style="COLOR: #0000ff">then</span> MIN(HandleID) + 1 <span style="COLOR: #0000ff">else</span> 1 <span style="COLOR: #0000ff">end</span>) <span style="COLOR: #0000ff">as</span> HandleID&nbsp; <br><span style="COLOR: #0000ff">from</span> Handle<br><span style="COLOR: #0000ff">where</span> NOT HandleID <span style="COLOR: #808080">in</span> (<span style="COLOR: #0000ff">select</span> a.HandleID - 1 <span style="COLOR: #0000ff">from</span> Handle a) </p>
<img src ="http://www.cppblog.com/lilac/aggbug/41068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-13 00:08 <a href="http://www.cppblog.com/lilac/archive/2008/01/13/41068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]SQL Server连接中的四个最常见错误</title><link>http://www.cppblog.com/lilac/archive/2008/01/12/41029.html</link><dc:creator>李亚</dc:creator><author>李亚</author><pubDate>Sat, 12 Jan 2008 08:25:00 GMT</pubDate><guid>http://www.cppblog.com/lilac/archive/2008/01/12/41029.html</guid><wfw:comment>http://www.cppblog.com/lilac/comments/41029.html</wfw:comment><comments>http://www.cppblog.com/lilac/archive/2008/01/12/41029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lilac/comments/commentRss/41029.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lilac/services/trackbacks/41029.html</trackback:ping><description><![CDATA[一."SQL Server 不存在或访问被拒绝" <br><br>这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. <br><br>一般说来,有以下几种可能性: <br><br>1,SQL Server名称或IP地址拼写有误 <br>2,服务器端网络配置有误 <br>3,客户端网络配置有误 <br><br>要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. <br><br><br>============= 首先,检查网络物理连接 ============= <br>ping &lt;服务器IP地址/服务器名称&gt; <br><br>如果 ping &lt;服务器IP地址&gt; 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等. <br>还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应 <br>因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口. <br><br>如果ping &lt;服务器IP地址&gt; 成功而,ping &lt;服务器名称&gt; 失败 <br>则说明名字解析有问题,这时候要检查 DNS 服务是否正常. <br>有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析, <br>具体的方法是: <br><br>1.使用记事本打开HOSTS文件（一般情况下位于C:\WINNT\system32\drivers\etc）. <br>添加一条IP地址与服务器名称的对应记录,如: <br>172.168.10.24 myserver <br><br>2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明. <br><br><br>============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 ============= <br>telnet &lt;服务器IP地址&gt; 1433 <br><br>如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接 <br>如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务, <br>也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听. <br><br><br>=============接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 ============= <br>可以利用 SQL Server 自带的服务器网络使用工具来进行检查. <br><br>点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具 <br><br>打开该工具后,在"常规"中可以看到服务器启用了哪些协议. <br>一般而言,我们启用命名管道以及 TCP/IP 协议. <br>点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置 <br>一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接. <br><br><br>============= 接下来我们要到客户端检查客户端的网络配置 ============= <br>我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查, <br>所不同的是这次是在客户端来运行这个工具. <br><br>点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具 <br><br>打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议. <br>一般而言,我们同样需要启用命名管道以及 TCP/IP 协议. <br>点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致. <br><br>单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称, <br>连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处. <br><br><br>通过以上几个方面的检查,基本上可以排除第一种错误. <br><br><br>----------------------------------------------------------------------------- <br><br>二."无法连接到服务器,用户xxx登陆失败" <br><br>该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式, <br>因此用户无法使用SQL Server的登录帐户（如 sa ）进行连接.解决方法如下所示: <br><br>1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server <br>操作步骤: <br>在企业管理器中 <br>--右键你的服务器实例(就是那个有绿色图标的) <br>--编辑SQL Server注册属性 <br>--选择"使用windows身份验证" <br><br>--选择"使用SQL Server身份验证" <br>--登录名输入:sa,密码输入sa的密码 <br>--确定 <br><br>2.设置允许SQL Server身份登录 <br>操作步骤: <br>在企业管理器中 <br>--展开"SQL Server组",鼠标右键点击SQL Server服务器的名称 <br>--选择"属性" <br>--再选择"安全性"选项卡 <br>--在"身份验证"下,选择"SQL Server和 Windows ". <br>--确定,并重新启动SQL Server服务. <br><br>在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败, <br>那就通过修改注册表来解决此问题: <br><br>1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器 <br>2.依次展开注册表项,浏览到以下注册表键: <br>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer] <br>3.在屏幕右方找到名称"LoginMode",双击编辑双字节值 <br>4.将原值从1改为2,点击"确定" <br>5.关闭注册表编辑器 <br>6.重新启动SQL Server服务. <br><br>此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册, <br>但是仍然无法使用Windows身份验证模式来连接SQL Server. <br>这是因为在 SQL Server 中有两个缺省的登录帐户: <br>BUILTIN\Administrators <br>&lt;机器名&gt;\Administrator 被删除. <br>要恢复这两个帐户,可以使用以下的方法: <br><br>1.打开企业管理器,展开服务器组,然后展开服务器 <br><br>2.展开"安全性",右击"登录",然后单击"新建登录" <br><br>3.在"名称"框中,输入 BUILTIN\Administrators <br><br>4.在"服务器角色"选项卡中,选择"System Administrators" <br><br>5.点击"确定"退出 <br><br>6.使用同样方法添加 &lt;机器名&gt;\Administrator 登录. <br><br>说明: <br><br>以下注册表键: <br>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode <br>的值决定了SQL Server将采取何种身份验证模式. <br>1.表示使用"Windows 身份验证"模式 <br>2.表示使用混合模式（Windows 身份验证和 SQL Server 身份验证）. <br><br><br>----------------------------------------------------------------------------- <br><br>三.提示连接超时 <br><br>如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接, <br>不过是由于连接的时间大于允许的时间而导致出错. <br>这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器, <br>并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误. <br><br>要解决这样的错误,可以修改客户端的连接超时设置. <br>默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒, <br>而查询分析器是 15 秒（这也是为什么在企业管理器里发生错误的可能性比较大的原因）. <br><br>具体步骤为: <br>企业管理器中的设置: <br>1.在企业管理器中,选择菜单上的"工具",再选择"选项" <br>2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡 <br>3.在"连接设置"下的"登录超时（秒）"右边的框中输入一个比较大的数字,如 20. <br><br>查询分析器中的设置: <br>工具 -- 选项 -- 连接 -- 将登录超时设置为一个较大的数字 <br><br><br>--------------------------------------------------------------------------------- <br><br>四.大部分机都用Tcp/ip才能成功，有次我发现用Named Pipes才可以？ <br><br>回复人： leimin(黄山光明顶) <br><br>这是因为在WINDOWS 2000以后的操作系统中，MS为解决SQL SERVER的安全问题将TCP/IP配置 <br>为SQLSERVER的默认连接协议，你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE <br>的顺序。 <br><br>你也可以在： <br>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] <br>"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 <br>看到默认的协议。 <br><br>2.怎么在程序中更改Named Pipes ， Tcp/ip ，其sql语句怎么写？ <br>你可以在上面提到的注册表的位置修改： <br>CLIENT端： <br>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib] <br>"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00 <br><br>SERVER端： <br>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib] <br>"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00<br>
<img src ="http://www.cppblog.com/lilac/aggbug/41029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lilac/" target="_blank">李亚</a> 2008-01-12 16:25 <a href="http://www.cppblog.com/lilac/archive/2008/01/12/41029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>