悄悄心旁是肖肖 發表於 2023-8-14 00:00:00

使用alwayson后如何收缩数据库日志的方法详解

<p>
        <span><strong>问题描述:</strong></span></p>
<p>
        在使用了alwayson后,主从库实时同步,原理是通过事务日志同步的,所以造成主数据库的事务日志一直在使用,而且无法收缩主数据库的事务日志。</p>
<p>
        在主从库同步时,收缩数据库是不起作用的。由于主数据库无法收缩,所以从数据库的日志也会一直跟着增长,造成磁盘空间一直增长。</p>
<p>
        网上大量的收缩日志的方法,基本上都不管用,怀疑根本没有在实际环境中使用过,以下方案是我在实际中使用后总结记录的。</p>
<p>
        <strong><span>解决方案:</span></strong></p>
<p>
        最开始发现这个问题后,也是研究了好久,发现的方法,先是全手动操作。因为这些操作,并不能用语句来实现自动化,所以一直是手动处理的。</p>
<p>
        可能人都是比较懒的吧(人只有懒,才能促进机械自动化,才会有各种发表创造!不是吗?呵呵),一直想能过脚本,实现自动化。</p>
<p>
        今天终于摸索出来了,总结一下。</p>
<p>
        <strong><span>大概的思路如下</span></strong></p>
<p>
        通过脚本将alwayson从库,从可用性数据库是移除,就是取消主从同步,这样主库变成单库模式了。然后再收缩事务日志,收缩后再把主从数据库加上。</p>
<p>
        考虑到有一点,操作中需要删除从库上的数据库,为防止操作错误,把主库的数据库删除了,这个操作相当危险啊,所以将脚本分为三个。在两个机器上来回操作。</p>
<p>
        第一个脚本在db1上执行。</p>
<p>
        第二个脚本在db3上执行</p>
<p>
        第三个脚本在db1上执行</p>
<p>
        (这里db1是主库,db3是从库。不要问我db2呢,因为创建时先创建的db2后来db2有问题删除了。你根据你的实际情况替换就行了。)</p>
<p>
        待时机成熟,或者加上判断,可以考虑将以下三个脚本合成一个脚本,然后一键执行,或者加到定时任务,每月自动执行一次。</p>
<p>
        以下脚本经过亲测可用</p>
<p>
        syncdb 为alwayson同步的名字,</p>
<p>
        dbserver1和dbserver3是主从数据库的名称。dbserver1为主库,dbserver3为从库。</p>
<p>
        :connect dbserver1 -u sa -p abc@123 是使用sqlcmd模式连接数据库,请修改后面的密码。</p>
<p>
        test为数据库名称。</p>
