<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_飞洋过海</title><subtitle type="text"> ---于学、于勤、于功、于臻</subtitle><id>http://feed.cnblogs.com/blog/u/72480/rss</id><updated>2012-05-25T09:54:17Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/72480/rss"/><entry><id>http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.html</id><title type="text">SQLServer 数据库镜像+复制切换方案</title><summary type="text">目标： 主机做了Mirror和Replication，当主机出现问题时，Replication和Mirror实现自动的故障转移（Mirror和Replication都切换到备机，而当主机 重新启动后，自动充当备机的角色）。环境： 五台虚拟机，配置均为Windows2008 Enterprise + SQLServer2008R2 Enterprise 08R201：Mirror 见证机(WITNESS) IP:192.168.56.101 08R202：主机（Rep+Mirror） IP:192.168.56.102 08R203：Rep分发机 IP:192....</summary><published>2012-05-25T09:40:00Z</published><updated>2012-05-25T09:40:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;span lang="zh-CN"&gt;目标：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 主机做了&lt;/span&gt;&lt;span lang="en-US"&gt;Mirror&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;Replication&lt;/span&gt;&lt;span lang="zh-CN"&gt;，当主机出现问题时，&lt;/span&gt;&lt;span lang="en-US"&gt;Replication&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;Mirror&lt;/span&gt;&lt;span lang="zh-CN"&gt;实现自动的故障转移（&lt;/span&gt;&lt;span lang="en-US"&gt;Mirror&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;Replication&lt;/span&gt;&lt;span lang="zh-CN"&gt;都切换到备机，而当主机&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;重新启动后，自动充当备机的角色）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;环境：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang="zh-CN"&gt;五台虚拟机，配置均为&lt;/span&gt;&lt;span lang="en-US"&gt;Windows2008&lt;/span&gt;&lt;span lang="en-US"&gt; Enterprise + SQLServer2008R2 Enterprise&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 08R201&lt;/span&gt;&lt;span lang="zh-CN"&gt;：&lt;/span&gt;&lt;span lang="en-US"&gt;Mirror &lt;/span&gt;&lt;span lang="zh-CN"&gt;见证机&lt;/span&gt;&lt;span lang="en-US"&gt;(&lt;/span&gt;&lt;span lang="zh-CN"&gt;WITNESS&lt;/span&gt;&lt;span lang="en-US"&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IP:192.168.56.101&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;：主机（&lt;/span&gt;&lt;span lang="en-US"&gt;Rep+Mirror&lt;/span&gt;&lt;span lang="zh-CN"&gt;）&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IP:192.168.56.102&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 08R203&lt;/span&gt;&lt;span lang="zh-CN"&gt;：&lt;/span&gt;&lt;span lang="en-US"&gt;Rep&lt;/span&gt;&lt;span lang="zh-CN"&gt;分发机&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IP:192.168.56.103&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 08R204&lt;/span&gt;&lt;span lang="zh-CN"&gt;：&lt;/span&gt;&lt;span lang="en-US"&gt;Rep&lt;/span&gt;&lt;span lang="zh-CN"&gt;订阅机&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IP:192.168.56.104&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 08R205&lt;/span&gt;&lt;span lang="zh-CN"&gt;：镜像机（&lt;/span&gt;&lt;span lang="en-US"&gt;Mirror&lt;/span&gt;&lt;span lang="zh-CN"&gt;）&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IP:192.168.56.105&lt;/span&gt;&lt;/p&gt;&lt;p lang="en-US"&gt;&amp;nbsp;&lt;/p&gt;&lt;p lang="en-US"&gt;&lt;strong&gt;步骤：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;配置有见证服务器的镜像&lt;/strong&gt;&lt;/p&gt;&lt;ol type="1"&gt;&lt;li value="1"&gt;&lt;span lang="zh-CN"&gt;创建证书和&lt;/span&gt;&lt;span lang="en-US"&gt;Endpoint&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;08R202(Master) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;主机执行：&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; master;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; MASTER &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; ENCRYPTION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123456abc&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_A_cert &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; SUBJECT &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_A certificate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; , &lt;br/&gt;    START_DATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;11/08/2010&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,EXPIRY_DATE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;10/31/2099&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;主机执行：&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ENDPOINT Endpoint_Mirroring &lt;br/&gt;    STATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; STARTED &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    TCP ( LISTENER_PORT&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5022&lt;/span&gt; , LISTENER_IP &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; ) &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    DATABASE_MIRRORING &lt;br/&gt;    ( AUTHENTICATION &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; CERTIFICATE HOST_A_cert , ENCRYPTION &lt;span style="color: #808080;"&gt;=&lt;/span&gt; REQUIRED ALGORITHM AES , ROLE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; );&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;主机执行：&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;    BACKUP&lt;/span&gt; CERTIFICATE HOST_A_cert &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\HOST_A_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;    &lt;/div&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 08R205(Mirror) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;备机执行：&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; master;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; MASTER &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; ENCRYPTION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123456abc&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_B_cert &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; SUBJECT &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_B certificate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    START_DATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;11/08/2010&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,EXPIRY_DATE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;10/31/2099&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;备机执行：&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ENDPOINT Endpoint_Mirroring &lt;br/&gt;    STATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; STARTED &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    TCP ( LISTENER_PORT&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5022&lt;/span&gt; , LISTENER_IP &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; ) &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    DATABASE_MIRRORING &lt;br/&gt;    ( AUTHENTICATION &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; CERTIFICATE HOST_B_cert , ENCRYPTION &lt;span style="color: #808080;"&gt;=&lt;/span&gt; REQUIRED ALGORITHM AES , ROLE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; );&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;备机执行：&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;BACKUP&lt;/span&gt; CERTIFICATE HOST_B_cert &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\HOST_B_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 08R201(&lt;/span&gt;&lt;span lang="zh-CN"&gt;WITNESS&lt;/span&gt;&lt;span lang="en-US"&gt;) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;见证机执行&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; master;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; MASTER &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; ENCRYPTION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123456abc&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_W_cert &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; SUBJECT &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_W certificate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;START_DATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;11/08/2010&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,EXPIRY_DATE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;10/31/2099&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;见证机执行&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ENDPOINT Endpoint_Mirroring &lt;br/&gt;STATE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; STARTED &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;TCP ( LISTENER_PORT&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5022&lt;/span&gt; , LISTENER_IP &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; ) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;DATABASE_MIRRORING &lt;br/&gt;( AUTHENTICATION &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; CERTIFICATE HOST_W_cert , ENCRYPTION &lt;span style="color: #808080;"&gt;=&lt;/span&gt; REQUIRED ALGORITHM AES , ROLE &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt; );&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;见证机执行&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;BACKUP&lt;/span&gt; CERTIFICATE HOST_W_cert &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\HOST_W_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;&lt;/div&gt;&lt;ol type="1"&gt;&lt;li value="2"&gt;&lt;span&gt;交换证书&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;将&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_B_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_W_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;拷贝到&lt;/span&gt;&lt;span lang="en-US"&gt; 08R202 &lt;/span&gt;&lt;span lang="zh-CN"&gt;机器的&amp;rdquo;&lt;/span&gt;&lt;span lang="en-US"&gt;D&lt;/span&gt;&lt;span lang="en-US"&gt;:\Cert&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;ldquo;&lt;/span&gt;&lt;span lang="zh-CN"&gt;目录；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;将&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_&lt;/span&gt;&lt;span lang="en-US"&gt;A&lt;/span&gt;&lt;span lang="zh-CN"&gt;_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_W_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;拷贝到&lt;/span&gt;&lt;span lang="en-US"&gt; 08R205 &lt;/span&gt;&lt;span lang="zh-CN"&gt;机器的&amp;rdquo;&lt;/span&gt;&lt;span lang="en-US"&gt;D&lt;/span&gt;&lt;span lang="en-US"&gt;:\Cert&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;ldquo;&lt;/span&gt;&lt;span lang="zh-CN"&gt;目录；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;将&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_&lt;/span&gt;&lt;span lang="en-US"&gt;A&lt;/span&gt;&lt;span lang="zh-CN"&gt;_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="zh-CN"&gt;HOST_&lt;/span&gt;&lt;span lang="en-US"&gt;B&lt;/span&gt;&lt;span lang="zh-CN"&gt;_cert.cer&lt;/span&gt;&lt;span lang="zh-CN"&gt;拷贝到&lt;/span&gt;&lt;span lang="en-US"&gt; 08R201 &lt;/span&gt;&lt;span lang="zh-CN"&gt;机器的&amp;rdquo;&lt;/span&gt;&lt;span lang="en-US"&gt;D&lt;/span&gt;&lt;span lang="en-US"&gt;:\Cert&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;ldquo;&lt;/span&gt;&lt;span lang="zh-CN"&gt;目录；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;08R202(Master) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Master&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_B_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_B_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_B_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_B_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_B_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_B_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_B_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_W_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_W_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_W_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_W_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_W_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_W_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_W_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;08R205(Mirror) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Mirror&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_A_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_A_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_A_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_A_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_A_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_A_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_A_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_W_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_W_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_W_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_W_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_W_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_W_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_W_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;08R201(&lt;/span&gt;&lt;span lang="zh-CN"&gt;WITNESS&lt;/span&gt;&lt;span lang="en-US"&gt;) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上运行下面的脚本：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;WITNESS&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_A_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_A_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_A_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_A_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_A_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_A_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_A_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; LOGIN HOST_B_login &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; PASSWORD &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;123abc!@#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;USER&lt;/span&gt; HOST_B_user &lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; LOGIN HOST_B_login;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; CERTIFICATE HOST_B_cert &lt;span style="color: #0000ff;"&gt;AUTHORIZATION&lt;/span&gt; HOST_B_user &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Cert\HOST_B_cert.cer&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GRANT&lt;/span&gt; CONNECT &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; ENDPOINT::Endpoint_Mirroring &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;HOST_B_login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;;&lt;/div&gt;&lt;ol type="1"&gt;&lt;li value="3"&gt;&lt;span&gt;备份还原数据库&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;08R202(Master) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上备份数据库：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;  &lt;span style="color: #0000ff;"&gt;BACKUP&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DISK&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\temp\RepTest.bak&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;BACKUP&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;LOG&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DISK&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\temp\RepTest.trn&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;将备份文件拷贝到&lt;/span&gt;&lt;span lang="en-US"&gt; 08R205(Mirror) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上做还原（最好以&lt;/span&gt;&lt;span lang="en-US"&gt;SA&lt;/span&gt;&lt;span lang="zh-CN"&gt;帐号登录，使得数据库所有者为&amp;rdquo;&lt;/span&gt;&lt;span lang="en-US"&gt;SA&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;ldquo;）：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;  &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;RESTORE &lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RESTORE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;DISK&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\RepTest.bak&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,  &lt;br/&gt;MOVE N&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;RepTest&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Data\RepTest.mdf&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,  &lt;br/&gt;MOVE N&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;RepTest_log&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\Data\RepTest_log.ldf&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,   &lt;br/&gt;NORECOVERY,  NOUNLOAD,  STATS &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RESTORE&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;LOG&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DISK&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;D:\RepTest.trn&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; NORECOVERY&lt;/div&gt;&lt;ol type="1"&gt;&lt;li value="4"&gt;&lt;span&gt;建立镜像&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 在&lt;/span&gt;&lt;span lang="en-US"&gt;08R205(Mirror) &lt;/span&gt;&lt;span lang="zh-CN"&gt;上执行：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Mirror&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; PARTNER &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;TCP://192.168.56.102:5022&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;在&lt;/span&gt;&lt;span lang="en-US"&gt; 08R202(Master)&lt;/span&gt;&lt;span lang="zh-CN"&gt;上执行：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; PARTNER &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;TCP://192.168.56.105:5022&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; WITNESS &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;TCP://192.168.56.101:5022&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; RepTest &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; SAFETY &lt;span style="color: #0000ff;"&gt;FULL&lt;/span&gt; &lt;/div&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;到此，镜像已经建立完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span lang="zh-CN"&gt;配置&lt;/span&gt;&lt;span lang="en-US"&gt;Replication&lt;/span&gt;&lt;span lang="zh-CN"&gt;（事务型复制）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Replicaiton&lt;/span&gt;&lt;span lang="zh-CN"&gt;不做具体的搭建过程，只做几点说明：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. &amp;nbsp;08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;08R205&lt;/span&gt;&lt;span lang="zh-CN"&gt;都需要搭建到&lt;/span&gt;&lt;span lang="en-US"&gt;08R203&lt;/span&gt;&lt;span lang="zh-CN"&gt;的&lt;/span&gt;&lt;span lang="en-US"&gt;Distribution&lt;/span&gt;&lt;span lang="zh-CN"&gt;；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012052517295243.jpg" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&lt;span lang="en-US"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;2. &amp;nbsp;08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;08R205&lt;/span&gt;&lt;span lang="zh-CN"&gt;上的发布库的&lt;/span&gt;&lt;span lang="zh-CN"&gt;所有者必须为&amp;ldquo;&lt;/span&gt;&lt;span lang="en-US"&gt;SA&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;rdquo;&lt;/span&gt;&lt;span lang="zh-CN"&gt;，否则切换会出现如下错误：&lt;/span&gt;The process could not execute 'sp_replcmds' on 'WIN-08R205'.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;3. &amp;nbsp;&lt;/span&gt;&lt;span lang="en-US"&gt;08R203&lt;/span&gt;&lt;span lang="zh-CN"&gt;分发机上配置文件需要做如下修改（配置故障转移&lt;/span&gt;&lt;span lang="en-US"&gt;Partner&lt;/span&gt;&lt;span lang="zh-CN"&gt;）：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;配置复制故障转移参数&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;查看代理配置，在分发服务器运行&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;&lt;span style="color: #000000;"&gt; sp_help_agent_profile&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Agent_Type含义&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; &lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;4 = Merge Agent; 9 = Queue Reader Agent.&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;对于事务复制，需查看Agent_Type=1,2的Profile_id&lt;/span&gt;&lt;br/&gt;    &lt;br/&gt;    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;对于事务复制，需要配置快照代理(Snapshot Agent)和日志读取代理(Log Reader Agent)&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; sp_add_agent_parameter &lt;span style="color: #008000;"&gt;@profile_id&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@parameter_name&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;-PublisherFailoverPartner&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@parameter_value&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;WIN-08R205&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;镜像服务器名称&lt;/span&gt;&lt;br/&gt;    &lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; sp_add_agent_parameter &lt;span style="color: #008000;"&gt;@profile_id&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@parameter_name&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;-PublisherFailoverPartner&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@parameter_value&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; N&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;WIN-08R205&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;镜像服务器名称&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span lang="zh-CN"&gt;修改完成后，记得重启&lt;/span&gt;&lt;span lang="en-US"&gt;Agent&lt;/span&gt;&lt;span lang="zh-CN"&gt;服务，使之生效。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 4. &amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;从&lt;/span&gt;&lt;span lang="en-US"&gt;08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;创建到&lt;/span&gt;&lt;span lang="en-US"&gt;08R204&lt;/span&gt;&lt;span lang="zh-CN"&gt;的同步链。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;模拟故障转移并观察结果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. &amp;nbsp;暂停&lt;/span&gt;&lt;span lang="en-US"&gt;08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;的&lt;/span&gt;&lt;span lang="en-US"&gt;SQLServer&lt;/span&gt;&lt;span lang="zh-CN"&gt;服务；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;2. &amp;nbsp;到&lt;/span&gt;&lt;span lang="en-US"&gt;08R205&lt;/span&gt;&lt;span lang="zh-CN"&gt;上观察镜像和同步链是否转移过去了；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012052517344040.jpg" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 3. &amp;nbsp;如果同步链正常，修改某个表中的数据，看是否能同步到&lt;/span&gt;&lt;span lang="en-US"&gt;08R204&lt;/span&gt;&lt;span lang="zh-CN"&gt;上；&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 4. &amp;nbsp;重新启动&lt;/span&gt;&lt;span lang="en-US"&gt;08R202&lt;/span&gt;&lt;span lang="zh-CN"&gt;的&lt;/span&gt;&lt;span lang="en-US"&gt;SQLServer&lt;/span&gt;&lt;span lang="zh-CN"&gt;服务，看其是否成为了镜像机；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012052517350339.jpg" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5. &amp;nbsp;如果一起都正常，那恭喜啦，我们的测试成功。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2518416.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html</id><title type="text">更改SQLServer实例默认字符集</title><summary type="text">需求 安装数据库时，将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”，现在需要将其更改为“Chinese_PRC_CI_AS”。方法 重新生成系统数据库 ，然后还原配置信息。局限重新生成 master、model、msdb 和 tempdb 系统数据库时，将删除这些数据库，然后在其原位置重新创建。如果在重新生成语句中指定了新排序规则，则将使用该排序规则设置创建系统数据库。用户对这些数据库所做的所有修改都会丢失。例如，您在 master 数据库中的用户定义对象、在 msdb 中的预定作业或在 model 数据库中对默认数据库设置的更改都会丢失。前期准备在重新生成系..</summary><published>2012-05-15T06:56:00Z</published><updated>2012-05-15T06:56:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html"/><content type="html">&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 安装数据库时，将字符集安装成了&amp;ldquo;&lt;/span&gt;&lt;span&gt;SQL_Latin1_General_CP1_CI_AS&lt;/span&gt;&lt;span&gt;&amp;rdquo;，现在需要将其更改为&amp;ldquo;&lt;/span&gt;&lt;span&gt;Chinese_PRC_CI_AS&lt;/span&gt;&lt;span&gt;&amp;rdquo;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012051514470668.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang="zh-CN"&gt;重新生成系统数据库 &lt;/span&gt;&lt;span lang="zh-CN"&gt;，然后还原配置信息。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;局限&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;重新生成 master、model、msdb 和 tempdb 系统数据库时，将删除这些数据库，然后在其原位置重新创建。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;如果在重新生成语句中指定了新排序规则，则将使用该排序规则设置创建系统数据库。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;用户对这些数据库所做的所有修改都会丢失。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;例如，您在&lt;/span&gt;&lt;span lang="en-US"&gt; master &lt;/span&gt;&lt;span lang="zh-CN"&gt;数据库中的用户定义对象、在&lt;/span&gt;&lt;span lang="en-US"&gt; msdb &lt;/span&gt;&lt;span lang="zh-CN"&gt;中的预定作业或在&lt;/span&gt;&lt;span lang="en-US"&gt; model &lt;/span&gt;&lt;span lang="zh-CN"&gt;数据库中对默认数据库设置的更改都会丢失。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;前期准备&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在重新生成系统数据库之前执行下列任务，以确保可以将系统数据库还原至它们的当前设置。&lt;/p&gt;&lt;ol type="1"&gt;&lt;li value="1"&gt;&lt;span&gt;记录所有服务器范围的配置值。&lt;br /&gt;          &lt;/span&gt;&lt;span&gt;SELECT * FROM sys.configurations;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="zh-CN"&gt;记录所有应用到 SQL Server     实例和当前排序规则的 Service Pack 和修补程序。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;重新生成系统数据库后必须重新应用这些更新。&lt;br /&gt;          &lt;/span&gt;&lt;span lang="zh-CN"&gt;SELECT&lt;br /&gt;          SERVERPROPERTY('ProductVersion ') AS ProductVersion,&lt;br /&gt;          SERVERPROPERTY('ProductLevel') AS ProductLevel,&lt;br /&gt;          SERVERPROPERTY('ResourceVersion') AS ResourceVersion,&lt;br /&gt;          SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,&lt;br /&gt;          SERVERPROPERTY('Collation') AS Collation;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol type="1"&gt;&lt;li value="3"&gt;&lt;span lang="zh-CN"&gt;记录系统数据库的所有数据文件和日志文件的当前位置。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;重新生成系统数据库会将所有系统数据库安装到其原位置。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;如果已将系统数据库数据文件或日志文件移动到其他位置，则必须再次移动这些文件。&lt;br /&gt;          &lt;/span&gt;&lt;span lang="zh-CN"&gt;SELECT name, physical_name AS     current_file_location&lt;br /&gt;          FROM sys.master_files&lt;br /&gt;          WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'),     DB_ID('tempdb'));&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol type="1"&gt;&lt;li value="4"&gt;&lt;span&gt;如果将     SQL Server 的实例配置为复制分发服务器，请找到该分发数据库的当前备份。&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="zh-CN"&gt;确保您有重新生成系统数据库的相应权限。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;必须是&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;sysadmin&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;固定服务器角色的成员才能执行此操作。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;有关详细信息，请参阅&lt;/span&gt;&lt;a href="http://technet.microsoft.com/zh-cn/ms188659"&gt;&lt;span lang="zh-CN"&gt;服务器级别角色&lt;/span&gt;&lt;/a&gt;&lt;span lang="zh-CN"&gt;。&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol type="1"&gt;&lt;li value="6"&gt;&lt;span lang="zh-CN"&gt;将原数据库的帐号、&lt;/span&gt;&lt;span lang="en-US"&gt;JOB&lt;/span&gt;&lt;span lang="zh-CN"&gt;等与系统数据库相关的信息全部备份起来（可以先生成相应的脚本），分离掉所有用户库。&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;重新生成系统数据库&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;运行下面的命令就可重建数据库（根据您的系统，需要做相应的修改 ；D:/Setup 是数据库安装文件所在的路径）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;D:/Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER/SQLSYSADMINACCOUNTS=Administrators /SAPWD=&lt;/span&gt;&lt;span lang="en-US"&gt;XXXX&lt;/span&gt;&lt;span lang="zh-CN"&gt; /SQLCOLLATION=Chinese_PRC_CI_AS&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;参数说明:&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;参数名称&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span&gt;说明&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;/QUIET 或 /Q&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;指定在没有任何用户界面的情况下运行安装程序。&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;/ACTION=REBUILDDATABASE&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;指定安装程序将重新创建系统数据库。&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;/INSTANCENAME=InstanceName&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;SQL  Server 实例的名称。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;对于默认实例，请输入&lt;/span&gt;&lt;span lang="en-US"&gt; MSSQLSERVER&lt;/span&gt;&lt;span lang="zh-CN"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;/SQLSYSADMINACCOUNTS=accounts&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;指定要添加到&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;sysadmin&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;固定服务器角色中的&lt;/span&gt;&lt;span lang="en-US"&gt; Windows &lt;/span&gt;&lt;span lang="zh-CN"&gt;组或单个帐户。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;指定多个帐户时，请用空格将帐户隔开。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;例如，请输入&lt;/span&gt;&lt;span lang="en-US"&gt; BUILTIN\Administrators  MyDomain\MyUser&lt;/span&gt;&lt;span lang="zh-CN"&gt;。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;当您在帐户名称内指定包含空格的帐户时，用双引号将该帐户引起来。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;例如，输入&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;NT AUTHORITY\SYSTEM&lt;/span&gt;&lt;span lang="zh-CN"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;[  /SAPWD=StrongPassword&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;]&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;指定 SQL  Server&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;sa&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;帐户的密码。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;如果实例使用混合身份验证（&lt;/span&gt;&lt;span lang="en-US"&gt;SQL Server &lt;/span&gt;&lt;span lang="zh-CN"&gt;和&lt;/span&gt;&lt;span lang="en-US"&gt;  Windows &lt;/span&gt;&lt;span lang="zh-CN"&gt;身份验证）模式，则此参数是必需的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="file:///C:\Users\KenGuo\AppData\Local\Temp\msohtmlclip1\02\clip_image002.gif" alt="安全说明" width="7" height="10" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;安全说明&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;sa&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;帐户是一个广为人知的&lt;/span&gt;&lt;span lang="en-US"&gt; SQL Server &lt;/span&gt;&lt;span lang="zh-CN"&gt;帐户，并且经常成为恶意用户的攻击目标。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;因此，为&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;sa&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;登录名使用强密码非常重要。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;不要为 Windows 身份验证模式指定此参数。&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;[  /SQLCOLLATION=CollationName&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;]&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;指定新服务器级排序规则。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;此参数可选。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;如果没有指定，则使用服务器的当前排序规则。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="file:///C:\Users\KenGuo\AppData\Local\Temp\msohtmlclip1\02\clip_image003.gif" alt="重要说明" width="11" height="11" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;重要提示&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;更改服务器级排序规则不会更改现有用户数据库的排序规则。&lt;/span&gt;&lt;span lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;默认情况下，所有新创建的用户数据库都将使用新排序规则。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;有关详细信息，请参阅&lt;/span&gt;&lt;a href="http://technet.microsoft.com/zh-cn/ms179254"&gt;设置或更改服务器排序规则&lt;/a&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;安装程序完成&lt;/span&gt;&lt;span lang="zh-CN"&gt;后，将显示如下信息，（你也可以检查&lt;/span&gt;&lt;span lang="zh-CN"&gt;Summary.txt &lt;/span&gt;&lt;span lang="zh-CN"&gt;日志文件以验证重新生成过程是否成功完成。&lt;/span&gt;&lt;span lang="zh-CN"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="zh-CN"&gt;此文件位于&lt;/span&gt;&lt;span lang="zh-CN"&gt;C:\Program Files\Microsoft SQL Server\1&lt;/span&gt;&lt;span lang="en-US"&gt;0&lt;/span&gt;&lt;span lang="zh-CN"&gt;0\Setup Bootstrap\Logs&lt;/span&gt;&lt;span lang="zh-CN"&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012051514472915.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;检查和修复&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;系统数据库恢复完成后，先检查一下字符集是否按要求恢复了：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012051514474159.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="zh-CN"&gt;字符集更改完成后，我们还需要附加上用户数据库，将原来的帐号和&lt;/span&gt;&lt;span lang="en-US"&gt;JOB&lt;/span&gt;&lt;span lang="zh-CN"&gt;等信息以及配置信息做修复，还需要修复孤立帐号等。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;附加说明&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 如果您只需要更改某个用户数据库的字符集，非常简单：&lt;/p&gt;&lt;p&gt;&amp;nbsp; --修改数据库字符集&lt;/p&gt;&lt;p&gt;&amp;nbsp; alterdatabase DBName collate Chinese_PRC_CI_AS&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 以上恢复是在SQLServer2008R2版本上面完成的，不同的版本您可能需要做一些修改，另外此方法存在一定的风险（主要是在重建数据库阶段），产品环境&lt;/p&gt;&lt;p&gt;最好还是重新安装数据库。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2501598.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/05/07/2489190.html</id><title type="text">SQLServer资源调控器--自由分配您的资源</title><summary type="text">很早之前就有朋友问过我，能否按业务的优先等级分配SQLServer的资源，使得不同的应用能得到不同的响应，SQLServer2008之前对这个需求貌似没有什么解决方法，不过从SQLServer2008开始，这个需求就变得很简单了，SQLServer直接就为我们提供了按用户的要求分配资源的能力，下面我们就来介绍这个功能。 SQLServer资源调控器分成三个部分：资源池、负载组和分类器函数；资源池为我们提供了将资源（CPU、Memory等）划分到不同的载体中，负载组承载负载并将这些负载映射到资源池，分类器函数将不同的会话映射到不同的负载组中。资源池：08提供了两种预先定义好的资源池内部池：...</summary><published>2012-05-07T13:51:00Z</published><updated>2012-05-07T13:51:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/05/07/2489190.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/05/07/2489190.html"/><content type="html">&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;很早之前就有朋友问过我，能否按业务的优先等级分配SQLServer的资源，使得不同的应用能得到不同的响应，SQLServer2008之前对这个需求貌似没有什么&lt;/p&gt;&lt;p&gt;解决方法，不过从SQLServer2008开始，这个需求就变得很简单了，SQLServer直接就为我们提供了按用户的要求分配资源的能力，下面我们就来介绍这个功能。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; SQLServer资源调控器分成三个部分：资源池、负载组和分类器函数；资源池为我们提供了将资源（CPU、Memory等）划分到不同的载体中，负载组承载负载并&lt;/p&gt;&lt;p&gt;将这些负载映射到资源池，分类器函数将不同的会话映射到不同的负载组中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;资源池：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;08提供了两种预先定义好的资源池&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;strong&gt;内部池&lt;/strong&gt;：内部池只用于SQLServer数据库引擎，系统管理员不能改变和设置；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;strong&gt;默认池&lt;/strong&gt;：默认池用于没有分配资源池的各种负载，因此，如果你不指定资源调控器，全部负载将使用默认池。默认池也不能改变或删除，但是可以修改它的资源上&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 下限。&lt;/p&gt;&lt;p&gt;&amp;nbsp;资源池上下限要求：&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;strong&gt;各个资源池的下限之和不能超过100%&lt;/strong&gt;，因为SQLServer会尽力满足每个下限；&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 上限可以设置为下限和100%之间的任意值。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;以下是关于资源池的基本操作：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建资源池&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool UserQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;删除资源池&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;drop&lt;/span&gt; Resource Pool UserQueries&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;负载组：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;负载组可以让管理员轻松地监控资源使用情况，在不同的资源池之间移动某类负载。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;负载组被映射到资源池上，一个资源池可以有零个或更多负载组，一个负载组为一组用户会话提供一个桶。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建负载组&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt;&lt;span style="color: #000000;"&gt; DailyExecReports USING UserQueries;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;删除负载组&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;drop&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt; DailyExecReports&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;分类器函数：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;分类器函数将接入的会话分类，并为会话的请求和查询分配一个负载组。你可以根据连接串中的任意属性（IP地址/应用程序名、用户名等）分别分配组。&lt;/p&gt;&lt;p&gt;按以下条件分配组：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; 一个用户接入并使用SAP_Login登录名，则为他分配SAPUsers负载组；&lt;/li&gt;&lt;li&gt;&amp;nbsp; 一个用户接入程序名是SSMS，则让它成为AdhocAdmin负载组的一员；&lt;/li&gt;&lt;li&gt;&amp;nbsp; 一个用户是ReportUsers组一员，则让它成为DaliyExecReports负载组一员；&lt;/li&gt;&lt;li&gt;&amp;nbsp; 一个用户以共享内存连接，并在NightlyAdmin用户组中，则分配NightlyMaintanceTask组。&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建资源池&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool AdminQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool UserQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建负载组&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt;&lt;span style="color: #000000;"&gt; NightlyMaintenanceTasks USING AdminQueries;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt;&lt;span style="color: #000000;"&gt; AdhocAdmin USING AdminQueries;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt;&lt;span style="color: #000000;"&gt; SAPUsers USING UserQueries;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; WorkLoad &lt;span style="color: #0000ff;"&gt;Group&lt;/span&gt;&lt;span style="color: #000000;"&gt; DailyExecReports USING UserQueries;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建分类器函数&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; master&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FUNCTION&lt;/span&gt;&lt;span style="color: #000000;"&gt; class_func_1()&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Returns&lt;/span&gt; sysname &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;&lt;span style="color: #000000;"&gt; schemabinding&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;Declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt; sysname&lt;br/&gt;      &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Handle workload groups defined by login names&lt;/span&gt;&lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;SUSER_SNAME&lt;/span&gt;()&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;SAP_Login&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;          &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;SAPUsers&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;          &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Return&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;APP_NAME&lt;/span&gt;() &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Microsoft SQL Server Management Studio%&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;          &lt;span style="color: #0000ff;"&gt;Set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;AdhocAdmin&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;          &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Return&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;      &lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;IS_MEMBER&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ReportUsers&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;          &lt;span style="color: #0000ff;"&gt;Set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;DailyExecReports&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;          &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Return&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; CONNECTIONPROPERTY(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;net_transport&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Shared memory&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;IS_MEMBER&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;NightlyAdmin&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;          &lt;span style="color: #0000ff;"&gt;Set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;NightlyMaintenanceTasks&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;          &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Return&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;Return&lt;/span&gt; &lt;span style="color: #008000;"&gt;@val&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;p&gt;绑定分类器函数：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;将分类器函数绑定到资源调控器上&lt;/span&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;Alter&lt;/span&gt; Resource Governor &lt;span style="color: #0000ff;"&gt;With&lt;/span&gt;(Classifier_Function&lt;span style="color: #808080;"&gt;=&lt;/span&gt;dbo.class_func_1);&lt;/div&gt;&lt;p&gt;启用和禁用分类器函数：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;启用&lt;/span&gt;&lt;br/&gt; &lt;span style="color: #0000ff;"&gt;ALter&lt;/span&gt; Resource Governor &lt;span style="color: #0000ff;"&gt;Reconfigure&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;禁用&lt;/span&gt;&lt;br/&gt; &lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; RESOURCE GOVERNOR DISABLE;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;测试：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;现在我们分别使用SAP_Login和sysadmin用户调用此脚本&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;测试脚本(分别使用SAP_Login和sysadmin用户调用此脚本）&lt;/span&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; &lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;Declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@i&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000000&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;  &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@s&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;   &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;While&lt;/span&gt; &lt;span style="color: #008000;"&gt;@i&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br/&gt;   &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;Select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@s&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@VERSION&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; sys.sysobjects &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@i&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@i&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;   &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;通过性能计数器查看资源分配：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;我们可以选择性能计数器的资源统计：SQL Server:Resource Pools Stats;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012050721242970.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;我们先将资源池按一比一的比例分配：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool AdminQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool UserQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;)&lt;/div&gt;&lt;p&gt;&amp;nbsp;运行测试脚本，显示的CPU利用率图如下&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012050721265633.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;现在将资源分配做如下调整：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool AdminQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; Resource Pool UserQueries &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(max_cpu_percent&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;90&lt;/span&gt;)&lt;/div&gt;&lt;p&gt;&amp;nbsp;再次运行测试脚本，显示的CPU利用率图如下&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012050721301657.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;可以看到，当我们调整资源后，两个Session中运行同样的脚本，它们所使用的资源差别很大，这样就达到了根据不同的应用分配不同的资源的目的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DMV查看资源池：&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;查看Session所在的资源池&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.session_id,s.login_name ,s.program_name,s.group_id,g.name &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    sys.dm_exec_sessions s &lt;/span&gt;&lt;span style="color: #808080;"&gt;join&lt;/span&gt;&lt;span style="color: #000000;"&gt; sys.dm_resource_governor_workload_groups g&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.group_id&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;g.group_id&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; session_id&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;查看资源池情况&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_resource_governor_resource_pools&lt;/div&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012050721332631.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;可以看到，我们创建的两个资源池（还有两个是系统资源池和默认资源池），而且不同的Session对应到了不同的资源池中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2489190.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/05/07/2489190.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/04/28/2475340.html</id><title type="text">SQL Server dump 介绍（转载）</title><summary type="text">转储的英文单词是dump，但这边我们说的dump不是SQL Server本身的DUMP备份命令，而是指通过sqldumper.exe中的dump。那什么是dump呢，dump指的是将某种内容转换为另外一种更具可读性的方式。在ORACLE中，有专门的dump命令可以dump出数据文件等的内容，其trace也相当于另外一种dump。通过dump，我们便可以了解整个系统的运行原理。SQL Server这方面的资料很少，当然，这也符合了微软不开源的策略。不过这几年来，关于这方面的资料比较多了，通过google可以获得相关的内容。最早对此感兴趣的是碰到了很多人经常问的.mdmp文件，mdmp的叫min.</summary><published>2012-04-28T08:17:00Z</published><updated>2012-04-28T08:17:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/04/28/2475340.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/04/28/2475340.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 转储的英文单词是dump，但这边我们说的dump不是SQL Server本身的DUMP备份命令，而是指通过sqldumper.exe中的dump。那什么是dump呢，dump指的是将某种&lt;/p&gt;&lt;p&gt;内容转换为另外一种更具可读性的方式。在ORACLE中，有专门的dump命令可以dump出数据文件等的内容，其trace也相当于另外一种dump。通过dump，我们便可以了解&lt;/p&gt;&lt;p&gt;整个系统的运行原理。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQL Server这方面的资料很少，当然，这也符合了微软不开源的策略。不过这几年来，关于这方面的资料比较多了，通过google可以获得相关的内容。&lt;br /&gt;&lt;br /&gt;最早对此感兴趣的是碰到了很多人经常问的.mdmp文件，mdmp的叫mini dmp，也可以叫memory dmp，这是由于SQL Server 在运行过程中，遇到了一些bug或者错误而进行&lt;/p&gt;&lt;p&gt;转储以便记录出错信息的文件。一般对这类文件的处理，都是建议打包后提交给微软分析的。在无法获得微软帮助的情况，就需要自己对此类文件进行分析了，然后找出问题原因，&lt;/p&gt;&lt;p&gt;从而进行解决。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;一、SQLDumper.exe介绍&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;前面介绍了SQL Server 会在运行时自动产生一些dump文件，我们也可以手工产生dump文件，产生dump文件的方式，就是通过Sqldumper来进行的。&lt;br /&gt;&lt;br /&gt;自 SQL Server 2000 Service Pack 3 (SP3) 起，Microsoft SQL Server 2000 中开始附带 Sqldumper.exe。Sqldumper.exe 可根据任一 Microsoft Windows 应用程序的&lt;/p&gt;&lt;p&gt;需要生成转储文件。Sqldumper.exe不仅可以转储SQL Server，还可以转储其他的windows application。&lt;br /&gt;&lt;br /&gt;我使用的环境是SQL Server 2008，因此SQLDumper位于C:\Program Files\Microsoft SQL Server\100\Shared下，我们可以运行SQLDumper /? 查看其使用方法&lt;br /&gt;&lt;br /&gt;C:\Program Files\Microsoft SQL Server\100\Shared&amp;gt;SqlDumper.exe /?&lt;br /&gt;Usage: SqlDumper.exe [ProcessID [ThreadId [Flags[:MiniDumpFlags] [SqlInfoPtr [DumpDir [ExceptionRecordPtr [ContextPtr [E&lt;br /&gt;xtraFile]]]]]]]] [-I&amp;lt;InstanceName&amp;gt;] [-S&amp;lt;ServiceName&amp;gt;][-remoteservers:[print|dump|freeze|resume|remote:guid\dumporigin\si&lt;br /&gt;gnature\localId\port\operationType]]&lt;br /&gt;&amp;nbsp; Flags:&lt;br /&gt;&amp;nbsp; dbgbreak = 0x0001&lt;br /&gt;&amp;nbsp; nominidump = 0x0002&lt;br /&gt;&amp;nbsp; validate_image = 0x0004&lt;br /&gt;&amp;nbsp; referenced_memory = 0x0008&lt;br /&gt;&amp;nbsp; all_memory = 0x0010&lt;br /&gt;&amp;nbsp; dump_all_threads = 0x0020&lt;br /&gt;&amp;nbsp; match_file_name = 0x0040&lt;br /&gt;&amp;nbsp; no_longer_used_flag = 0x0080&lt;br /&gt;&amp;nbsp; verbose = 0x0100&lt;br /&gt;&amp;nbsp; wait_at_exit = 0x0200&lt;br /&gt;&amp;nbsp; send_to_watson = 0x0400&lt;br /&gt;&amp;nbsp; defaultflags = 0x0800&lt;br /&gt;&amp;nbsp; maximumdump = 0x1000&lt;br /&gt;&amp;nbsp; mini_and_maxdump = 0x2000&lt;br /&gt;&amp;nbsp; force_send_to_watson= 0x4000&lt;br /&gt;&amp;nbsp; full_filtered_dump = 0x8000&lt;br /&gt;&lt;br /&gt;&amp;nbsp; MiniDumpFlags:&lt;br /&gt;&amp;nbsp; Normal = 0x0000&lt;br /&gt;&amp;nbsp; WithDataSegs = 0x0001&lt;br /&gt;&amp;nbsp; WithFullMemory = 0x0002&lt;br /&gt;&amp;nbsp; WithHandleData = 0x0004&lt;br /&gt;&amp;nbsp; FilterMemory = 0x0008&lt;br /&gt;&amp;nbsp; ScanMemory = 0x0010&lt;br /&gt;&amp;nbsp; WithUnloadedModules = 0x0020&lt;br /&gt;&amp;nbsp; WithIndirectlyReferencedMemory = 0x0040&lt;br /&gt;&amp;nbsp; FilterModulePaths = 0x0080&lt;br /&gt;&amp;nbsp; WithProcessThreadData = 0x0100&lt;br /&gt;&amp;nbsp; WithPrivateReadWriteMemory = 0x0200&lt;br /&gt;&amp;nbsp; WithoutOptionalData = 0x0400&lt;br /&gt;&amp;nbsp; WithFullMemoryInfo = 0x0800&lt;br /&gt;&amp;nbsp; WithThreadInfo = 0x1000&lt;br /&gt;&lt;br /&gt;从上面的命令可以看出，要想对某一application进行dump，需要先找出其pid(processes id)，然后加上一些Flags的控制标识来控制dump内容。&lt;br /&gt;&lt;br /&gt;比如，我现在想对我的SQL Server 进行dump，先找到SQL Server 的pid 为900，想dump所有的内存信息，那就可以用下面的命令来进行：&lt;br /&gt;C:\Program Files\Microsoft SQL Server\100\Shared&amp;gt;SqlDumper.exe 900 0x0010&lt;br /&gt;其中，0x0010 表示all_memory，这样，在C:\Program Files\Microsoft SQL Server\100\Shared目录下会产生SQLDmprnnn.mdmp的文件，这就是转储文件(.mdmp)。&lt;br /&gt;&lt;br /&gt;以下是几个比较常见的dump 标识：&lt;br /&gt;&lt;br /&gt;0x0120 - Minidump，这个flag只dump 一个Process的堆栈和载入模块的信息，这是最小的转储方式，也是SQL Server自动产生dump文件的方式。&lt;br /&gt;&lt;br /&gt;0x01100 &amp;ndash; Full Dump，这个flag会转储Process的整块信息，如果在64位的系统上，其文件大小还是很大的。&lt;br /&gt;&lt;br /&gt;0x8100 &amp;ndash; Filtered Dump,这个flag用来转储用于于其他服务器用途（包括过程缓存）的内存信息&lt;br /&gt;&lt;br /&gt;二、SQL Server方式的DUMP&lt;br /&gt;&lt;br /&gt;使用Sqldumper只是手工产生dump文件的一种方式，当然，产生dmp文件的方式还是很多的，SQL Server内部也提供了这样的工具。主要是DBCC STACKDUMP 和dbcc dumptrigger 这&lt;br /&gt;&lt;br /&gt;两个命令。当然还可以通过TraceFlag来控制是否产生dmp文件或者遇到什么错误时才产生文件。比如，我们想产生一个Full Dump，必须打开Trace Flag 2544 和 2546&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceon(&lt;span style="color: #800000; font-weight: bold;"&gt;2544&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceon(&lt;span style="color: #800000; font-weight: bold;"&gt;2546&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; stackdump&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;如果想让SQL Server 只针对 某个错误而产生转储文件，可以使用dbcc dumptrigger，下面是一个例子&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceon(&lt;span style="color: #800000; font-weight: bold;"&gt;2544&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceon(&lt;span style="color: #800000; font-weight: bold;"&gt;2546&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;设置dump的触发器为错误802&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; dumptrigger(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;set&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;802&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 查看当期的dump触发器内容&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceon(&lt;span style="color: #800000; font-weight: bold;"&gt;3604&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; dumptrigger(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;display&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; traceoff(&lt;span style="color: #800000; font-weight: bold;"&gt;3604&lt;/span&gt;, &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 关闭当期的dump触发器。&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;dbcc&lt;/span&gt; dumptrigger(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;clear&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;802&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;span&gt;网上有听说可以使用2542 Trace Flag 来控制mdmp文件的产生，至今仍没有去试，有试过的朋友可以分享下。启用2542 TF，在启动参数后面添加 -T2542就是了。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;三、分析mdmp文件的一些知识说明&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;以上只是介绍了mdmp的产生，以及如何自己手工产生mdmp文件，但如何对mdmp文件进行分析才是重点。曾经对其进行了一些分析，但道行有限，能获得的信息不多。把如何分析&lt;br /&gt;&lt;br /&gt;mdmp文件的过程分享出来，希望更厉害的人能从中找到一些SQL Server的运行原理。&lt;br /&gt;&lt;br /&gt;说到分析mdmp文件，也顺便提一个人，就是The guru guide系列的作者Ken Henderson(&lt;a title="http://www.amazon.com/Ken-Henderson/e/B001IOFJL2/ref=ntt_athr_dp_pel_pop_1" href="http://www.amazon.com/Ken-Henderson/e/B001IOFJL2/ref=ntt_athr_dp_pel_pop_1" target="_blank"&gt;http://www.amazon.com/Ken-Henderson/e/B001IOFJL2/ref=ntt_athr_dp_pel_pop_1&lt;/a&gt;)，他的&lt;br /&gt;&lt;br /&gt;《The Guru's Guide to Transact-SQL》 就是中文版的《T-SQL权威指南》，其他的两本貌似没有找到中文版。他在Guru Guide 里面常常会介绍一些微软未公开的内容&lt;br /&gt;&lt;br /&gt;(undocument commands)，而《The Guru's Guide to SQL Server Architecture and Internals》&lt;br /&gt;就是介绍了SQL Server 2000的体系结构很是深入的一本书。可惜其在2008年已经英年早逝了(&lt;a title="http://sqlblog.com/blogs/kalen_delaney/archive/2008/01/29/ken-henderson.aspx" href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/01/29/ken-henderson.aspx" target="_blank"&gt;http://sqlblog.com/blogs/kalen_delaney/archive/2008/01/29/ken-henderson.aspx&lt;/a&gt;)，不然肯定能够提供更多关于SQL Server Interal的内容了。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;1，调试&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;由于SQL Server 也是在windows平台是运行的一款程序，有问题时，把它当成一款普通的windows程序来进行调试就行了。在windows上，有两方面的调试，一个是内核模式调试，&lt;br /&gt;&lt;br /&gt;一个是用户模式调试。内核调试是针对Windows操作系统进行调试的，反应windows OS内部和硬件设备的运行。用户模式的调试就是对应用程序进行调试，因为应用程序就是运行在&lt;br /&gt;&lt;br /&gt;用户模式上的。二者的调试是不同的，这边就不做过多的介绍，有疑问，就google吧。&lt;br /&gt;&lt;br /&gt;调试还有另外一个区别：是在程序运行时对其调试(live-debugging)，还是读取mdmp分析调试(post-mortem debugging)。这二者也是不一样的。在live-debugging时会使程序挂起&lt;br /&gt;&lt;br /&gt;，然后设置bp(break point)，观察程序的运行行为。这边主要介绍post-mortem debugging.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;2，windbg&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;要调试，当然得有工具，这个工具就是windbg，其主页为：&lt;br /&gt;&lt;br /&gt;http://www.microsoft.com/whdc/devtools/debugging/default.mspx&lt;br /&gt;&lt;br /&gt;安装完成后，除了有图形界面的调试工具(windbg)，还会有命令行的调试工具(kd,cdb,ntsd)。&lt;br /&gt;&lt;br /&gt;在调试过程中，我们最常见的是分析线程(thread)的堆栈(stack)的跟踪信息。因为在windows平台上，application是以process来运行的，而一个process又包含了thread，thread&lt;br /&gt;&lt;br /&gt;才是真正在运行一些函数功能。我们可以通过select spid,kpid from sysprocesses 来看运行SQL Server的线程信息，也可以通ProcessExplorer&lt;br /&gt;spidd kpid&lt;br /&gt;------ ------&lt;br /&gt;51 0&lt;br /&gt;52 644&lt;br /&gt;&lt;br /&gt;在ProcessExplorer里的查看如下，可以看到ProcessExplorer就提供了查看堆栈的功能，但仍有一些像 10 sqlservr.exe+0x58d36b的内容无法查看。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042816183050.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;从上图可以看到，stack的内容格式一般如下：&lt;br /&gt;&lt;br /&gt;MyModule!Func03&amp;nbsp;&amp;nbsp;&lt;br /&gt;MyModule!Func01&lt;br /&gt;&lt;br /&gt;从底往上看，Func03是在Func01之后执行的。通过windbg，还会看到一些指针信息(Child-sp：Stack Pointer)和地址信息(RetAddr：Return Address)&lt;br /&gt;&lt;br /&gt;Child-SP RetAddr Call Site&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbe9e8 00000000`777b2f60 ntdll!NtSignalAndWaitForSingleObject+0xa&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbe9f0 00000000`00bdc99e kernel32!SignalObjectAndWait+0x110&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbeaa0 00000000`00bc4575 sqlservr+0x1c99e&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbed40 00000000`00bc3ea8 sqlservr+0x4575&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbed80 00000000`00bdcfad sqlservr+0x3ea8&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf370 00000000`01139d9c sqlservr+0x1cfad&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf430 00000000`032b34c7 sqlservr+0x579d9c&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf650 00000000`00bd2abb sqlservr!TlsGetValueForMsxmlSQL+0x4706d7&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf6c0 00000000`00bd0fda sqlservr+0x12abb&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf7e0 00000000`00bd2665 sqlservr+0x10fda&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf870 00000000`0117abb0 sqlservr+0x12665&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf8e0 00000000`0117c4b0 sqlservr+0x5babb0&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf9a0 00000000`0117a060 sqlservr+0x5bc4b0&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf9d0 00000000`0117a9ef sqlservr+0x5ba060&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfa60 00000000`734937d7 sqlservr+0x5ba9ef&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfaf0 00000000`73493894 MSVCR80!endthreadex+0x47&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb20 00000000`7775f56d MSVCR80!endthreadex+0x104&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb50 00000000`77893281 kernel32!BaseThreadInitThunk+0xd&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb80 00000000`00000000 ntdll!RtlUserThreadStart+0x21&lt;br /&gt;&lt;br /&gt;要看sqlservr+0x579d9c 这样的内容，需要使用symbol来map这些16进制的值所表示的函数。使用symbol后，会得到下面的形式的内容。&lt;br /&gt;&lt;br /&gt;Child-SP RetAddr Call Site&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbe9e8 00000000`777b2f60 ntdll!NtSignalAndWaitForSingleObject+0xa&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbe9f0 00000000`00bdc99e kernel32!SignalObjectAndWait+0x110&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbeaa0 00000000`00bc4575 sqlservr!SOS_Scheduler::SwitchContext+0x84e&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbed40 00000000`00bc3ea8 sqlservr!SOS_Scheduler::SuspendNonPreemptive+0xc5&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbed80 00000000`00bdcfad sqlservr!EventInternal&amp;lt;Spinlock&amp;lt;149,1,0&amp;gt; &amp;gt;::Wait+0x428&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf370 00000000`01139d9c sqlservr!ResQueueBase::Dequeue+0x19d&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span&gt;00000000`09cbf430 00000000`032b34c7 sqlservr!CheckpointLoop+0x1aa&amp;nbsp;&lt;/span&gt;&lt;br /&gt;00000000`09cbf650 00000000`00bd2abb sqlservr!ckptproc+0x47&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf6c0 00000000`00bd0fda sqlservr!SOS_Task::Param::Execute+0x11b&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf7e0 00000000`00bd2665 sqlservr!SOS_Scheduler::RunTask+0xca&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf870 00000000`0117abb0 sqlservr!SOS_Scheduler::ProcessTasks+0x95&lt;br /&gt;00000000`09cbf8e0 00000000`0117c4b0 sqlservr!SchedulerManager::WorkerEntryPoint+0x110&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf9a0 00000000`0117a060 sqlservr!SystemThread::RunWorker+0x60&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbf9d0 00000000`0117a9ef sqlservr!SystemThreadDispatcher::ProcessWorker+0x12c&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfa60 00000000`734937d7 sqlservr!SchedulerManager::ThreadEntryPoint+0x12f&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfaf0 00000000`73493894 MSVCR80!endthreadex+0x47&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb20 00000000`7775f56d MSVCR80!endthreadex+0x104&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb50 00000000`77893281 kernel32!BaseThreadInitThunk+0xd&amp;nbsp;&amp;nbsp;&lt;br /&gt;00000000`09cbfb80 00000000`00000000 ntdll!RtlUserThreadStart+0x21&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在这个例子中，我们发现有sqlservr!CheckpointLoop+0x1aa 这个函数调用的信息，这就是我们说的checkpoint的实际运行信息了。通过select * from sys.dm_exec_requests&lt;br /&gt;可以看出是哪个spid在运行checkpoint。&lt;br /&gt;&lt;br /&gt;从上面也可以看出Call Site的格式一般如下：&lt;br /&gt;&amp;lt;module_name&amp;gt;!&amp;lt;function call&amp;gt;&lt;br /&gt;&amp;lt;module_name&amp;gt;!&amp;lt;class_name&amp;gt;::&amp;lt;method/function call&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、使用windbg&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;在了解上述知识后，就可以使用windbg来进行分析了。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;1，windbg环境的配置&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;到微软的网站下载windbg后直接安装，安装完成后，需要配置symbols的path，打开windbg，File --&amp;gt; Symbols File Path 在弹出的对话框输入&lt;br /&gt;&lt;br /&gt;srv*c:\symbols*http://msdl.microsoft.com/download/symbols&lt;br /&gt;&lt;br /&gt;其中c:\symbols是本地硬盘的文件夹，在使用时，windbg会到http://msdl.microsoft.com/download/symbols下载相关的symbols，也可以自己手工下载相关操作系统的symbols。&lt;br /&gt;&lt;br /&gt;配置好，可以使用.reload命令来强制下载某个symbols，如：&lt;br /&gt;&lt;br /&gt;.reload /f sqlservr.exe&lt;br /&gt;&lt;br /&gt;具体的命令可以参考windbg的帮助文档。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;2，打开mdmp文件&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;打开windbg，File --&amp;gt; Open Crash Dump，选择mdump文件，在弹出的对话框里点击yes&lt;br /&gt;&lt;br /&gt;&lt;em&gt;3，分析mdmp&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;在下面的对话框输入 ~ 会出现线程的信息&lt;br /&gt;&lt;br /&gt;0:000&amp;gt; ~&lt;br /&gt;. 0 Id: 384.608 Suspend: 1 Teb: 7ffdd000 Unfrozen&lt;br /&gt;&amp;nbsp; 1 Id: 384.698 Suspend: 1 Teb: 7ffda000 Unfrozen&lt;br /&gt;&amp;nbsp; 2 Id: 384.6a8 Suspend: 1 Teb: 7ffd9000 Unfrozen&lt;br /&gt;&amp;nbsp; 3 Id: 384.6a4 Suspend: 1 Teb: 7ffd8000 Unfrozen&lt;br /&gt;&amp;nbsp; 4 Id: 384.6b0 Suspend: 1 Teb: 7ffd7000 Unfrozen&lt;br /&gt;&amp;nbsp; 5 Id: 384.6ac Suspend: 1 Teb: 7ffd6000 Unfrozen&lt;br /&gt;&amp;nbsp; 6 Id: 384.6c8 Suspend: 1 Teb: 7ffd5000 Unfrozen&lt;br /&gt;&amp;nbsp; 7 Id: 384.6dc Suspend: 1 Teb: 7ffd4000 Unfrozen&lt;br /&gt;&amp;nbsp; 8 Id: 384.6e0 Suspend: 1 Teb: 7ffd3000 Unfrozen&lt;br /&gt;&amp;nbsp; 9 Id: 384.108 Suspend: 1 Teb: 7ff9f000 Unfrozen&lt;br /&gt;&amp;nbsp; 10 Id: 384.6e8 Suspend: 1 Teb: 7ff9e000 Unfrozen&lt;br /&gt;&amp;nbsp; 11 Id: 384.6e4 Suspend: 1 Teb: 7ff9d000 Unfrozen&lt;br /&gt;&amp;nbsp; 12 Id: 384.604 Suspend: 1 Teb: 7ff9c000 Unfrozen&lt;br /&gt;&amp;nbsp; 13 Id: 384.714 Suspend: 1 Teb: 7ff9b000 Unfrozen&lt;br /&gt;&amp;nbsp; 14 Id: 384.718 Suspend: 1 Teb: 7ff9a000 Unfrozen&lt;br /&gt;&amp;nbsp; 15 Id: 384.71c Suspend: 1 Teb: 7ff99000 Unfrozen&lt;br /&gt;&amp;nbsp; 16 Id: 384.720 Suspend: 1 Teb: 7ff98000 Unfrozen&lt;br /&gt;&amp;nbsp; 17 Id: 384.728 Suspend: 1 Teb: 7ffdc000 Unfrozen&lt;br /&gt;&amp;nbsp; 18 Id: 384.730 Suspend: 1 Teb: 7ff97000 Unfrozen&lt;br /&gt;&amp;nbsp; 19 Id: 384.74c Suspend: 1 Teb: 7ff96000 Unfrozen&lt;br /&gt;&amp;nbsp; 20 Id: 384.784 Suspend: 1 Teb: 7ff95000 Unfrozen&lt;br /&gt;&amp;nbsp; 21 Id: 384.788 Suspend: 1 Teb: 7ff94000 Unfrozen&lt;br /&gt;&amp;nbsp; 22 Id: 384.1e0 Suspend: 1 Teb: 7ff93000 Unfrozen&lt;br /&gt;&amp;nbsp; 23 Id: 384.284 Suspend: 1 Teb: 7ff92000 Unfrozen&lt;br /&gt;&amp;nbsp; 24 Id: 384.280 Suspend: 1 Teb: 7ff91000 Unfrozen&lt;br /&gt;&amp;nbsp; 25 Id: 384.23c Suspend: 1 Teb: 7ff8f000 Unfrozen&lt;br /&gt;&amp;nbsp; 26 Id: 384.3d0 Suspend: 1 Teb: 7ff8e000 Unfrozen&lt;br /&gt;&amp;nbsp; 27 Id: 384.3d4 Suspend: 1 Teb: 7ff8d000 Unfrozen&lt;br /&gt;&amp;nbsp; 28 Id: 384.3d8 Suspend: 1 Teb: 7ff8c000 Unfrozen&lt;br /&gt;&amp;nbsp; 29 Id: 384.204 Suspend: 1 Teb: 7ff8b000 Unfrozen&lt;br /&gt;&amp;nbsp; 30 Id: 384.43c Suspend: 1 Teb: 7ff8a000 Unfrozen&lt;br /&gt;&amp;nbsp; 31 Id: 384.450 Suspend: 1 Teb: 7ff89000 Unfrozen&lt;br /&gt;&amp;nbsp; 32 Id: 384.454 Suspend: 1 Teb: 7ff88000 Unfrozen&lt;br /&gt;&amp;nbsp; 33 Id: 384.458 Suspend: 1 Teb: 7ff87000 Unfrozen&lt;br /&gt;&amp;nbsp; 34 Id: 384.45c Suspend: 1 Teb: 7ff86000 Unfrozen&lt;br /&gt;&amp;nbsp; 35 Id: 384.464 Suspend: 1 Teb: 7ff84000 Unfrozen&lt;br /&gt;&amp;nbsp; 36 Id: 384.44c Suspend: 1 Teb: 7ff83000 Unfrozen&lt;br /&gt;&amp;nbsp; 37 Id:&amp;nbsp;&lt;span&gt;384.1e8&lt;/span&gt;&amp;nbsp;Suspend: 1 Teb: 7ffdb000 Unfrozen&lt;br /&gt;&amp;nbsp; 38 Id: 384.1cc Suspend: 1 Teb: 7ff82000 Unfrozen&lt;br /&gt;&amp;nbsp; 39 Id: 384.1684 Suspend: 1 Teb: 7ff80000 Unfrozen&lt;br /&gt;&amp;nbsp; 40 Id: 384.c38 Suspend: 1 Teb: 7ff90000 Unfrozen&lt;br /&gt;&amp;nbsp; 41 Id: 384.1048 Suspend: 1 Teb: 7ff85000 Unfrozen&lt;br /&gt;&amp;nbsp; 42 Id: 384.140c Suspend: 1 Teb: 7ff7f000 Unfrozen&lt;br /&gt;&amp;nbsp; 43 Id: 384.a18 Suspend: 1 Teb: 7ff81000 Unfrozen&lt;br /&gt;&lt;br /&gt;在我的这个例子中，我的spid在循环运行一个select命令，从sysprocesses中，可以看到spid对应的kpid是488&lt;br /&gt;&lt;br /&gt;spid kpid&lt;br /&gt;51 0&lt;br /&gt;52 488&lt;br /&gt;&lt;br /&gt;488转化为16进制刚好为1e8 ，对应的序号是37。&lt;br /&gt;&lt;br /&gt;那我们如果想看线程37的内容，可以先使用 ~37s命令切换到线程37的上下文中&lt;br /&gt;&lt;br /&gt;0:000&amp;gt; ~37s&lt;br /&gt;eax=00000000 ebx=3f20f344 ecx=1f8dcf08 edx=00000001 esi=000009b5 edi=00000000&lt;br /&gt;eip=7c92e514 esp=3f20f238 ebp=3f20f29c iopl=0 nv up ei ng nz ac pe cy&lt;br /&gt;cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000297&lt;br /&gt;ntdll!KiFastSystemCallRet:&lt;br /&gt;7c92e514 c3 ret&lt;br /&gt;&lt;br /&gt;看起来是CPU的寄存器信息，可惜这些还看不太懂，不然可以更深入了。&lt;br /&gt;&lt;br /&gt;接着用k命令，查看具体的函数调用信息&lt;br /&gt;&lt;br /&gt;0:037&amp;gt; k&lt;br /&gt;ChildEBP RetAddr &amp;nbsp;&amp;nbsp;&lt;br /&gt;3f20f234 7c92df5a ntdll!KiFastSystemCallRet&lt;br /&gt;3f20f238 7c8025db ntdll!ZwWaitForSingleObject+0xc&lt;br /&gt;3f20f29c 7c802542 kernel32!WaitForSingleObjectEx+0xa8&lt;br /&gt;3f20f2b0 011e7ced kernel32!WaitForSingleObject+0x12&lt;br /&gt;3f20f324 011e7ddb sqlservr!Np::StatusWriteNoComplPort+0x9f&lt;br /&gt;&lt;span&gt;3f20f354 011e7ea2 sqlservr!SNIStatusWriteNoComplPort+0x82&lt;br /&gt;3f20f374 012a8ae0 sqlservr!TDSSNIClient::WriteStatus+0x6a&lt;br /&gt;3f20f4a0 0153d30c sqlservr!write_data+0x1a6&lt;br /&gt;3f20f4d0 0117492e sqlservr!flush_buffer+0xdf&lt;/span&gt;&lt;br /&gt;3f20f6a0 015490b6 sqlservr!CKatmaiTds::SendRowImpl+0x2faf&lt;br /&gt;3f20f6ac 01532f0d sqlservr!CValOdsRow::SetDataX+0x29&lt;br /&gt;3f20f6bc 01532d8b sqlservr!SetMultData+0x1e&lt;br /&gt;3f20f734 0154962f sqlservr!CEs::GeneralEval4+0xd0&lt;br /&gt;3f20f740 01547825 sqlservr!CEs::Eval+0x13&lt;br /&gt;&lt;span&gt;3f20f7f8 015499af sqlservr!CXStmtQuery::ErsqExecuteQuery+0x409&lt;br /&gt;3f20f85c 015401c3 sqlservr!CXStmtSelect::XretExecute+0x268&lt;br /&gt;3f20f8f8 01540cc0 sqlservr!CMsqlExecContext::ExecuteStmts&amp;lt;1,1&amp;gt;+0x28d&lt;br /&gt;3f20f9e0 01540686 sqlservr!CMsqlExecContext::FExecute+0x70e&lt;/span&gt;&lt;br /&gt;3f20fa84 0153cf8c sqlservr!CSQLSource::Execute+0x598&lt;br /&gt;3f20fc08 01539f79 sqlservr!process_request+0x2f0&lt;br /&gt;&lt;br /&gt;从下面的内容，可以看出几点(个人观点:) )&lt;br /&gt;&lt;br /&gt;3f20f354 011e7ea2 sqlservr!SNIStatusWriteNoComplPort+0x82&lt;br /&gt;3f20f374 012a8ae0 sqlservr!TDSSNIClient::WriteStatus+0x6a&lt;br /&gt;3f20f4a0 0153d30c sqlservr!write_data+0x1a6&lt;br /&gt;3f20f4d0 0117492e sqlservr!flush_buffer+0xdf&lt;br /&gt;&lt;br /&gt;3f20f7f8 015499af sqlservr!CXStmtQuery::ErsqExecuteQuery+0x409&lt;br /&gt;3f20f85c 015401c3 sqlservr!CXStmtSelect::XretExecute+0x268&lt;br /&gt;3f20f8f8 01540cc0 sqlservr!CMsqlExecContext::ExecuteStmts&amp;lt;1,1&amp;gt;+0x28d&lt;br /&gt;3f20f9e0 01540686 sqlservr!CMsqlExecContext::FExecute+0x70e&lt;br /&gt;&lt;br /&gt;从底往上看，可以看到这是一个select动作，进行select时，先对内存的一些缓存进行清除(flush_buffer)，接着便是写入数据(write_data),然后再发送写状态(TDSSNIClient::WriteStatus),由于一直循环所以会有写未完成的提示(SNIStatusWriteNoComplPort)。这也基本符合一个select的动作。&lt;br /&gt;&lt;br /&gt;如果遇到错误时，在函数调用中一般会抛出raiseerror等内容，类似如下：&lt;br /&gt;&lt;br /&gt;00000000`220ce2d0 00000000`013a3d41 sqlservr!ex_raise2+0xcdd8bf&lt;br /&gt;&lt;br /&gt;00000000`220ce630 00000000`02deb8ce sqlservr!ex_raise+0x51&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;这时，基本可以判断出现问题的原因了。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;3，其他&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;windbg的功能是很强大的，是通往sql server内部一个强大工具。要想了解的话，估计得好好研究下&amp;lt;windows internal&amp;gt;，有兴趣的可以自行深入。&lt;/p&gt;&lt;p&gt;&lt;a href="http://topic.csdn.net/u/20101024/16/48C19360-5E68-4A59-BD39-0FFEE8157E45.html"&gt;http://topic.csdn.net/u/20101024/16/48C19360-5E68-4A59-BD39-0FFEE8157E45.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2475340.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/04/28/2475340.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/04/25/2469563.html</id><title type="text">SQLServerDBA十大必备工具---让生活轻松点</title><summary type="text">曾经和一些DBA和数据库开发人员交流时，问他们都用过一些什么样的DB方面的工具，大部分人除了SSMS和Profile之外，基本就没有使用过其他工具了；诚然，SSMS和Profile足够强大，工作的大部分内容都能通过它们搞定，但是MS、第三方公司甚至是个人开发者为SQLServer提供了很多其他的工具，如果你能充分的掌握这些工具，无疑会给我们数据库的管理、优化、测试和排错节省大量的时间和精力，下面就来介绍除SSMS和Profile之外的其他有用的工具。NO1: PD（PowerDesigner）功能：SysBase公司提供的数据库设计工具，功能很强大，是做数据库设计时必备的工具；下载：http.</summary><published>2012-04-25T04:14:00Z</published><updated>2012-04-25T04:14:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/04/25/2469563.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/04/25/2469563.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;曾经和一些DBA和数据库开发人员交流时，问他们都用过一些什么样的DB方面的工具，大部分人除了SSMS和Profile之外，基本就没有使用过其他工具了；&lt;/p&gt;&lt;p&gt;诚然，SSMS和Profile足够强大，工作的大部分内容都能通过它们搞定，但是MS、第三方公司甚至是个人开发者为SQLServer提供了很多其他的工具，如果你&lt;/p&gt;&lt;p&gt;能充分的掌握这些工具，无疑会给我们数据库的管理、优化、测试和排错节省大量的时间和精力，下面就来介绍除SSMS和Profile之外的其他有用的工具。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO1: &lt;/strong&gt;&lt;strong&gt;PD&lt;/strong&gt;&lt;strong&gt;（PowerDesigner）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：SysBase公司提供的数据库设计工具，功能很强大，是做数据库设计时必备的工具；&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://www.3ddown.com/soft/14524.htm"&gt;http://www.3ddown.com/soft/14524.htm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512060640.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO2:&lt;/strong&gt;&lt;strong&gt; Log Explorer&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：数据库日志读取工具，主要用来恢复误操作的数据（目前只支持到2005版本），详见：&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692.aspx"&gt;http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692.aspx&lt;/a&gt; ;&lt;/p&gt;&lt;p&gt;下载地址：&lt;a href="http://www.pc6.com/softview/SoftView_57657.html"&gt;http://www.pc6.com/softview/SoftView_57657.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512063710.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO3&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;Tuning Advisor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：优化顾问，会根据数据库的运行情况，提示您做相关的优化（可靠性不是太高，需要自行判断）;&lt;/p&gt;&lt;p&gt;下载：SQLServer自带&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512070181.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO4&lt;/strong&gt;&lt;strong&gt;：SSMSTools&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：SSMS工具的一个插件，能提供格式化代码、追溯历史等功能（通过它，也许你可以开发自己的插件）；&lt;/p&gt;&lt;p&gt;下载: &lt;a href="http://www.ssmstoolspack.com/"&gt;http://www.ssmstoolspack.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512072114.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO5: &lt;/strong&gt;&lt;strong&gt;DBDiff &amp;amp; TableDiff&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：第一个是比较两个数据库结构的差异，第二个可用来比较表中数据的差异（而且能生成相关的脚本）；&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://opendbiff.codeplex.com/"&gt;http://opendbiff.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512074062.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO6&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;PAL Tool&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：Performance Analysis of Logs，Perfmon日志分析工具；&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://pal.codeplex.com/"&gt;http://pal.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512075942.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512081246.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO7&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;RML&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：这个工具非常强大，下图展示了完成安装后它的四个主要功能组件；ReadTrace工具能读取数据库的Profile跟踪文件，并生成报告；Ostress能将ReadTrace&lt;/p&gt;&lt;p&gt;生成的文件重播，而且还可以对数据库做压力测试；ORCA能保证重报时，按照事件发生的顺序播放；Reporter能将ReadTrace后的内容通过报表的形式展现，相当&lt;/p&gt;&lt;p&gt;的有用。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512091564.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://support.microsoft.com/kb/944837"&gt;http://support.microsoft.com/kb/944837&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512093850.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO8&lt;/strong&gt;&lt;strong&gt;：SqlNexus&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：先通过SQLServer自带的SQLdiag.exe工具收集信息，然后再用SqlNexus分析这些信息，它是前面一些工具的整合，为数据库管理人员寻找SQLServer服务器&lt;/p&gt;&lt;p&gt;的性能瓶颈和排查故障提供了相当强大的支持（MS工程师很多都用这个哦，买技术支持的朋友们有木有经历过MS要求你开启SQLDiag，然后将收集的数据回传给他们&lt;/p&gt;&lt;p&gt;的；现场支持时，是不是也开启SQLDiag收集数据，然后就出来了服务器性能报告，有木有；所以掌握它，1k/时的定期服务器检查技术支持费用可以省了）；&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://sqlnexus.codeplex.com/"&gt;http://sqlnexus.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512100464.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512101519.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO9&lt;/strong&gt;&lt;strong&gt;：SQLIO &amp;amp; &lt;/strong&gt;&lt;strong&gt;SQLIOSim&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：磁盘IO压力测试工具，SQLIO主要是模拟随机或者顺序的方式来测试磁盘IO的性能；SQLIOSim是模拟SQLServer的行为来测试IO性能；&lt;/p&gt;&lt;p&gt;下载：&lt;a href="http://support.microsoft.com/kb/231619"&gt;http://support.microsoft.com/kb/231619&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512103780.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NO10:SqlMonitor &amp;amp; SSBDiagnose&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;功能：SqlMonitor是监控Replication和Mirror的必会工具，SSBDiagnose是测试SSB配置的工具；&lt;/p&gt;&lt;p&gt;下载：SQLServer自带&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042512105782.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2469563.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/04/25/2469563.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/03/23/2413164.html</id><title type="text">数据库架构的升级和变更</title><summary type="text">SQLServer2008在数据的高安全、高性能、高可用方面的技术已经比较成熟，这些技术和方案都是随着很多公司的业务和数据访问压力的增加而不断的升级和变迁的，同时经历了方方面面的考验，证明了它们都是成熟可靠的，下面就这方面的技术方案和变迁过程来做一些分析。阶段一：裸奔时代：优点：裸奔最大的好处就是简单，成本低。缺点：一旦服务器出现问题，恢复起来比较麻烦；如果访问压力变大，服务器可能不堪重负。阶段二：单库+Mirror+BackUp方案：说明：Mirror有两种方式，同步和异步；同步方式能保证主库和Mirror端数据的一致性，而且不需要使用企业版，但是对主库的性能影响也比较大；异步方式需要企业.</summary><published>2012-03-23T01:54:00Z</published><updated>2012-03-23T01:54:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/03/23/2413164.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/03/23/2413164.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLServer2008在数据的高安全、高性能、高可用方面的技术已经比较成熟，这些技术和方案都是随着很多公司的业务和数据访问压力的增加而不断的升级和&lt;/p&gt;&lt;p&gt;变迁的，同时经历了方方面面的考验，证明了它们都是成熟可靠的，下面就这方面的技术方案和变迁过程来做一些分析。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="color: #008080;"&gt;&lt;strong&gt;阶段一：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;裸奔时代：&lt;/p&gt;&lt;p&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;优点：裸奔最大的好处就是简单，成本低。&lt;/p&gt;&lt;p&gt;缺点：一旦服务器出现问题，恢复起来比较麻烦；如果访问压力变大，服务器可能不堪重负。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段二：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;单库+Mirror+BackUp&lt;/strong&gt;&lt;strong&gt;方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;说明：Mirror有两种方式，同步和异步；同步方式能保证主库和Mirror端数据的一致性，而且不需要使用企业版，但是对主库的性能影响也比较大；&lt;strong&gt;异步方式需要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;企业版&lt;/strong&gt;&lt;strong&gt;才支&lt;/strong&gt;&lt;strong&gt;持&lt;/strong&gt;，绝大部分时刻能保证数据的一致性，但是也有丢失小部分的数据可能，不过它主库的影响比较小。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;优点：此方案对主库的数据提供了可靠的保护，一旦主库出现问题，从库能在比较短的时间内恢复，尤其是数据库很大时（从备份恢复需要的时间会很长），能尽&lt;/p&gt;&lt;p&gt;快的恢复业务使用，而且Mirror端能生成快照，能给实时性要求不高的业务使用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;缺点：Mirror会影响主库的部分性能（异步方式影响比较小），主库出现问题后，前端需要更改访问的IP地址（或者将从服务器的IP地址改成主服务器的IP地址），&lt;/p&gt;&lt;p&gt;&lt;strong&gt;还需要&lt;/strong&gt;&lt;strong&gt;账号、&lt;/strong&gt;&lt;strong&gt;权限&lt;/strong&gt;&lt;strong&gt;和作业等信息迁移&lt;/strong&gt;过去。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;单库+Replication+ BackUp&lt;/strong&gt;&lt;strong&gt;方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;优点：Replication端可以提供给前段访问，可以将读操作放到从库，分担主库的部分压力，还能提供数据库的备份功能，不过这种备份很可能数据会有丢失。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;缺点：不能提供安全的数据保护功能，对主库有一些性能影响。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段三：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;单库+Replication+Mirror+BackUp&lt;/strong&gt;&lt;strong&gt;方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;优点：这种方案是前面两种方案的结合，既能够解决数据保护的问题，也能够提供读写分离的功能。&lt;/p&gt;&lt;p&gt;缺点：主库上既有Mirror又有Replication，这种方式对主库影响会比较大，而且实际证明，&lt;strong&gt;Mirror和Replication在同一台机器上部署，在一个出现问题时，&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;会对另一&lt;/strong&gt;&lt;strong&gt;个&lt;/strong&gt;&lt;strong&gt;造&lt;/strong&gt;&lt;strong&gt;成影响&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段四：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+BackUp&lt;/strong&gt;&lt;strong&gt;方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;说明：图中矩形部分代表存储，两台服务器做了双A的群集。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;优点：Cluster能确保其中的一个服务器出现问题时所有的数据和服务能切换到另外一台机器，切换的时间很短，能尽快的恢复业务访问。&lt;/p&gt;&lt;p&gt;缺点：双A群集一般要求配置比较好，价格比较高；因数据都存放在存储上，所以群集不能保护数据，一旦数据或者存储出现问题，需要从备份中恢复数据；&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SQLServer&lt;/strong&gt;&lt;strong&gt;的群&lt;/strong&gt;&lt;strong&gt;集&lt;/strong&gt;&lt;strong&gt;不能&lt;/strong&gt;&lt;strong&gt;提供负载均衡的功能&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段五：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+Mirror+BackUp&lt;/strong&gt;&lt;strong&gt;方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042610251946.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;说明：双A群集再加两个服务器上库的Mirror保护。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;优点：这个方案能对数据提供可靠的保护，无论是服务器故障还是存储故障，都能保证数据的安全，而且数据恢复的时间比较短。&lt;/p&gt;&lt;p&gt;缺点：Mirror会消耗主服务器的部分性能，多了两台Mirror机器，成本会增加，如果存储出现问题，快速恢复的方案是启用Mirror机器，后面可能需要重做群集。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段六：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+Mirror+BackUp+Replication+&lt;/strong&gt;&lt;strong&gt;单分发方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042610253848.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;说明：双A 群集，Mirror保护，单分发机器和读写分离方案。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;优点：群集和Mirror能充分保护数据的安全，读写分离能提高系统整体的性能。&lt;/p&gt;&lt;p&gt;缺点：成本较高，单分发机存在单点故障，如果分发机器出现问题，将需要重建，此时读和写都将集中到主库，压力会比较大。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+Mirror+BackUp+Replication+&lt;/strong&gt;&lt;strong&gt;双分发方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042610255443.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;优点：与单分发机相比，没有单点故障，即使某台分发机出现问题，也能保证读写分离机制继续运行。&lt;/p&gt;&lt;p&gt;缺点：成本增加，维护方面更复杂。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段七：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+&lt;/strong&gt;&lt;strong&gt;双存储+BackUp+Replication+&lt;/strong&gt;&lt;strong&gt;双分发方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042610260591.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;优点：双存储方案使得数据能得到有效的保护，而且避开了Mirror和Replication同时在主库运行对主服务器造成的影响，节省主服务器资源，而且恢复比较方便。&lt;/p&gt;&lt;p&gt;缺点：成本增加。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段八：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;strong&gt;（双A&lt;/strong&gt;&lt;strong&gt;）+&lt;/strong&gt;&lt;strong&gt;双存储+BackUp+Replication+&lt;/strong&gt;&lt;strong&gt;双分发+SSB&lt;/strong&gt;&lt;strong&gt;异步方案：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012042610263588.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;此方式的主要优势是将数据流异步处理，缓解瞬时高流量主库的压力，因为此方案比较复杂，暂时不做说明，可以参考&lt;a href="http://www.cnblogs.com/fygh/archive/2011/10/26/2225368.html" target="_blank"&gt;数据库架构&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;阶段九：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 拆分业务和数据、采用分布式数据库、使用能负载均衡集群功能的数据库等。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;此文档大致描述了随公司的发展、服务器压力的增加，数据库架构方面的变迁阶段，当然我们应该根据公司的具体情况，选择性的采用其中的技术，也可能是&lt;/p&gt;&lt;p&gt;直接跳过某些阶段，而上更高效的方案（如果成本能够接受），因此技术和方案的选择应该根据实际情况，灵活应对。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2413164.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/03/23/2413164.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/03/12/2391764.html</id><title type="text">数据库系统异常排查之DMV</title><summary type="text">数据库系统异常是DBA经常要面临的情景，一名有一定从业经验的DBA，都会有自己一套故障排查的方法和步骤，此文为为大家介绍一下通过系统性能视图（SQLServer05以上版本）来排查系统异常的基本方法，希望能对大家有所帮助。这里分两部分来介绍：一. 从数据库连接情况来判断异常：1. 首先我们来看一下目前数据库系统所有请求情况：--request infoselect s.session_id, s.status,db_name(r.database_id) as database_name,s.login_name,s.login_time, s.host_name,c.client_net_.</summary><published>2012-03-12T06:36:00Z</published><updated>2012-03-12T06:36:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/03/12/2391764.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/03/12/2391764.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 数据库系统异常是DBA经常要面临的情景，一名有一定从业经验的DBA，都会有自己一套故障排查的方法和步骤，此文为为大家介绍一下通过系统&lt;/p&gt;&lt;p&gt;性能视图（SQLServer05以上版本）来排查系统异常的基本方法，希望能对大家有所帮助。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这里分两部分来介绍：&lt;/p&gt;&lt;p&gt;一.&amp;nbsp; 从数据库连接情况来判断异常：&lt;/p&gt;&lt;p&gt;1. 首先我们来看一下目前数据库系统所有请求情况：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;request info&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; s.session_id, s.status,&lt;span style="color: #ff00ff;"&gt;db_name&lt;/span&gt;(r.database_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; database_name,&lt;br /&gt;s.login_name,s.login_time, s.&lt;span style="color: #ff00ff;"&gt;host_name&lt;/span&gt;,&lt;br /&gt;c.client_net_address,c.client_tcp_port,s.program_name, &lt;br /&gt;r.cpu_time, r.reads, r.writes,c.num_reads,c.num_writes,&lt;br /&gt;s.client_interface_name,&lt;br /&gt; s.last_request_start_time, s.last_request_end_time,&lt;br /&gt;c.connect_time, c.net_transport, c.net_packet_size,&lt;br /&gt;r.start_time, r.status, r.command,&lt;br /&gt;r.blocking_session_id, r.wait_type,&lt;br /&gt;r.wait_time, r.last_wait_type, r.wait_resource, r.open_transaction_count,&lt;br /&gt;r.percent_complete,r.granted_query_memory&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; Sys.dm_exec_requests r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_sessions s  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; s.session_id&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_connections c  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; c.session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; s.session_id&lt;/div&gt;&lt;p&gt;某台生产机运行情况：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012031213392333.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个查询将目前数据库中的所有请求都显示出来了，其中比较重要的有Status、Login_name、Host_Name，Client_Net_Address、Program_name&lt;/p&gt;&lt;p&gt;等，但是信息比较多，我们很难查看有什么异常，但是可以通过一图中红色圈的数字：441 初步判断连接数是否超过了平时的标准（很多时候系统异常是连接&lt;/p&gt;&lt;p&gt;数过多造成的，而连接数过多又是因为其他原因影响的）。&lt;/p&gt;&lt;p&gt;2. 哪个用户连接数最多：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;request info by user&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; login_name,&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) user_count&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; Sys.dm_exec_requests r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_sessions s  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; s.session_id&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_connections c  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; c.session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; login_name &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012031213461385.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;从图中我们可以很方便的看出用户连接数情况，如果我们的不同的功能是使用不同的的数据库账号的话，就能初步判断是哪部分功能可能出现了异常。&lt;/p&gt;&lt;p&gt;3. 哪台机器发起到数据库的连接数最多：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;request info by hostname&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; s.&lt;span style="color: #ff00ff;"&gt;host_name&lt;/span&gt;,c.client_net_address,&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) host_count&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; Sys.dm_exec_requests r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_sessions s  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; s.session_id&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_connections c  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; c.session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;host_name&lt;/span&gt;,client_net_address &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012031213525165.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 这个查询能够一下就帮我们找出来哪些机器发起了对数据库的链接，它们的链接数量是否有异常；这个其实对调查某些问题非常有用，我有一次就遇&lt;/p&gt;&lt;p&gt;到一个case：&lt;/p&gt;&lt;p&gt;用户反映，过一两个星期，系统就会出现一次异常，出问题时数据库连接数量很高，大量的访问被数据库拒绝，过半个小时左右，系统又自动恢复了，但是&lt;/p&gt;&lt;p&gt;在数据库里面查看，并没有发现有异常的进程和错误的信息，问题一时很棘手，很难定位，系统不稳定领导不满，DBA顶着压力一时不知道如何是好；后面&lt;/p&gt;&lt;p&gt;转换方向，通过调查问题发生时，为什么会产生这么多连接，这些连接是那些机器发过来的，这些连接发过来正常吗，是数据库不砍业务的重负，还是业务&lt;/p&gt;&lt;p&gt;在某个时间段内会出现暴涨等一系列原因，最终找出是一台Web因为开发人员代码写的有问题，内存出现内存泄露，导致大量的连接不能释放，出问题是，&lt;/p&gt;&lt;p&gt;发出的数据库连接数比平时高3-4倍，最终影响到了数据库，问题压根和数据库没关系（从这个事实看出，DBA真是的炮灰角色，不是自己的问题，也得顶&lt;/p&gt;&lt;p&gt;着压力调查出原因呀）；如果在类似问题发生时，我们能通过这个查询及早知道问题是出在某台Web机器上，那就不用费尽心力来调查数据库了。&lt;/p&gt;&lt;p&gt;4. 这些连接在访问哪个库：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;request info by databases&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;db_name&lt;/span&gt;(r.database_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; database_name,&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) host_count&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; Sys.dm_exec_requests r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_sessions s  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; s.session_id&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_connections c  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; c.session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; r.database_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;/div&gt;&lt;p&gt;结果（为NULL的估计是没办法定位库）：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012031214131378.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;5. 进程状态：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;request info by status&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; s.status,&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) host_count&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; Sys.dm_exec_requests r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_sessions s  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; s.session_id&lt;br /&gt;&lt;span style="color: #808080;"&gt;right&lt;/span&gt; &lt;span style="color: #808080;"&gt;outer&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; Sys.dm_exec_connections c  &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; c.session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; s.session_id &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; s.status&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;/div&gt;&lt;p&gt;结果（running数比较多，表面数据库压力比较大）：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012031214150069.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;二. 从阻塞情况来判断异常（这部分内容不再一一贴图，直接上脚本）：&lt;/p&gt;&lt;p&gt;1. 查看数据库阻塞情况：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------Blocked Info----------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;记录当前阻塞信息 &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; t1.resource_type &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;lock type&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; ,&lt;span style="color: #ff00ff;"&gt;db_name&lt;/span&gt;(resource_database_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;database&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;    &lt;br /&gt;,t1.resource_associated_entity_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;blk object&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;    &lt;br /&gt;,t1.request_mode &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;lock req&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                          &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; lock requested    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t1.request_session_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;waiter sid&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                      &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; spid of waiter    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t2.wait_duration_ms &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;wait time&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;          &lt;br /&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;text&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_exec_requests &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)                 &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- get sql for waiter    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(r.sql_handle)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t1.request_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; waiter_batch    &lt;br /&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;substring&lt;/span&gt;(qt.&lt;span style="color: #0000ff;"&gt;text&lt;/span&gt;,r.statement_start_offset&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;,     &lt;br /&gt;(&lt;span style="color: #ff00ff;"&gt;case&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; r.statement_end_offset &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;len&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;max&lt;/span&gt;), qt.&lt;span style="color: #0000ff;"&gt;text&lt;/span&gt;)) &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; r.statement_end_offset &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt; &lt;span style="color: #808080;"&gt;-&lt;/span&gt; r.statement_start_offset)&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_exec_requests &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(r.sql_handle) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; qt    &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t1.request_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; waiter_stmt    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- statement executing now    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t2.blocking_session_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;blocker sid&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- spid of blocker    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;text&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.sysprocesses &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; p &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- get sql for blocker    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(p.sql_handle)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; p.spid &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t2.blocking_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; blocker_stmt,&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;() time   &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_tran_locks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t1 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) , sys.dm_os_waiting_tasks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t2 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)      &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; t1.lock_owner_address &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t2.resource_address&lt;/div&gt;&lt;p&gt;2. 查看阻塞其他进程的进程（阻塞源头）：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;阻塞其他session的session &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;  t2.blocking_session_id,&lt;span style="color: #ff00ff;"&gt;COUNT&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;) counts&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_tran_locks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t1 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) , sys.dm_os_waiting_tasks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t2 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)    &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; t1.lock_owner_address &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t2.resource_address&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; blocking_session_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;/div&gt;&lt;p&gt;3. 被阻塞时间最长的进程：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;被阻塞时间最长的session&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;top&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;  t1.resource_type &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;lock type&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; ,&lt;span style="color: #ff00ff;"&gt;db_name&lt;/span&gt;(resource_database_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;database&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;    &lt;br /&gt;,t1.resource_associated_entity_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;blk object&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;    &lt;br /&gt;,t1.request_mode &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;lock req&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                          &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; lock requested    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t1.request_session_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;waiter sid&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                      &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; spid of waiter    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t2.wait_duration_ms &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;wait time&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;          &lt;br /&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;text&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_exec_requests &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)                 &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- get sql for waiter    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(r.sql_handle)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t1.request_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; waiter_batch    &lt;br /&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;substring&lt;/span&gt;(qt.&lt;span style="color: #0000ff;"&gt;text&lt;/span&gt;,r.statement_start_offset&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;,     &lt;br /&gt;(&lt;span style="color: #ff00ff;"&gt;case&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; r.statement_end_offset &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;len&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;max&lt;/span&gt;), qt.&lt;span style="color: #0000ff;"&gt;text&lt;/span&gt;)) &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; r.statement_end_offset &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt; &lt;span style="color: #808080;"&gt;-&lt;/span&gt; r.statement_start_offset)&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_exec_requests &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; r &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(r.sql_handle) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; qt    &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; r.session_id &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t1.request_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; waiter_stmt    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- statement executing now    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,t2.blocking_session_id &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;blocker sid&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;                &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- spid of blocker    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;,(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;text&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.sysprocesses &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; p &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)    &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;- get sql for blocker    &lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;cross&lt;/span&gt; apply sys.dm_exec_sql_text(p.sql_handle)     &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; p.spid &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t2.blocking_session_id) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; blocker_stmt,&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;() time   &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.dm_tran_locks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t1 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) , sys.dm_os_waiting_tasks &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; t2 &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)      &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; t1.lock_owner_address &lt;span style="color: #808080;"&gt;=&lt;/span&gt; t2.resource_address&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; t2.wait_duration_ms &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;此文大致总结了通过DMV调查数据库异常的基本方法和步骤，如果大家在调查问题时能够灵活运用，相信对数据库异常情况的定位和解决能够更快更有效。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2391764.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/03/12/2391764.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/02/20/2358959.html</id><title type="text">什么是列存储？</title><summary type="text">列存储不同于传统的关系型数据库，其数据在表中是按行存储的，列方式所带来的重要好处之一就是，由于查询中的选择规则是通过列来定义的，因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储，在查询只需要少数几个字段的时候，能大大减少读取的数据量，一个字段的数据聚集存储，那就 更容易为这种聚集存储设计更好的压缩/解压算法。这张图讲述了传统的行存储和列存储的区别：（转至：http://blog.csdn.net/franklysun/article/details/6417483）</summary><published>2012-02-20T02:15:00Z</published><updated>2012-02-20T02:15:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/02/20/2358959.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/02/20/2358959.html"/><content type="html">&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; 列存储不同于传统的关系型数据库，其数据在表中是按行存储的，列方式所带来的重要好处之一就是，由于查询中的选择规则是通过列来定义的，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储，在查询只需要少数几个字段的时候，能大大减少读取的数据量，一个字段的&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;数据聚集存储，那就 更容易为这种聚集存储设计更好的压缩/解压算法。这张图讲述了传统的行存储和列存储的区别：&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012022010132371.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;（转至：&lt;a href="http://blog.csdn.net/franklysun/article/details/6417483"&gt;http://blog.csdn.net/franklysun/article/details/6417483&lt;/a&gt;）&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2358959.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/02/20/2358959.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/02/17/2354544.html</id><title type="text">讨论一个比较有意思的业务需求</title><summary type="text">业务需求描述： 有一个用户登录表，用户每次登陆时，就会向这个表中插入一条数据，这个表记录了用户的用户ID和登录时间，表的数据量有几千万， 现在需要求出从今天开始算，用户持续登录的时间（也就是用户今天登陆了，昨天也登陆了，但是前天没有登录，那用户的持续登录时间就 是一天）。 分析： 看似蛮简单的一需求，在数据库里面实际操作起来不是那么简单的，并非一个简单的Select能够搞定的，从业务的描述我们起码可以得到如下 的分析结论： 1. 业务需要统计这样的数据，应该并不需要实时的数据，所以我们可以获取某个时间的快照数据来做计算；2. 表数据量比较大，如果直接在这个表上操作，势必会对产品的使用造成...</summary><published>2012-02-17T02:40:00Z</published><updated>2012-02-17T02:40:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/02/17/2354544.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/02/17/2354544.html"/><content type="html">&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 业务需求描述：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有一个用户登录表，用户每次登陆时，就会向这个表中插入一条数据，这个表记录了用户的用户ID和登录时间，表的数据量有几千万，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在需要求出从今天开始算，用户持续登录的时间（也就是用户今天登陆了，昨天也登陆了，但是前天没有登录，那用户的持续登录时间就&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是一天）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008080;"&gt;&lt;strong&gt;分析：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;看似蛮简单的一需求，在数据库里面实际操作起来不是那么简单的，并非一个简单的Select能够搞定的，&lt;/span&gt;从业务的描述我们起码可以得到如下&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;的分析结论：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 业务需要统计这样的数据，应该并不需要实时的数据，所以我们可以获取某个时间的快照数据来做计算；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2. 表数据量比较大，如果直接在这个表上操作，势必会对产品的使用造成影响（因为每个用户登录时，都需要再往里面插数据的）；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 需要统计每个用户的持续登录时间，那意味着如果没有持续登录时间的用户就是不需要的用户，这里面应该可以筛选掉一大批用户；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. 每个用户都需要做统计计算，这个肯定是一个循环计算的过程，我们最好前期能过滤掉一部分用户，那后面的统计计算无疑可以节省很多的时间；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. 用户持续登录，一般时间不可能很长（很少有人天天去登陆一个网站，持续100天的吧），意味着我们可以用持续天数来做为循环条件，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而不必以用户来作为循环条件（用户做循环条件的话，循环次数应该会比较大）；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6. 大数据量做统计，而且是定位到每个用户的，性能是必须要重点考虑的因素；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008080;"&gt;&lt;strong&gt;造测试数据：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;span style="color: #000000;"&gt;测试数据其实有一个比较难的要求是能够尽量的接近真实数据，这样的测试效果才是最好的；我们预计造一个2千5百万的表，造几十万的用户，&lt;/span&gt;&lt;/span&gt;然后随机&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;的生成登陆时间，但是要求登录时间尽量能贴合真实的情况；&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp; 我们先创建测试表（其实最好是分区表）：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Create Test Table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; dbo.UserLoginInfo&lt;br /&gt;(&lt;br /&gt;     userid &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;    ,logintime &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;&lt;br /&gt;    ,&lt;span style="color: #0000ff;"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PK_UserInfo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt; &lt;br /&gt;    ( &lt;br /&gt;         userid &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;&lt;br /&gt;        ,logintime &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt; &lt;br /&gt;    )&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; &lt;br /&gt;    (&lt;br /&gt;         PAD_INDEX  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,STATISTICS_NORECOMPUTE  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,IGNORE_DUP_KEY &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,ALLOW_ROW_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;        ,ALLOW_PAGE_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;        ,&lt;span style="color: #0000ff;"&gt;FILLFACTOR&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;90&lt;/span&gt;&lt;br /&gt;    ) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;br /&gt;) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;DST Table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; dbo.DST_UserLoginInfo&lt;br /&gt;(&lt;br /&gt;     userid &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;    ,logindate &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;)&lt;br /&gt;    ,ContinueDays &lt;span style="color: #0000ff;"&gt;smallint&lt;/span&gt;&lt;br /&gt;    ,IsOver &lt;span style="color: #0000ff;"&gt;bit&lt;/span&gt;&lt;br /&gt;    ,&lt;span style="color: #0000ff;"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PK_UserLoginInfo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt; &lt;br /&gt;    ( &lt;br /&gt;         userid &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;&lt;br /&gt;        ,logindate &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt; &lt;br /&gt;    )&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; &lt;br /&gt;    (&lt;br /&gt;         PAD_INDEX  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,STATISTICS_NORECOMPUTE  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,IGNORE_DUP_KEY &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;        ,ALLOW_ROW_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;        ,ALLOW_PAGE_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;        ,&lt;span style="color: #0000ff;"&gt;FILLFACTOR&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;90&lt;/span&gt;&lt;br /&gt;    ) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;br /&gt;) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 说明：我们创建了两个表，一个是模拟真实的用户登录数据的表，另外一个是我们准备做数据统计的表；&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们按时间由远到近，分几个批次来生成测试数据：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;-----------造二千五百万用户登录记录的过程---------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第一批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1000*5000=500W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;5000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;5000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;4000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4000&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4000&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第二批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1000*6000=600W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;3000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3000&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3000&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第三批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1000*4000=400W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;2000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2000&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2000&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第四批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;10000*700=700W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;select @userid&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;700&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;1000&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第五批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;100000*10=100W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;500&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;500&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;500&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;第六批次&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;100000*20=200W&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@count&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;rand&lt;/span&gt;()&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100000000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;365&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@userid&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;CAST&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;dateadd&lt;/span&gt;(d,&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;365&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;getdate&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;365&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;120&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;:&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;str&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;abs&lt;/span&gt;(checksum(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;())&lt;span style="color: #808080;"&gt;%&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;60&lt;/span&gt;),&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;datetime&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@u_count&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;造这些数据，在我本机上花了大半天时间才完成（痛苦呀），这些脚本运行完之后，我本机生成的数据量情况如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021616223820.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;用户数量：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021616340833.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 随机生成的时间情况：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021616243838.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 现在我们完成了一个两千五百万记录，用户数量二十二万，时间从2001-03-05到2012-02-15的用户登录记录；但是有个问题，就是今天的时间，&lt;/p&gt;&lt;p&gt;&amp;nbsp;没有加上去，我们再补充一下今天登陆的记录（假定今天每个用户都登陆了）&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;add today login recode for every user&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.UserLoginInfo(userid,logintime)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; userid,&lt;span style="color: #ff00ff;"&gt;DATEADD&lt;/span&gt;(MINUTE,&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;())  &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; &lt;br /&gt;(&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;distinct&lt;/span&gt; userid &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.UserLoginInfo &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock)&lt;br /&gt;) a&lt;/div&gt;&lt;p&gt;&amp;nbsp; 加完之后就应该有今天的数据了：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021616511915.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 到这里造数据的过程就完了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="color: #008080;"&gt;&lt;strong&gt; 持续天数计算：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp; 思路：1. 我们将UserLoginInfo的记录先做筛选，筛选掉那些今天有登陆，但是昨天没有登录的用户（也就是没有持续登录的用户）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 将筛选后的数据放入到中间表，我们通过中间表来计算用户持续登录的天数；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 计算完成后，通过查询中间表，输出用户和持续登录天数；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以下就按照前面的思路来开展步骤：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp;1. 筛选掉不需要的记录，并将其导入中间表：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;find data into other table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.DST_UserLoginInfo(userid,logindate,ContinueDays,IsOver)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;distinct&lt;/span&gt; userid,&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),logintime,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; logindate,&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;  dbo.UserLoginInfo a &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;login today&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;( &lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.UserLoginInfo b &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; b.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;a.userid&lt;br /&gt;  &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logintime&lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;() &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logintime&lt;span style="color: #808080;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;(),&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;login yesterday&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.UserLoginInfo c &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;c.userid&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logintime&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;(),&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;) &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logintime&lt;span style="color: #808080;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;)&lt;br /&gt;)&lt;/div&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp;说明：在这里我们将时间字段变成了日期型的字符串，方便后面计算时做判断，另外中间表增加了持续时间&lt;/span&gt;&lt;span style="color: #000000;"&gt;和标识位字段，&lt;/span&gt;&lt;span style="color: #000000;"&gt;也是为了方便后面的计算。&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp;2. 通过天数来循环中间表，计算持续天数：&lt;br /&gt;&amp;nbsp; &amp;nbsp;我们先来看一下，筛选完成后的数据量为800多万，节省了持续天数计算时大量的计算量；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021617074416.png" alt="" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 接着我们来计算持续天数：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 这里有两种方式：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 1. 按用户来循环计算：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;每次取一个用户，然后根据用户ID来循环计算这个用户的持续登录天数；但是设想一下，如果我们有10万个用户，那我们第一层次取用户的循环将要&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 循环10万次，而且每个用户又需要在第一层的循环里面做持续时间天数的循环计算，可以想象计算量是非常大的，不可取；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 2. 按持续天数来循环计算：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;前面分析阶段已经提及过，正常情况下很少有用户能持续100天，每天都登陆到一个网站上面的，那意味着我们循环的天数不会是一个非常大的量，而&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;且这种循环一次性的将同一个持续天数的用户一次性计算完成了，效率应该是比较高的，我们采用这种方式来进行计算；&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Update ContinueDays&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;smallint&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;update&lt;/span&gt; a &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; ContinueDays&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;,IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo a&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt; &lt;br /&gt; (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo b &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;b.userid &lt;span style="color: #808080;"&gt;and&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logindate&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;not&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;  (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo c &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;c.userid &lt;span style="color: #808080;"&gt;and&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logindate&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; 运行完成后，我们来查看下运行的结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021709231436.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 一共是14639个用户有持续登录，最长的登录时间为259天（真实情况应该不会有这么大，计算的时候最耗时的就是这两个持续时间大的用户）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008080;"&gt;&lt;strong&gt;&amp;nbsp; 验证结果：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 我现在来抽查几条数据，看是否正确：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 先在中间表中随便找一个持续时间为一天的记录，再到原登录表中找到他实际的登录数据：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021709411081.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 打钩的是持续时间，正好是一天（其实这里的理解好像有点问题，用户明明是连续两天登录，而此处的持续时间只算做一天）；&lt;/p&gt;&lt;p&gt;&amp;nbsp; 接下来抽个三天的记录：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/142465/2012021709442539.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 结果也是正确的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;strong&gt;&lt;span style="color: #008080;"&gt;总结：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 分析、造数据、测试和计算我们都做完了，现在将上面的计算过程做成一个存储过程，这样就方便随时调用了：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Proc&lt;/span&gt; usp_UserContinueDays&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;truncate dst table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo.DST_UserLoginInfo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;is&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;DST Table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; dbo.DST_UserLoginInfo&lt;br /&gt;    (&lt;br /&gt;         userid &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;        ,logindate &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;)&lt;br /&gt;        ,ContinueDays &lt;span style="color: #0000ff;"&gt;smallint&lt;/span&gt;&lt;br /&gt;        ,IsOver &lt;span style="color: #0000ff;"&gt;bit&lt;/span&gt;&lt;br /&gt;        ,&lt;span style="color: #0000ff;"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PK_UserLoginInfo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt; &lt;br /&gt;        ( &lt;br /&gt;             userid &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;&lt;br /&gt;            ,logindate &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt; &lt;br /&gt;        )&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; &lt;br /&gt;        (&lt;br /&gt;             PAD_INDEX  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;            ,STATISTICS_NORECOMPUTE  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;            ,IGNORE_DUP_KEY &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br /&gt;            ,ALLOW_ROW_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;            ,ALLOW_PAGE_LOCKS  &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt;&lt;br /&gt;            ,&lt;span style="color: #0000ff;"&gt;FILLFACTOR&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;90&lt;/span&gt;&lt;br /&gt;        ) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;br /&gt;    ) &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff;"&gt;truncate&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; dbo.DST_UserLoginInfo&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;find data to other table&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; dbo.DST_UserLoginInfo(userid,logindate,ContinueDays,IsOver)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;distinct&lt;/span&gt; userid,&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),logintime,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; logindate,&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;  dbo.UserLoginInfo a &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;login today&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;( &lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.UserLoginInfo b &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; b.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;a.userid&lt;br /&gt;  &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logintime&lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;() &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logintime&lt;span style="color: #808080;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;(),&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;login yesterday&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.UserLoginInfo c &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;c.userid&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logintime&lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;(),&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;) &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logintime&lt;span style="color: #808080;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Update ContinueDays&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;smallint&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;begin&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;update&lt;/span&gt; a &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; ContinueDays&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;,IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo a&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt; &lt;br /&gt; (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo b &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;b.userid &lt;span style="color: #808080;"&gt;and&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #808080;"&gt;and&lt;/span&gt; b.logindate&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #808080;"&gt;not&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;&lt;br /&gt;  (&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo c &lt;span style="color: #0000ff;"&gt;with&lt;/span&gt;(nolock) &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a.userid&lt;span style="color: #808080;"&gt;=&lt;/span&gt;c.userid &lt;span style="color: #808080;"&gt;and&lt;/span&gt; IsOver&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #808080;"&gt;and&lt;/span&gt; c.logindate&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;GETDATE&lt;/span&gt;()&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;23&lt;/span&gt;))&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@days&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Result&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; userid,&lt;span style="color: #ff00ff;"&gt;MIN&lt;/span&gt;(logindate) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; LoginDate ,ContinueDays  &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; dbo.DST_UserLoginInfo &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; userid,ContinueDays &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; ContinueDays &lt;span style="color: #0000ff;"&gt;desc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff;"&gt;off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 到此，测试计算的过程完成，不过有点遗憾的是，这个业务需求是另外一个公司的朋友提供的，我没办法拿到他们原始的计算方法，所以就没用办法比较&lt;/p&gt;&lt;p&gt;&amp;nbsp;算法的最终效果了；如果大家有更好的方法，欢迎讨论。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2354544.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/02/17/2354544.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fygh/archive/2012/02/14/2351098.html</id><title type="text">SQLServer内存数据写入磁盘的方法比较</title><summary type="text">众所周知，SQLServer增删改数据最先都是在内存中进行的，这可以大大加快数据操作的速度；当内存中的数据被修改了，而磁盘中的数据还没有被修改时，就产生了所谓的”脏页“，SQLServer是如何同步内存和磁盘的数据的呢？以下三种方法就是为同步内存和磁盘数据而产生的。LazyWrite（惰性写入器）: 作用： 1.管理SQLServer空闲内存： a. 定期检查空闲缓冲列表的大小，当这个值过低的时候，它会扫描整个数据缓存，将一段时间没有使用的页面老化（通过LRU算法），释放内存空间； b. 如果找到一段时间没有被使用的脏页，它会将其写入磁盘，然后将这个页面的内存空间标记为空闲空间； 2.协调..</summary><published>2012-02-14T06:57:00Z</published><updated>2012-02-14T06:57:00Z</updated><author><name>飞洋过海</name><uri>http://www.cnblogs.com/fygh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fygh/archive/2012/02/14/2351098.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fygh/archive/2012/02/14/2351098.html"/><content type="html">&lt;p&gt;&lt;span style="background-color: #ffffff; color: #008080;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;span style="color: #000000;"&gt;众所周知，SQLServer增删改数据最先都是在内存中进行的，这可以大大加快数据操作的速度；当内存中的数据被修改了，而磁盘中的数据&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: #ffffff; color: #008080;"&gt;&lt;span style="color: #000000;"&gt;还没有被修改时，就产生了所谓的&amp;rdquo;脏页&amp;ldquo;，SQLServer是如何同步内存和磁盘的数据的呢？以下三种方法就是为同步内存和磁盘数据而产生的。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: #ffffff; color: #008080;"&gt;&lt;strong&gt;LazyWrite（惰性写入器）:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 作用：&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1.管理SQLServer空闲内存：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. 定期检查空闲缓冲列表的大小，当这个值过低的时候，它会扫描整个数据缓存，将一段时间没有使用的页面老化（通过LRU算法），释放内存空间；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b. 如果找到一段时间没有被使用的脏页，它会将其写入磁盘，然后将这个页面的内存空间标记为空闲空间；&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 2.协调Windows与SQLServer内存：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. 监视服务器内存，如果Windows物理内存很少，它会从空闲缓冲列表中释放内存给Windows；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b. 在SQLServer负载很重时，它还会在分配给SQLServer的内存没有达到最大服务器内存阀值时，增加空闲缓冲列表的大小，以适应负载的需要。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;CheckPoint：&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 作用：检查点是检查点进程创建的一个时间点，在这个时间点，SQLServer可以确认所有提交的事物所做的修改都已经写入磁盘，它是一个标记，&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个标记是数据库恢复的起始点，大约每分钟运行一次，这样在启动数据库时，确保数据库在一分钟内就能完成恢复操作；但是如果在这段&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 时间内写入日志的数据不到10MB，SQLServer就不会自动发起检查点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 跟踪标记（trace flag）3502在错误日志中记录检查点的开始和结束位置。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 与LazyWrite比较，CheckPoint不会从缓存中移出脏页，CheckPoint进程的工作只是保证脏页被写入磁盘，并且在页头将缓存中的这个页面标记为&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 干净的页面。&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;span style="color: #008080;"&gt;EagerWrite：&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 通常在BCP、SELECT INTO, WRITETEXT,UPDATETEXT,BULK INSERT等操作时发生，为了加快这些操作的速度，EagerWrite会管理数据页&lt;/p&gt;&lt;p&gt;的创建和分配，这些操作不会等待所有的页面创建完成后才将内存中的数据写入到页面中，而是以更高的优先级边创建边将缓存中的数据写入页面中，&lt;/p&gt;&lt;p&gt;以保证缓冲池有足够的空间来完成这些操作。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fygh/aggbug/2351098.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fygh/archive/2012/02/14/2351098.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