<p>
        1、取消主从同步</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_794935">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql comments">--- you must execute the following script in sqlcmd mode.</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver1 -u sa -p abc@123 </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">use </code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="sql keyword">alter</code> <code class="sql plain">availability </code><code class="sql keyword">group</code> <code class="sql plain"> remove </code><code class="sql keyword">database</code> <code class="sql plain">;</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        2 删除从库上的数据库,在收拾后,再添加上。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_313247">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver3 -u sa -p abc@123 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">use </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql keyword">drop</code> <code class="sql keyword">database</code> <code class="sql plain"></code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        3.备份事务日志,收缩日志文件,添加从库数据库。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_298787">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                        <div class="line number30 index29 alt1">
                                                                30</div>
                                                        <div class="line number31 index30 alt2">
                                                                31</div>
                                                        <div class="line number32 index31 alt1">
                                                                32</div>
                                                        <div class="line number33 index32 alt2">
                                                                33</div>
                                                        <div class="line number34 index33 alt1">
                                                                34</div>
                                                        <div class="line number35 index34 alt2">
                                                                35</div>
                                                        <div class="line number36 index35 alt1">
                                                                36</div>
                                                        <div class="line number37 index36 alt2">
                                                                37</div>
                                                        <div class="line number38 index37 alt1">
                                                                38</div>
                                                        <div class="line number39 index38 alt2">
                                                                39</div>
                                                        <div class="line number40 index39 alt1">
                                                                40</div>
                                                        <div class="line number41 index40 alt2">
                                                                41</div>
                                                        <div class="line number42 index41 alt1">
                                                                42</div>
                                                        <div class="line number43 index42 alt2">
                                                                43</div>
                                                        <div class="line number44 index43 alt1">
                                                                44</div>
                                                        <div class="line number45 index44 alt2">
                                                                45</div>
                                                        <div class="line number46 index45 alt1">
                                                                46</div>
                                                        <div class="line number47 index46 alt2">
                                                                47</div>
                                                        <div class="line number48 index47 alt1">
                                                                48</div>
                                                        <div class="line number49 index48 alt2">
                                                                49</div>
                                                        <div class="line number50 index49 alt1">
                                                                50</div>
                                                        <div class="line number51 index50 alt2">
                                                                51</div>
                                                        <div class="line number52 index51 alt1">
                                                                52</div>
                                                        <div class="line number53 index52 alt2">
                                                                53</div>
                                                        <div class="line number54 index53 alt1">
                                                                54</div>
                                                        <div class="line number55 index54 alt2">
                                                                55</div>
                                                        <div class="line number56 index55 alt1">
                                                                56</div>
                                                        <div class="line number57 index56 alt2">
                                                                57</div>
                                                        <div class="line number58 index57 alt1">
                                                                58</div>
                                                        <div class="line number59 index58 alt2">
                                                                59</div>
                                                        <div class="line number60 index59 alt1">
                                                                60</div>
                                                        <div class="line number61 index60 alt2">
                                                                61</div>
                                                        <div class="line number62 index61 alt1">
                                                                62</div>
                                                        <div class="line number63 index62 alt2">
                                                                63</div>
                                                        <div class="line number64 index63 alt1">
                                                                64</div>
                                                        <div class="line number65 index64 alt2">
                                                                65</div>
                                                        <div class="line number66 index65 alt1">
                                                                66</div>
                                                        <div class="line number67 index66 alt2">
                                                                67</div>
                                                        <div class="line number68 index67 alt1">
                                                                68</div>
                                                        <div class="line number69 index68 alt2">
                                                                69</div>
                                                        <div class="line number70 index69 alt1">
                                                                70</div>
                                                        <div class="line number71 index70 alt2">
                                                                71</div>
                                                        <div class="line number72 index71 alt1">
                                                                72</div>
                                                        <div class="line number73 index72 alt2">
                                                                73</div>
                                                        <div class="line number74 index73 alt1">
                                                                74</div>
                                                        <div class="line number75 index74 alt2">
                                                                75</div>
                                                        <div class="line number76 index75 alt1">
                                                                76</div>
                                                        <div class="line number77 index76 alt2">
                                                                77</div>
                                                        <div class="line number78 index77 alt1">
                                                                78</div>
                                                        <div class="line number79 index78 alt2">
                                                                79</div>
                                                        <div class="line number80 index79 alt1">
                                                                80</div>
                                                        <div class="line number81 index80 alt2">
                                                                81</div>
                                                        <div class="line number82 index81 alt1">
                                                                82</div>
                                                        <div class="line number83 index82 alt2">
                                                                83</div>
                                                        <div class="line number84 index83 alt1">
                                                                84</div>
                                                        <div class="line number85 index84 alt2">
                                                                85</div>
                                                        <div class="line number86 index85 alt1">
                                                                86</div>
                                                        <div class="line number87 index86 alt2">
                                                                87</div>
                                                        <div class="line number88 index87 alt1">
                                                                88</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql comments">--- you must execute the following script in sqlcmd mode.</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver1 -u sa -p abc@123 </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">use </code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="sql plain">backup log </code><code class="sql keyword">to</code> <code class="sql plain">disk=</code><code class="sql string">'nul:'</code><code class="sql keyword">with</code> <code class="sql plain">stats = 10</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="sql plain">use </code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="sql plain">dbcc shrinkfile (n</code><code class="sql string">'test_log'</code> <code class="sql plain">, 20480)</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="sql plain">use </code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="sql keyword">alter</code> <code class="sql plain">availability </code><code class="sql keyword">group</code> <code class="sql plain"></code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="sql keyword">add</code> <code class="sql keyword">database</code> <code class="sql plain">;</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver1 -u sa -p test@123 </code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="sql plain">backup </code><code class="sql keyword">database</code> <code class="sql plain"> </code><code class="sql keyword">to</code> <code class="sql plain">disk = n</code><code class="sql string">'\\dbserver3\e$\share\test.bak'</code> <code class="sql keyword">with</code> <code class="sql plain">copy_only, format, init, skip, rewind, nounload, compression, stats = 5</code>
</div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number30 index29 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number31 index30 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver3 -u sa -p test@123 </code>
</div>
                                                                <div class="line number32 index31 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number33 index32 alt2">
                                                                        <code class="sql plain">restore </code><code class="sql keyword">database</code> <code class="sql plain"> </code><code class="sql keyword">from</code> <code class="sql plain">disk = n</code><code class="sql string">'\\dbserver3\e$\share\test.bak'</code> <code class="sql keyword">with</code> <code class="sql plain">norecovery, nounload, stats = 5</code>
</div>
                                                                <div class="line number34 index33 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number35 index34 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number36 index35 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number37 index36 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver1 -u sa -p test@123 </code>
</div>
                                                                <div class="line number38 index37 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number39 index38 alt2">
                                                                        <code class="sql plain">backup log </code><code class="sql keyword">to</code> <code class="sql plain">disk = n</code><code class="sql string">'\\dbserver3\e$\share\test.trn'</code> <code class="sql keyword">with</code> <code class="sql plain">noformat, noinit, noskip, rewind, nounload, compression, stats = 5</code>
</div>
                                                                <div class="line number40 index39 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number41 index40 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number42 index41 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number43 index42 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver3 -u sa -p test@123 </code>
</div>
                                                                <div class="line number44 index43 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number45 index44 alt2">
                                                                        <code class="sql plain">restore log </code><code class="sql keyword">from</code> <code class="sql plain">disk = n</code><code class="sql string">'\\dbserver3\e$\share\test.trn'</code> <code class="sql keyword">with</code> <code class="sql plain">norecovery, nounload, stats = 5</code>
</div>
                                                                <div class="line number46 index45 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number47 index46 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number48 index47 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number49 index48 alt2">
                                                                        <code class="sql plain">:</code><code class="sql keyword">connect</code> <code class="sql plain">dbserver3 -u sa -p test@123 </code>
</div>
                                                                <div class="line number50 index49 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number51 index50 alt2">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number52 index51 alt1">
                                                                        <code class="sql comments">-- wait for the replica to start communicating</code>
</div>
                                                                <div class="line number53 index52 alt2">
                                                                        <code class="sql keyword">begin</code> <code class="sql plain">try</code>
</div>
                                                                <div class="line number54 index53 alt1">
                                                                        <code class="sql keyword">declare</code> <code class="sql plain">@conn </code><code class="sql keyword">bit</code>
</div>
                                                                <div class="line number55 index54 alt2">
                                                                        <code class="sql keyword">declare</code> <code class="sql plain">@</code><code class="sql color2">count</code> <code class="sql keyword">int</code>
</div>
                                                                <div class="line number56 index55 alt1">
                                                                        <code class="sql keyword">declare</code> <code class="sql plain">@replica_id uniqueidentifier </code>
</div>
                                                                <div class="line number57 index56 alt2">
                                                                        <code class="sql keyword">declare</code> <code class="sql plain">@group_id uniqueidentifier</code>
</div>
                                                                <div class="line number58 index57 alt1">
                                                                        <code class="sql keyword">set</code> <code class="sql plain">@conn = 0</code>
</div>
                                                                <div class="line number59 index58 alt2">
                                                                        <code class="sql keyword">set</code> <code class="sql plain">@</code><code class="sql color2">count</code> <code class="sql plain">= 30 </code><code class="sql comments">-- wait for 5 minutes </code>
</div>
                                                                <div class="line number60 index59 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                                <div class="line number61 index60 alt2">
                                                                        <code class="sql plain">if (serverproperty(</code><code class="sql string">'ishadrenabled'</code><code class="sql plain">) = 1)</code>
</div>
                                                                <div class="line number62 index61 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql color1">and</code> <code class="sql plain">(</code><code class="sql color2">isnull</code><code class="sql plain">((</code><code class="sql keyword">select</code> <code class="sql plain">member_state </code><code class="sql keyword">from</code> <code class="sql plain">master.sys.dm_hadr_cluster_members </code><code class="sql keyword">where</code> <code class="sql color2">upper</code><code class="sql plain">(member_name </code><code class="sql keyword">collate</code> <code class="sql plain">latin1_general_ci_as) = </code><code class="sql color2">upper</code><code class="sql plain">(</code><code class="sql color2">cast</code><code class="sql plain">(serverproperty(</code><code class="sql string">'computernamephysicalnetbios'</code><code class="sql plain">) </code><code class="sql keyword">as</code> <code class="sql plain">nvarchar(256)) </code><code class="sql keyword">collate</code> <code class="sql plain">latin1_general_ci_as)), 0) &lt;&gt; 0)</code>
</div>
                                                                <div class="line number63 index62 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql color1">and</code> <code class="sql plain">(</code><code class="sql color2">isnull</code><code class="sql plain">((</code><code class="sql keyword">select</code> <code class="sql plain">state </code><code class="sql keyword">from</code> <code class="sql plain">master.sys.database_mirroring_endpoints), 1) = 0)</code>
</div>
                                                                <div class="line number64 index63 alt1">
                                                                        <code class="sql keyword">begin</code>
</div>
                                                                <div class="line number65 index64 alt2">
                                                                        <code class="sql spaces">  </code><code class="sql keyword">select</code> <code class="sql plain">@group_id = ags.group_id </code><code class="sql keyword">from</code> <code class="sql plain">master.sys.availability_groups </code><code class="sql keyword">as</code> <code class="sql plain">ags </code><code class="sql keyword">where</code> <code class="sql keyword">name</code> <code class="sql plain">= n</code><code class="sql string">'yorkdb'</code>
</div>
                                                                <div class="line number66 index65 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql keyword">select</code> <code class="sql plain">@replica_id = replicas.replica_id </code><code class="sql keyword">from</code> <code class="sql plain">master.sys.availability_replicas </code><code class="sql keyword">as</code> <code class="sql plain">replicas </code><code class="sql keyword">where</code> <code class="sql color2">upper</code><code class="sql plain">(replicas.replica_server_name </code><code class="sql keyword">collate</code> <code class="sql plain">latin1_general_ci_as) = </code><code class="sql color2">upper</code><code class="sql plain">(@@servername </code><code class="sql keyword">collate</code> <code class="sql plain">latin1_general_ci_as) </code><code class="sql color1">and</code> <code class="sql plain">group_id = @group_id</code>
</div>
                                                                <div class="line number67 index66 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">while @conn &lt;&gt; 1 </code><code class="sql color1">and</code> <code class="sql plain">@</code><code class="sql color2">count</code> <code class="sql plain">&gt; 0</code>
</div>
                                                                <div class="line number68 index67 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql keyword">begin</code>
</div>
                                                                <div class="line number69 index68 alt2">
                                                                        <code class="sql spaces">        </code><code class="sql keyword">set</code> <code class="sql plain">@conn = </code><code class="sql color2">isnull</code><code class="sql plain">((</code><code class="sql keyword">select</code> <code class="sql plain">connected_state </code><code class="sql keyword">from</code> <code class="sql plain">master.sys.dm_hadr_availability_replica_states </code><code class="sql keyword">as</code> <code class="sql plain">states </code><code class="sql keyword">where</code> <code class="sql plain">states.replica_id = @replica_id), 1)</code>
</div>
                                                                <div class="line number70 index69 alt1">
                                                                        <code class="sql spaces">        </code><code class="sql plain">if @conn = 1</code>
</div>
                                                                <div class="line number71 index70 alt2">
                                                                        <code class="sql spaces">        </code><code class="sql keyword">begin</code>
</div>
                                                                <div class="line number72 index71 alt1">
                                                                        <code class="sql spaces">            </code><code class="sql comments">-- exit loop when the replica is connected, or if the query cannot find the replica status</code>
</div>
                                                                <div class="line number73 index72 alt2">
                                                                        <code class="sql spaces">            </code><code class="sql plain">break</code>
</div>
                                                                <div class="line number74 index73 alt1">
                                                                        <code class="sql spaces">        </code><code class="sql keyword">end</code>
</div>
                                                                <div class="line number75 index74 alt2">
                                                                        <code class="sql spaces">        </code><code class="sql plain">waitfor delay </code><code class="sql string">'00:00:10'</code>
</div>
                                                                <div class="line number76 index75 alt1">
                                                                        <code class="sql spaces">        </code><code class="sql keyword">set</code> <code class="sql plain">@</code><code class="sql color2">count</code> <code class="sql plain">= @</code><code class="sql color2">count</code> <code class="sql plain">- 1</code>
</div>
                                                                <div class="line number77 index76 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql keyword">end</code>
</div>
                                                                <div class="line number78 index77 alt1">
                                                                        <code class="sql keyword">end</code>
</div>
                                                                <div class="line number79 index78 alt2">
                                                                        <code class="sql keyword">end</code> <code class="sql plain">try</code>
</div>
                                                                <div class="line number80 index79 alt1">
                                                                        <code class="sql keyword">begin</code> <code class="sql plain">catch</code>
</div>
                                                                <div class="line number81 index80 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql comments">-- if the wait loop fails, do not stop execution of the alter database statement</code>
</div>
                                                                <div class="line number82 index81 alt1">
                                                                        <code class="sql keyword">end</code> <code class="sql plain">catch</code>
</div>
                                                                <div class="line number83 index82 alt2">
                                                                        <code class="sql keyword">alter</code> <code class="sql keyword">database</code> <code class="sql plain"> </code><code class="sql keyword">set</code> <code class="sql plain">hadr availability </code><code class="sql keyword">group</code> <code class="sql plain">= ;</code>
</div>
                                                                <div class="line number84 index83 alt1">
                                                                         </div>
                                                                <div class="line number85 index84 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number86 index85 alt1">
                                                                         </div>
                                                                <div class="line number87 index86 alt2">
                                                                        <code class="sql plain">go</code>
</div>
                                                                <div class="line number88 index87 alt1">
                                                                        <code class="sql spaces"> </code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        在执行:connect 命令前记得把sqlcmd模式打开</p>
<p>
        <img title="使用alwayson后如何收缩数据库日志的方法详解" alt="使用alwayson后如何收缩数据库日志的方法详解" height="482" src="https://zhuji.jb51.net/uploads/img/202305/049e190913f2e939ebf3950f3ed87112.jpg" width="572"></p>
<p>
        打开后,你能看到sqlcmd命令是灰色的。</p>
<p>
        <img title="使用alwayson后如何收缩数据库日志的方法详解" alt="使用alwayson后如何收缩数据库日志的方法详解" height="140" src="https://zhuji.jb51.net/uploads/img/202305/c518a95065c3e3f5ab6ee1fe46be6de9.jpg" width="499"></p>
<p>
        到此这篇关于使用alwayson后如何收缩数据库日志的文章就介绍到这了,更多相关alwayson数据库日志内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!</p>
<p>
        原文链接:https://blog.csdn.net/zhupengfei/article/details/107223900</p>
頁: [1]
查看完整版本: 使用alwayson后如何收缩数据库日志的方法详解