tag:gist.github.com,2008:/EitanBlumin Recent Gists from EitanBlumin 2025-11-03T06:29:37Z tag:gist.github.com,2008:Gist/EitanBlumin/714da61f084d6366f34cdada6d2cdbf2 2025-11-03T06:28:48Z 2025-11-03T06:29:37Z Brute force database out of SINGLE_USER mode back into MULTI_USER mode Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/714da61f084d6366f34cdada6d2cdbf2#file-query-window-1-sql">Query window 1.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-query-window-1-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Query window 1.sql content, created by EitanBlumin on 06:28AM on November 03, 2025." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Query window 1.sql"> <tr> <td id="file-query-window-1-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-query-window-1-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> run this in query window 1:</span></td> </tr> <tr> <td id="file-query-window-1-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-query-window-1-sql-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-query-window-1-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-query-window-1-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">TRANSACTION</span> <span class="pl-k">ISOLATION</span> <span class="pl-k">LEVEL</span> <span class="pl-k">READ</span> <span class="pl-k">UNCOMMITTED</span>;</td> </tr> <tr> <td id="file-query-window-1-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-query-window-1-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">DEADLOCK_PRIORITY</span> HIGH;</td> </tr> <tr> <td id="file-query-window-1-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-query-window-1-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-query-window-1-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-query-window-1-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @CMD <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-query-window-1-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-query-window-1-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @CMD <span class="pl-k">=</span> <span class="pl-c1">CONCAT</span>(@CMD, <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>), <span class="pl-s"><span class="pl-pds">&#39;</span>KILL &#39;</span>, <span class="pl-c1">session_id</span>)</td> </tr> <tr> <td id="file-query-window-1-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-query-window-1-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">dm_exec_requests</span></td> </tr> <tr> <td id="file-query-window-1-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-query-window-1-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> database_id <span class="pl-k">=</span> <span class="pl-c1">DB_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>MyDB&#39;</span>) <span class="pl-c"><span class="pl-c">--</span> replace MyDB with your DB name</span></td> </tr> <tr> <td id="file-query-window-1-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-query-window-1-sql-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-query-window-1-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-query-window-1-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> @CMD</td> </tr> <tr> <td id="file-query-window-1-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-query-window-1-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> (@CMD);</td> </tr> <tr> <td id="file-query-window-1-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-query-window-1-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-query-window-1-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-query-window-1-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> replace MyDB with your DB name:</span></td> </tr> <tr> <td id="file-query-window-1-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-query-window-1-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-k">USE</span> MyDB</td> </tr> <tr> <td id="file-query-window-1-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-query-window-1-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">DATABASE</span> MyDB <span class="pl-k">SET</span> <span class="pl-k">MULTI_USER</span>;</td> </tr> </table> </div> </div> </div> </div> <a href="proxy.php?url=https://gist.github.com/EitanBlumin/714da61f084d6366f34cdada6d2cdbf2#file-query-window-2-sql">Query window 2.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-query-window-2-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Query window 2.sql content, created by EitanBlumin on 06:28AM on November 03, 2025." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Query window 2.sql"> <tr> <td id="file-query-window-2-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-query-window-2-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> run this in query window 2:</span></td> </tr> <tr> <td id="file-query-window-2-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-query-window-2-sql-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-query-window-2-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-query-window-2-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @CMD <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>);</td> </tr> <tr> <td id="file-query-window-2-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-query-window-2-sql-LC4" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-query-window-2-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-query-window-2-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-query-window-2-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-query-window-2-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-query-window-2-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-query-window-2-sql-LC7" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @CMD <span class="pl-k">=</span> <span class="pl-k">NULL</span>;</td> </tr> <tr> <td id="file-query-window-2-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-query-window-2-sql-LC8" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> @CMD <span class="pl-k">=</span> <span class="pl-c1">ISNULL</span>(@CMD <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>), <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-query-window-2-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-query-window-2-sql-LC9" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-c1">CONCAT</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>KILL &#39;</span>, blocking_session_id)</td> </tr> <tr> <td id="file-query-window-2-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-query-window-2-sql-LC10" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">dm_exec_requests</span></td> </tr> <tr> <td id="file-query-window-2-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-query-window-2-sql-LC11" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-c1">session_id</span> <span class="pl-k">=</span> <span class="pl-c1">1234</span> <span class="pl-c"><span class="pl-c">--</span> replace with the session id of query window 1</span></td> </tr> <tr> <td id="file-query-window-2-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-query-window-2-sql-LC12" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-query-window-2-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-query-window-2-sql-LC13" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @CMD <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-query-window-2-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-query-window-2-sql-LC14" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%s&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>,@CMD) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-query-window-2-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-query-window-2-sql-LC15" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @CMD <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>KILL 0&#39;</span> <span class="pl-k">EXEC</span>(@CMD);</td> </tr> <tr> <td id="file-query-window-2-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-query-window-2-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/0a15d44b05b20329cfcc0a9f3f71e0d2 2025-06-30T14:31:41Z 2025-07-04T15:23:55Z Detect misconfigured jobs with retries and output file Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/0a15d44b05b20329cfcc0a9f3f71e0d2#file-misconfigured-jobs-with-retries-and-output-file-sql">Misconfigured jobs with retries and output file.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-misconfigured-jobs-with-retries-and-output-file-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-sql " style="overflow: auto" tabindex="0" role="region" aria-label="Misconfigured jobs with retries and output file.sql content, created by EitanBlumin on 02:31PM on June 30, 2025." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Misconfigured jobs with retries and output file.sql"> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC4" class="blob-code blob-code-inner js-file-line"> Msg <span class="pl-k">=</span> CONCAT(N<span class="pl-s"><span class="pl-pds">&#39;</span>Job &quot;<span class="pl-pds">&#39;</span></span>, <span class="pl-c1">j</span>.<span class="pl-c1">name</span>, N<span class="pl-s"><span class="pl-pds">&#39;</span>&quot; step <span class="pl-pds">&#39;</span></span>, <span class="pl-c1">s</span>.<span class="pl-c1">step_id</span>, N<span class="pl-s"><span class="pl-pds">&#39;</span> (&quot;<span class="pl-pds">&#39;</span></span>, <span class="pl-c1">s</span>.<span class="pl-c1">step_name</span>,N<span class="pl-s"><span class="pl-pds">&#39;</span>&quot;) <span class="pl-pds">&#39;</span></span>,</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC5" class="blob-code blob-code-inner js-file-line"> , CARE WHEN <span class="pl-c1">s</span>.<span class="pl-c1">retry_attempts</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> THEN N<span class="pl-s"><span class="pl-pds">&#39;</span>has retries enabled but <span class="pl-pds">&#39;</span></span> ELSE N<span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span> END</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC6" class="blob-code blob-code-inner js-file-line"> , CASE WHEN (<span class="pl-c1">s</span>.<span class="pl-c1">flags</span> &amp; <span class="pl-c1">2</span>) <span class="pl-k">=</span> <span class="pl-c1">0</span> THEN N<span class="pl-s"><span class="pl-pds">&#39;</span>Append is disabled (which may cause loss of info) <span class="pl-pds">&#39;</span></span> ELSE N<span class="pl-s"><span class="pl-pds">&#39;</span>Append is enabled <span class="pl-pds">&#39;</span></span> END</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC7" class="blob-code blob-code-inner js-file-line"> , CASE WHEN</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC8" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(TIME)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC9" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTTM)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC10" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTDT)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC11" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(DATE)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC12" class="blob-code blob-code-inner js-file-line"> THEN</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC13" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>with no time-based tokens contained in the output file path<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC14" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> CASE WHEN (<span class="pl-c1">s</span>.<span class="pl-c1">flags</span> &amp; <span class="pl-c1">2</span>) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> THEN N<span class="pl-s"><span class="pl-pds">&#39;</span> (which may cause the file to grow out of control) <span class="pl-pds">&#39;</span></span> ELSE N<span class="pl-s"><span class="pl-pds">&#39;</span> (which are needed when append is enabled) <span class="pl-pds">&#39;</span></span> END</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC15" class="blob-code blob-code-inner js-file-line"> ELSE N<span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span> END</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC16" class="blob-code blob-code-inner js-file-line"> , N<span class="pl-s"><span class="pl-pds">&#39;</span> for the output file path: <span class="pl-pds">&#39;</span></span>, <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span>)</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC17" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">s</span>.<span class="pl-c1">step_id</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC18" class="blob-code blob-code-inner js-file-line"> , RemediationCommand <span class="pl-k">=</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>-- REVIEW BEFORE EXECUTION:</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> EXEC msdb.dbo.sp_update_jobstep </span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @job_name = N<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> QUOTENAME(<span class="pl-c1">j</span>.<span class="pl-c1">name</span>, <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, </span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @step_id = <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> CAST(<span class="pl-c1">s</span>.<span class="pl-c1">step_id</span> <span class="pl-k">AS</span> NVARCHAR(MAX)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, </span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @output_file_name = N<span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC23" class="blob-code blob-code-inner js-file-line"> CASE </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC24" class="blob-code blob-code-inner js-file-line"> WHEN <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(TIME)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC25" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTTM)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC26" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTDT)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC27" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(DATE)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC28" class="blob-code blob-code-inner js-file-line"> THEN</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC29" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Insert tokens before .txt (case-insensitive)</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC30" class="blob-code blob-code-inner js-file-line"> CASE </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC31" class="blob-code blob-code-inner js-file-line"> WHEN <span class="pl-c1">LOWER</span>(<span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span>) <span class="pl-k">LIKE</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>%.txt<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC32" class="blob-code blob-code-inner js-file-line"> THEN LEFT(<span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span>, LEN(<span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span>) <span class="pl-k">-</span> <span class="pl-c1">4</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>_$(ESCAPE_SQUOTE(DATE))_$(ESCAPE_SQUOTE(TIME)).txt<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC33" class="blob-code blob-code-inner js-file-line"> ELSE <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>_$(ESCAPE_SQUOTE(DATE))_$(ESCAPE_SQUOTE(TIME))<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC34" class="blob-code blob-code-inner js-file-line"> END</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC35" class="blob-code blob-code-inner js-file-line"> ELSE</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC36" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC37" class="blob-code blob-code-inner js-file-line"> END <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span>, </span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @flags = <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> CAST(<span class="pl-c1">s</span>.<span class="pl-c1">flags</span> | <span class="pl-c1">2</span> <span class="pl-k">AS</span> NVARCHAR(MAX))</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC40" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sysjobs <span class="pl-k">AS</span> j</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sysjobsteps <span class="pl-k">AS</span> s <span class="pl-k">ON</span> <span class="pl-c1">j</span>.<span class="pl-c1">job_id</span> <span class="pl-k">=</span> <span class="pl-c1">s</span>.<span class="pl-c1">job_id</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC44" class="blob-code blob-code-inner js-file-line"> j.[enabled] <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> <span class="pl-k">IS NOT NULL</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> LTRIM(RTRIM(<span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span>)) <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC47" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC48" class="blob-code blob-code-inner js-file-line"> (<span class="pl-c1">s</span>.<span class="pl-c1">retry_attempts</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">AND</span> (<span class="pl-c1">s</span>.<span class="pl-c1">flags</span> &amp; <span class="pl-c1">2</span>) <span class="pl-k">=</span> <span class="pl-c1">0</span>) <span class="pl-c"><span class="pl-c">--</span> Append to output file is disabled</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC49" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OR</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC50" class="blob-code blob-code-inner js-file-line"> (</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC51" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">s</span>.<span class="pl-c1">flags</span> &amp; <span class="pl-c1">2</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> <span class="pl-c"><span class="pl-c">--</span> Append enabled</span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC52" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(TIME)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC53" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTTM)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC54" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(STRTDT)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC55" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">s</span>.<span class="pl-c1">output_file_name</span> NOT <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%(DATE)%<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC56" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC57" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> </td> </tr> <tr> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-misconfigured-jobs-with-retries-and-output-file-sql-LC59" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">j</span>.<span class="pl-c1">name</span>, <span class="pl-c1">s</span>.<span class="pl-c1">step_id</span>;</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/1115d31ced67462fafc1317416b6cf72 2024-10-27T20:22:37Z 2024-12-12T05:39:43Z DatabaseIntegrityCheck - Allocation and Catalog Checks Only Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/1115d31ced67462fafc1317416b6cf72#file-databaseintegritycheck-allocation-and-catalog-checks-only-sql">DatabaseIntegrityCheck - Allocation and Catalog Checks Only.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="DatabaseIntegrityCheck - Allocation and Catalog Checks Only.sql content, created by EitanBlumin on 08:22PM on October 27, 2024." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="DatabaseIntegrityCheck - Allocation and Catalog Checks Only.sql"> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @MaxEndTime <span class="pl-k">datetime</span> <span class="pl-k">=</span> <span class="pl-c1">DATEADD</span>(HOUR, <span class="pl-c1">2</span>, <span class="pl-c1">GETDATE</span>())</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @TimeLimitSeconds <span class="pl-k">int</span>;</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC3" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @TimeLimitSeconds <span class="pl-k">=</span> <span class="pl-c1">DATEDIFF</span>(second, <span class="pl-c1">GETDATE</span>(), @MaxEndTime)</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC5" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">DatabaseIntegrityCheck</span></td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC7" class="blob-code blob-code-inner js-file-line"> @Databases <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ALL_DATABASES&#39;</span>,</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC8" class="blob-code blob-code-inner js-file-line"> @CheckCommands <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>CHECKALLOC,CHECKCATALOG&#39;</span>,</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC9" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span>@PhysicalOnly = &#39;Y&#39;,</span></td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC10" class="blob-code blob-code-inner js-file-line"> @TimeLimit <span class="pl-k">=</span> @TimeLimitSeconds,</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC11" class="blob-code blob-code-inner js-file-line"> @LogToTable<span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Y&#39;</span>,</td> </tr> <tr> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-databaseintegritycheck-allocation-and-catalog-checks-only-sql-LC12" class="blob-code blob-code-inner js-file-line"> @Execute <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Y&#39;</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/b8032db87b3e59c4280e166facd3a7a2 2024-10-27T20:20:12Z 2024-10-28T14:01:05Z DatabaseIntegrityCheck - Incremental Object-Level Checks Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/b8032db87b3e59c4280e166facd3a7a2#file-databaseintegritycheck-incremental-object-level-checks-sql">DatabaseIntegrityCheck - Incremental Object-Level Checks.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-databaseintegritycheck-incremental-object-level-checks-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="DatabaseIntegrityCheck - Incremental Object-Level Checks.sql content, created by EitanBlumin on 08:20PM on October 27, 2024." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="DatabaseIntegrityCheck - Incremental Object-Level Checks.sql"> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC1" class="blob-code blob-code-inner js-file-line">DECLARE @EndTime datetime = DATEADD(hour, 2, GETDATE()) -- Adjust the time limit as needed</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC2" class="blob-code blob-code-inner js-file-line">DECLARE @OlaHallengrenDBName sysname = DB_NAME() -- This script must run within the context of the database where Ola&#39;s maintenance solution was installed</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC3" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC4" class="blob-code blob-code-inner js-file-line">DECLARE @DBName sysname, @ObjNameFull nvarchar(4000), @ObjNameLean sysname, @SchName sysname</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC5" class="blob-code blob-code-inner js-file-line">DECLARE @CheckTime datetime, @LastCheckDate datetime, @ObjType sysname</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC6" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC7" class="blob-code blob-code-inner js-file-line">IF OBJECT_ID(&#39;tempdb..#Objects&#39;) IS NOT NULL DROP TABLE #Objects;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC8" class="blob-code blob-code-inner js-file-line">CREATE TABLE #Objects</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC9" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC10" class="blob-code blob-code-inner js-file-line"> DBName sysname,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC11" class="blob-code blob-code-inner js-file-line"> SchemaName sysname,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC12" class="blob-code blob-code-inner js-file-line"> TableName sysname,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC13" class="blob-code blob-code-inner js-file-line"> ObjType sysname,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC14" class="blob-code blob-code-inner js-file-line"> UsedPages int,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC15" class="blob-code blob-code-inner js-file-line"> LastCheck datetime,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC16" class="blob-code blob-code-inner js-file-line"> FullTableName AS (QUOTENAME(DBName) + N&#39;.&#39; + QUOTENAME(SchemaName) + &#39;.&#39; + QUOTENAME(TableName))</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC17" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC18" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC19" class="blob-code blob-code-inner js-file-line">DECLARE @CMD nvarchar(max), @SpExecuteSql nvarchar(4000);</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC20" class="blob-code blob-code-inner js-file-line">SET @CMD = N&#39;SELECT DB_NAME()</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC21" class="blob-code blob-code-inner js-file-line">, ss.name</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC22" class="blob-code blob-code-inner js-file-line">, so.[name]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC23" class="blob-code blob-code-inner js-file-line">, CASE WHEN so.[type] = &#39;&#39;V&#39;&#39; THEN &#39;&#39;VIEW&#39;&#39; ELSE &#39;&#39;TABLE&#39;&#39; END</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC24" class="blob-code blob-code-inner js-file-line">, SUM(sps.used_page_count) AS used_page_count</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC25" class="blob-code blob-code-inner js-file-line">, ep.[EndTime]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC26" class="blob-code blob-code-inner js-file-line">FROM sys.objects so</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC27" class="blob-code blob-code-inner js-file-line">INNER JOIN sys.dm_db_partition_stats sps ON so.[object_id] = sps.[object_id]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC28" class="blob-code blob-code-inner js-file-line">INNER JOIN sys.indexes si ON so.[object_id] = si.[object_id]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC29" class="blob-code blob-code-inner js-file-line">INNER JOIN sys.schemas ss ON so.[schema_id] = ss.[schema_id]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC30" class="blob-code blob-code-inner js-file-line">OUTER APPLY</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC31" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC32" class="blob-code blob-code-inner js-file-line"> SELECT [DatabaseName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC33" class="blob-code blob-code-inner js-file-line"> ,[SchemaName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC34" class="blob-code blob-code-inner js-file-line"> ,[ObjectName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC35" class="blob-code blob-code-inner js-file-line"> ,[ObjectType]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC36" class="blob-code blob-code-inner js-file-line"> ,MAX([EndTime]) AS [EndTime]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC37" class="blob-code blob-code-inner js-file-line"> FROM &#39; + @OlaHallengrenDBName + N&#39;.[dbo].[CommandLog]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC38" class="blob-code blob-code-inner js-file-line"> WHERE CommandType = &#39;&#39;DBCC_CHECKTABLE&#39;&#39;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC39" class="blob-code blob-code-inner js-file-line"> AND [DatabaseName] COLLATE DATABASE_DEFAULT = DB_NAME() COLLATE DATABASE_DEFAULT</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC40" class="blob-code blob-code-inner js-file-line"> AND [SchemaName] COLLATE DATABASE_DEFAULT = ss.[name] COLLATE DATABASE_DEFAULT</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC41" class="blob-code blob-code-inner js-file-line"> AND [ObjectName] COLLATE DATABASE_DEFAULT = so.[name] COLLATE DATABASE_DEFAULT</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC42" class="blob-code blob-code-inner js-file-line"> AND [ObjectType] COLLATE DATABASE_DEFAULT = so.[type] COLLATE DATABASE_DEFAULT</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC43" class="blob-code blob-code-inner js-file-line"> GROUP BY</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC44" class="blob-code blob-code-inner js-file-line"> [DatabaseName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC45" class="blob-code blob-code-inner js-file-line"> ,[SchemaName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC46" class="blob-code blob-code-inner js-file-line"> ,[ObjectName]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC47" class="blob-code blob-code-inner js-file-line"> ,[ObjectType]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC48" class="blob-code blob-code-inner js-file-line">) AS ep</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC49" class="blob-code blob-code-inner js-file-line">WHERE so.[type] IN (&#39;&#39;U&#39;&#39;, &#39;&#39;V&#39;&#39;)</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC50" class="blob-code blob-code-inner js-file-line">GROUP BY so.[object_id], so.[name], ss.name, so.[type], so.type_desc, ep.[EndTime]&#39;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC51" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC52" class="blob-code blob-code-inner js-file-line">DECLARE DBs CURSOR</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC53" class="blob-code blob-code-inner js-file-line">LOCAL FAST_FORWARD READ_ONLY</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC54" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC55" class="blob-code blob-code-inner js-file-line">SELECT [name]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC56" class="blob-code blob-code-inner js-file-line">FROM sys.databases</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC57" class="blob-code blob-code-inner js-file-line">WHERE HAS_DBACCESS([name]) = 1</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC58" class="blob-code blob-code-inner js-file-line">AND state = 0</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC59" class="blob-code blob-code-inner js-file-line">AND [name] NOT IN (&#39;tempdb&#39;)</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC60" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC61" class="blob-code blob-code-inner js-file-line">OPEN DBs</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC62" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC63" class="blob-code blob-code-inner js-file-line">WHILE 1=1</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC64" class="blob-code blob-code-inner js-file-line">BEGIN</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC65" class="blob-code blob-code-inner js-file-line"> FETCH NEXT FROM DBs INTO @DBName;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC66" class="blob-code blob-code-inner js-file-line"> IF @@FETCH_STATUS &lt;&gt; 0 BREAK;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC67" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC68" class="blob-code blob-code-inner js-file-line"> SET @SpExecuteSql = QUOTENAME(@DBName) + N&#39;..sp_executesql&#39;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC69" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC70" class="blob-code blob-code-inner js-file-line"> INSERT INTO #Objects</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC71" class="blob-code blob-code-inner js-file-line"> (DBName, SchemaName, TableName, ObjType, UsedPages, LastCheck)</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC72" class="blob-code blob-code-inner js-file-line"> EXEC @SpExecuteSql @CMD</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC73" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC74" class="blob-code blob-code-inner js-file-line">END</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC75" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC76" class="blob-code blob-code-inner js-file-line">CLOSE DBs;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC77" class="blob-code blob-code-inner js-file-line">DEALLOCATE DBs;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC78" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC79" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC80" class="blob-code blob-code-inner js-file-line">DECLARE obj CURSOR</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC81" class="blob-code blob-code-inner js-file-line">LOCAL FAST_FORWARD READ_ONLY</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC82" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC83" class="blob-code blob-code-inner js-file-line">SELECT DBName</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC84" class="blob-code blob-code-inner js-file-line">, FullTableName</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC85" class="blob-code blob-code-inner js-file-line">, SchemaName</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC86" class="blob-code blob-code-inner js-file-line">, TableName</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC87" class="blob-code blob-code-inner js-file-line">, ObjType</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC88" class="blob-code blob-code-inner js-file-line">, LastCheck</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC89" class="blob-code blob-code-inner js-file-line">FROM #Objects</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC90" class="blob-code blob-code-inner js-file-line">ORDER BY LastCheck ASC, UsedPages DESC</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC91" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC92" class="blob-code blob-code-inner js-file-line">OPEN obj;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC93" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC94" class="blob-code blob-code-inner js-file-line">WHILE GETDATE() &lt; @EndTime</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC95" class="blob-code blob-code-inner js-file-line">BEGIN</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC96" class="blob-code blob-code-inner js-file-line"> FETCH NEXT FROM obj INTO @DBName, @ObjNameFull, @SchName, @ObjNameLean, @ObjType, @LastCheckDate;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC97" class="blob-code blob-code-inner js-file-line"> IF @@FETCH_STATUS &lt;&gt; 0 BREAK;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC98" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC99" class="blob-code blob-code-inner js-file-line"> EXEC [dbo].[DatabaseIntegrityCheck]</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC100" class="blob-code blob-code-inner js-file-line"> @Databases = @DBName,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC101" class="blob-code blob-code-inner js-file-line"> @CheckCommands = &#39;CHECKTABLE&#39;,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC102" class="blob-code blob-code-inner js-file-line"> @Objects = @ObjNameFull,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC103" class="blob-code blob-code-inner js-file-line"> @Execute = &#39;Y&#39;,</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC104" class="blob-code blob-code-inner js-file-line"> @LogToTable = &#39;Y&#39;</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC105" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC106" class="blob-code blob-code-inner js-file-line">END</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC107" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC108" class="blob-code blob-code-inner js-file-line">CLOSE obj</td> </tr> <tr> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-databaseintegritycheck-incremental-object-level-checks-sql-LC109" class="blob-code blob-code-inner js-file-line">DEALLOCATE obj</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/1ad9366b3c864cd9f60eff766c2cacf8 2023-07-17T14:05:00Z 2023-08-05T08:13:26Z ALTER TABLE SWITCH demo for errors 4907 and 4908 Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/1ad9366b3c864cd9f60eff766c2cacf8#file-alter-table-switch-demo-errors-4907-and-4908-sql">ALTER TABLE SWITCH demo errors 4907 and 4908.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-alter-table-switch-demo-errors-4907-and-4908-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="ALTER TABLE SWITCH demo errors 4907 and 4908.sql content, created by EitanBlumin on 02:05PM on July 17, 2023." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="ALTER TABLE SWITCH demo errors 4907 and 4908.sql"> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver16#switch--partition-source_partition_number_expression--to--schema_name--target_table--partition-target_partition_number_expression-</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF1 (<span class="pl-k">int</span>) <span class="pl-k">AS</span> <span class="pl-k">RANGE</span> <span class="pl-c1">RIGHT</span> FOR <span class="pl-k">VALUES</span> (<span class="pl-c1">0</span>, <span class="pl-c1">100</span>)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> SCHEME PS1 <span class="pl-k">AS</span> <span class="pl-k">PARTITION</span> PF1 ALL <span class="pl-k">TO</span> ([PRIMARY]);</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF2 (<span class="pl-k">int</span>) <span class="pl-k">AS</span> <span class="pl-k">RANGE</span> <span class="pl-c1">RIGHT</span> FOR <span class="pl-k">VALUES</span> (<span class="pl-c1">0</span>, <span class="pl-c1">100</span>, <span class="pl-c1">200</span>)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> SCHEME PS2 <span class="pl-k">AS</span> <span class="pl-k">PARTITION</span> PF2 ALL <span class="pl-k">TO</span> ([PRIMARY]);</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF3 (<span class="pl-k">int</span>) <span class="pl-k">AS</span> <span class="pl-k">RANGE</span> <span class="pl-c1">RIGHT</span> FOR <span class="pl-k">VALUES</span> (<span class="pl-c1">0</span>, <span class="pl-c1">200</span>)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PARTITION</span> SCHEME PS3 <span class="pl-k">AS</span> <span class="pl-k">PARTITION</span> PF3 ALL <span class="pl-k">TO</span> ([PRIMARY]);</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> PrtTable1: The source table</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC18" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC19" class="blob-code blob-code-inner js-file-line"> prtCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">CONSTRAINT</span> PK_PrtTable1 <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span> <span class="pl-k">CLUSTERED</span> <span class="pl-k">ON</span> PS1(prtCol),</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC20" class="blob-code blob-code-inner js-file-line"> otherCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC21" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">ON</span> PS1(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX1 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> (otherCol) <span class="pl-k">ON</span> PS2(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX1_3 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> (otherCol) <span class="pl-k">ON</span> PS3(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC25" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> PrtTable2: Target table partitioned and indexed identically to source table PrtTable1</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC30" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC31" class="blob-code blob-code-inner js-file-line"> prtCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">CONSTRAINT</span> PK_PrtTable2 <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span> <span class="pl-k">CLUSTERED</span> <span class="pl-k">ON</span> PS1(prtCol),</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC32" class="blob-code blob-code-inner js-file-line"> otherCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC33" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">ON</span> PS1(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC34" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX2 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span> (otherCol) <span class="pl-k">ON</span> PS2(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX2_3 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span> (otherCol) <span class="pl-k">ON</span> PS3(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC37" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC39" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> PrtTable3: Target table without any nonclustered indexes, partition range not identical but contains the range from source table</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable3</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC42" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC43" class="blob-code blob-code-inner js-file-line"> prtCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">CONSTRAINT</span> PK_PrtTable3 <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span> <span class="pl-k">CLUSTERED</span> <span class="pl-k">ON</span> PS3(prtCol),</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC44" class="blob-code blob-code-inner js-file-line"> otherCol <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC45" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">ON</span> PS3(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC46" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Insert just one row into source table, goes into partition number 2</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> (prtCol, otherCol) <span class="pl-k">VALUES</span>(<span class="pl-c1">50</span>, <span class="pl-c1">30</span>)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">OBJECT_NAME</span>(<span class="pl-c1">object_id</span>), index_id, partition_number, <span class="pl-k">rows</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">partitions</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">object_id</span> <span class="pl-k">IN</span> (<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable1&#39;</span>),<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable2&#39;</span>),<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable3&#39;</span>))</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE dbo.PrtTable1 SWITCH PARTITION 2 TO dbo.PrtTable2 PARTITION 2&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> SWITCH <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span> <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-c"><span class="pl-c">--</span> raises error 4907</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE dbo.PrtTable1 SWITCH PARTITION 2 TO dbo.PrtTable3 PARTITION 2&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> SWITCH <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable3</span> <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-c"><span class="pl-c">--</span> also raises error 4907</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Moving IX1 to same PS as the table PrtTable1&#39;</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX1 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> (otherCol) <span class="pl-k">WITH</span>(<span class="pl-k">DROP_EXISTING</span> <span class="pl-k">=</span> <span class="pl-k">ON</span>) <span class="pl-k">ON</span> PS1(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE dbo.PrtTable1 SWITCH PARTITION 2 TO dbo.PrtTable2 PARTITION 2&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> SWITCH <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span> <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-c"><span class="pl-c">--</span> raises error 4908 due to different range boundaries</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Moving IX1_3 to same PS as the table PrtTable1&#39;</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX1_3 <span class="pl-k">ON</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> (otherCol) <span class="pl-k">WITH</span>(<span class="pl-k">DROP_EXISTING</span> <span class="pl-k">=</span> <span class="pl-k">ON</span>) <span class="pl-k">ON</span> PS1(prtCol)</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE dbo.PrtTable1 SWITCH PARTITION 2 TO dbo.PrtTable2 PARTITION 2&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> SWITCH <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span> <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-c"><span class="pl-c">--</span> raises error 4907, but this time on the target table</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE dbo.PrtTable1 SWITCH PARTITION 2 TO dbo.PrtTable3 PARTITION 2&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span> SWITCH <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable3</span> <span class="pl-k">PARTITION</span> <span class="pl-c1">2</span> <span class="pl-c"><span class="pl-c">--</span> without nonclustered index on target: works (even though range boundaries are different, they&#39;re still matching)</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Success&#39;</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">OBJECT_NAME</span>(<span class="pl-c1">object_id</span>), index_id, partition_number, <span class="pl-k">rows</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">partitions</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">object_id</span> <span class="pl-k">IN</span> (<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable1&#39;</span>),<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable2&#39;</span>),<span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>PrtTable3&#39;</span>))</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Cleanup:</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable1</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable2</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PrtTable3</span></td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> SCHEME PS1</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF1</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> SCHEME PS2</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF2</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> SCHEME PS3</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">PARTITION</span> <span class="pl-k">FUNCTION</span> PF3</td> </tr> <tr> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-alter-table-switch-demo-errors-4907-and-4908-sql-LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/b4395fda4b36df5e6e6a28a2ddfac70e 2023-01-13T09:02:57Z 2023-03-12T20:36:41Z Demo creation of tables with system-named constraints Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/b4395fda4b36df5e6e6a28a2ddfac70e#file-system_named_constraints_demo-sql">system_named_constraints_demo.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-system_named_constraints_demo-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="system_named_constraints_demo.sql content, created by EitanBlumin on 09:02AM on January 13, 2023." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="system_named_constraints_demo.sql"> <tr> <td id="file-system_named_constraints_demo-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-system_named_constraints_demo-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> [dbo].[TestTable2];</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-system_named_constraints_demo-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> [dbo].[TestTable1];</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-system_named_constraints_demo-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">TestEdgeTable</span>;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-system_named_constraints_demo-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">TestNodeTable1</span>;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-system_named_constraints_demo-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">TestNodeTable2</span>;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-system_named_constraints_demo-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">TestNodeTable3</span>;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-system_named_constraints_demo-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-system_named_constraints_demo-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">SCHEMA_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>EitanTest&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">SCHEMA</span> EitanTest;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-system_named_constraints_demo-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-system_named_constraints_demo-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">SCHEMA</span> EitanTest AUTHORIZATION dbo;</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-system_named_constraints_demo-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-system_named_constraints_demo-sql-LC12" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-system_named_constraints_demo-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> EitanTest.[TestTable1](</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-system_named_constraints_demo-sql-LC14" class="blob-code blob-code-inner js-file-line"> [ID] [int] <span class="pl-k">IDENTITY</span>(<span class="pl-c1">1</span>,<span class="pl-c1">1</span>) <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span>,</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-system_named_constraints_demo-sql-LC15" class="blob-code blob-code-inner js-file-line"> [InsertTime] [datetime] <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DEFAULT</span> (<span class="pl-c1">GETUTCDATE</span>()),</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-system_named_constraints_demo-sql-LC16" class="blob-code blob-code-inner js-file-line"> [Salary] [int] <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">CHECK</span> ([Salary]<span class="pl-k">&gt;=</span><span class="pl-c1">0</span>),</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-system_named_constraints_demo-sql-LC17" class="blob-code blob-code-inner js-file-line"> [Email] <span class="pl-k">nvarchar</span>(<span class="pl-c1">128</span>) <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">UNIQUE</span> <span class="pl-k">CHECK</span> ([Email] <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>_%@_%._%&#39;</span>),</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-system_named_constraints_demo-sql-LC18" class="blob-code blob-code-inner js-file-line"> [ParentID] [int] <span class="pl-k">NULL</span> <span class="pl-k">FOREIGN KEY</span> <span class="pl-k">REFERENCES</span> EitanTest.[TestTable1](ID),</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-system_named_constraints_demo-sql-LC19" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CHECK</span> ([InsertTime] <span class="pl-k">&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2000-01-01&#39;</span> <span class="pl-k">AND</span> [Salary] <span class="pl-k">&gt;</span> <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-system_named_constraints_demo-sql-LC20" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-system_named_constraints_demo-sql-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-system_named_constraints_demo-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> [dbo].[TestTable2](</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-system_named_constraints_demo-sql-LC23" class="blob-code blob-code-inner js-file-line"> [ID] [int] <span class="pl-k">IDENTITY</span>(<span class="pl-c1">1</span>,<span class="pl-c1">1</span>) <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span>,</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-system_named_constraints_demo-sql-LC24" class="blob-code blob-code-inner js-file-line"> [HeadID] [int] <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">FOREIGN KEY</span> <span class="pl-k">REFERENCES</span> EitanTest.[TestTable1] ([ID]),</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-system_named_constraints_demo-sql-LC25" class="blob-code blob-code-inner js-file-line"> [Email2] <span class="pl-k">nvarchar</span>(<span class="pl-c1">128</span>) <span class="pl-k">NULL</span> <span class="pl-k">FOREIGN KEY</span> <span class="pl-k">REFERENCES</span> EitanTest.[TestTable1] ([Email])</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-system_named_constraints_demo-sql-LC26" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-system_named_constraints_demo-sql-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-system_named_constraints_demo-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> If SQL 2019 or newer</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-system_named_constraints_demo-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> (<span class="pl-c1">CONVERT</span>(<span class="pl-k">FLOAT</span>, (@@microsoftversion <span class="pl-k">/</span> 0x1000000) &amp; 0xff)) <span class="pl-k">&gt;=</span> <span class="pl-c1">15</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-system_named_constraints_demo-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-system_named_constraints_demo-sql-LC31" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span>(N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-system_named_constraints_demo-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -- CREATE node and edge tables</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-system_named_constraints_demo-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CREATE TABLE dbo.TestNodeTable1</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-system_named_constraints_demo-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> (</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-system_named_constraints_demo-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ID INTEGER PRIMARY KEY</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-system_named_constraints_demo-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> , CustomerName VARCHAR(100)</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-system_named_constraints_demo-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> )</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-system_named_constraints_demo-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AS NODE;</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-system_named_constraints_demo-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-system_named_constraints_demo-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CREATE TABLE dbo.TestNodeTable2</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-system_named_constraints_demo-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> (</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-system_named_constraints_demo-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ID INTEGER PRIMARY KEY</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-system_named_constraints_demo-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> , SupplierName VARCHAR(100)</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-system_named_constraints_demo-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> )</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-system_named_constraints_demo-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AS NODE;</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-system_named_constraints_demo-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-system_named_constraints_demo-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CREATE TABLE dbo.TestNodeTable3</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-system_named_constraints_demo-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> (</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-system_named_constraints_demo-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ID INTEGER PRIMARY KEY</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-system_named_constraints_demo-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> , ProductName VARCHAR(100)</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-system_named_constraints_demo-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> )</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-system_named_constraints_demo-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AS NODE;</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-system_named_constraints_demo-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-system_named_constraints_demo-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -- CREATE edge table with edge constraints.</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-system_named_constraints_demo-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CREATE TABLE dbo.TestEdgeTable</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-system_named_constraints_demo-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> (</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-system_named_constraints_demo-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> PurchaseCount INT</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-system_named_constraints_demo-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> , CONNECTION (dbo.TestNodeTable1 TO dbo.TestNodeTable3, dbo.TestNodeTable2 TO dbo.TestNodeTable3)</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-system_named_constraints_demo-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> , CONNECTION (dbo.TestNodeTable2 TO dbo.TestNodeTable1)</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-system_named_constraints_demo-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> )</span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-system_named_constraints_demo-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AS EDGE;<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-system_named_constraints_demo-sql-LC62" class="blob-code blob-code-inner js-file-line"> );</td> </tr> <tr> <td id="file-system_named_constraints_demo-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-system_named_constraints_demo-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/d9e08c8b1df6d8acd543d3b4689382d7 2022-05-08T08:19:29Z 2022-05-08T08:20:26Z SQL YAML Build Configuration for Azure Pipelines Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/d9e08c8b1df6d8acd543d3b4689382d7#file-sqldatabaseyamlbuildconfiguration-yml">SQLDatabaseYAMLBuildConfiguration.yml</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sqldatabaseyamlbuildconfiguration-yml" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-yaml " style="overflow: auto" tabindex="0" role="region" aria-label="SQLDatabaseYAMLBuildConfiguration.yml content, created by EitanBlumin on 08:19AM on May 08, 2022." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="SQLDatabaseYAMLBuildConfiguration.yml"> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> SQL Database Project Build Configuration</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">trigger</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC4" class="blob-code blob-code-inner js-file-line">- <span class="pl-s">master</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC5" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">pool</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC7" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">vmImage</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>VS2017-Win2016<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC8" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">variables</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC10" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">solution</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>**/*.sln<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC11" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">buildPlatform</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>Any CPU<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC12" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">buildConfiguration</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>Release<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">steps</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC16" class="blob-code blob-code-inner js-file-line">- <span class="pl-ent">task</span>: <span class="pl-s">VSBuild@1</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC17" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">inputs</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC18" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">solution</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>$(solution)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC19" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">platform</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>$(buildPlatform)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC20" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">configuration</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>$(buildConfiguration)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC23" class="blob-code blob-code-inner js-file-line">- <span class="pl-ent">task</span>: <span class="pl-s">CopyFiles@2</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC24" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">displayName</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>Copy Files to: $(build.artifactstagingdirectory)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC25" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">inputs</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC26" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">SourceFolder</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>$(system.defaultworkingdirectory)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC27" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">Contents</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>**\bin\$(BuildConfiguration)\**<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC28" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">TargetFolder</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>$(build.artifactstagingdirectory)<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC29" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC30" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC31" class="blob-code blob-code-inner js-file-line">- <span class="pl-ent">task</span>: <span class="pl-s">PublishBuildArtifacts@1</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC32" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">displayName</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>Publish artifacts<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC33" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">inputs</span>:</td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC34" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">PathtoPublish</span>: <span class="pl-s">$(build.artifactstagingdirectory)</span></td> </tr> <tr> <td id="file-sqldatabaseyamlbuildconfiguration-yml-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sqldatabaseyamlbuildconfiguration-yml-LC35" class="blob-code blob-code-inner js-file-line"> <span class="pl-ent">ArtifactName</span>: <span class="pl-s"><span class="pl-pds">&#39;</span>PublishBuildArtifacts<span class="pl-pds">&#39;</span></span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/42a1ed597ccb9269d07cfcc9560958dc 2022-04-01T18:44:57Z 2025-12-14T09:19:42Z Example job command to implement self-monitoring for SQL Sentry monitoring service hearbeats Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/42a1ed597ccb9269d07cfcc9560958dc#file-sqlsentry_heartbeat_monitoring-sql">SQLSentry_Heartbeat_Monitoring.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sqlsentry_heartbeat_monitoring-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="SQLSentry_Heartbeat_Monitoring.sql content, created by EitanBlumin on 06:44PM on April 01, 2022." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="SQLSentry_Heartbeat_Monitoring.sql"> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Run this in the right SQL Sentry database</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>USE [SentryOne];</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>USE [SQLSentry];</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>[dbo].[heartbeat_log]&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC7" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> [dbo].[heartbeat_log](</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC8" class="blob-code blob-code-inner js-file-line"> [servername] [nvarchar](<span class="pl-c1">300</span>) <span class="pl-k">CONSTRAINT</span> PK_Heartbeat_Log <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span> <span class="pl-k">CLUSTERED</span> <span class="pl-k">WITH</span>(<span class="pl-k">IGNORE_DUP_KEY</span><span class="pl-k">=</span><span class="pl-k">ON</span>,<span class="pl-k">DATA_COMPRESSION</span><span class="pl-k">=</span><span class="pl-k">PAGE</span>),</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC9" class="blob-code blob-code-inner js-file-line"> [heartbeatdate] [datetime] <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC10" class="blob-code blob-code-inner js-file-line"> [ActualHeartbeatDate] [datetime] <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC11" class="blob-code blob-code-inner js-file-line"> );</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC15" class="blob-code blob-code-inner js-file-line"> @HeartbeatThresholdMinutes <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">5</span>,</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC16" class="blob-code blob-code-inner js-file-line"> @HeartbeatRepeatAlertThresholdHours <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC17" class="blob-code blob-code-inner js-file-line"> @GlobalObjID <span class="pl-k">UNIQUEIDENTIFIER</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC18" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @GlobalObjID <span class="pl-k">=</span> ObjectID <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">vwObjects_Global</span>;</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @SubjectTitle <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">255</span>), @BodyText <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">4000</span>);</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @SubjectTitle <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Monitoring Service: Heartbeat Failure&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Delete any irrelevant heartbeat failures from log</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DELETE</span> HL</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> optionally use this output to implement an &quot;auto-resolve&quot; logic:</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> OUTPUT deleted.servername INTO @RestoredHeartbeats</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">heartbeat_log</span> <span class="pl-k">AS</span> HL</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">ManagementEngine</span> <span class="pl-k">AS</span> E</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-c1">HL</span>.<span class="pl-c1">servername</span> <span class="pl-k">=</span> <span class="pl-c1">E</span>.<span class="pl-c1">servername</span> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">E</span>.<span class="pl-c1">HeartbeatDateTime</span> <span class="pl-k">&gt;</span> <span class="pl-c1">HL</span>.<span class="pl-c1">HeartbeatDate</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC31" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Get all monitoring servers with outdated heartbeats and are not snoozed</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @site <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">200</span>), @servername <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">200</span>), @HeartbeatDateTime <span class="pl-k">datetime</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC34" class="blob-code blob-code-inner js-file-line">, @text <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">200</span>), @title <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">200</span>), @HeartbeatDateTimeLocal <span class="pl-k">datetime</span>;</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC35" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> serverlist <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC38" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> T.[Name],E.[servername], <span class="pl-c1">ISNULL</span>(<span class="pl-c1">E</span>.<span class="pl-c1">HeartbeatDateTime</span>, <span class="pl-c1">E</span>.<span class="pl-c1">LastInitializationDateTime</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">ManagementEngine</span> E</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> [dbo].[Site] T <span class="pl-k">ON</span> <span class="pl-c1">T</span>.<span class="pl-c1">ID</span> <span class="pl-k">=</span> <span class="pl-c1">E</span>.<span class="pl-c1">SiteID</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">ISNULL</span>(<span class="pl-c1">E</span>.<span class="pl-c1">HeartbeatDateTime</span>, <span class="pl-c1">E</span>.<span class="pl-c1">LastInitializationDateTime</span>) <span class="pl-k">&lt;</span> <span class="pl-c1">DATEADD</span>(MINUTE, <span class="pl-k">-</span>@HeartbeatThresholdMinutes, <span class="pl-c1">GETUTCDATE</span>())</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-c1">st</span>.<span class="pl-c1">ObjectID</span> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">SnoozeStatus</span> st <span class="pl-k">WHERE</span> <span class="pl-c1">st</span>.<span class="pl-c1">ObjectID</span> <span class="pl-k">IN</span> (<span class="pl-c1">E</span>.<span class="pl-c1">ObjectID</span>,<span class="pl-c1">T</span>.<span class="pl-c1">ObjectID</span>,@GlobalObjID) <span class="pl-k">AND</span> <span class="pl-c1">st</span>.<span class="pl-c1">ConditionID</span> <span class="pl-k">IS</span> <span class="pl-k">NULL</span> )</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC44" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> serverlist</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC46" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC49" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> serverlist <span class="pl-k">INTO</span> @site, @servername, @HeartbeatDateTime</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC50" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC51" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC52" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @HeartbeatDateTimeLocal <span class="pl-k">=</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">datetime</span>, @HeartbeatDateTime <span class="pl-k">AT</span> <span class="pl-k">TIME</span> <span class="pl-k">ZONE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>UTC&#39;</span> <span class="pl-k">AT</span> <span class="pl-k">TIME</span> <span class="pl-k">ZONE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Israel Standard Time&#39;</span> )</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC53" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @title <span class="pl-k">=</span> @site <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>: &#39;</span><span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@servername) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> @SubjectTitle</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC54" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @text <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Monitor server &lt;b&gt;&#39;</span> <span class="pl-k">+</span> @servername <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;/b&gt; has lost connection to the repository.&lt;br/&gt;Last heartbeat was at &lt;b&gt;&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">convert</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">200</span>),@HeartbeatDateTimeLocal, <span class="pl-c1">121</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> (IST)&lt;/b&gt;&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC55" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC56" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @BodyText <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>[Message]: &#39;</span> <span class="pl-k">+</span> @text</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;&lt;br/&gt;[Start Time (Local)]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), @HeartbeatDateTimeLocal, <span class="pl-c1">121</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Start Time (UTC)]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), @HeartbeatDateTime, <span class="pl-c1">121</span>) </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Duration]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-c1">NULLIF</span>(<span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>(<span class="pl-c1">100</span>), <span class="pl-c1">DATEDIFF</span>(dd,<span class="pl-c1">0</span>, <span class="pl-c1">GETUTCDATE</span>()<span class="pl-k">-</span>@HeartbeatDateTime)), <span class="pl-c1">0</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> day(s), &#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC60" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>(<span class="pl-c1">100</span>), <span class="pl-c1">GETUTCDATE</span>()<span class="pl-k">-</span>@HeartbeatDateTime, <span class="pl-c1">114</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;----------------------------------------------------------------------&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Timestamp (Local)]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), <span class="pl-c1">GETDATE</span>(), <span class="pl-c1">121</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Timestamp (UTC)]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), <span class="pl-c1">GETUTCDATE</span>(), <span class="pl-c1">121</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Generated By]: &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">@@SERVERNAME</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&lt;br/&gt;[Monitor Type]: SQLSentryHeartbeatCheck&lt;br/&gt;[Condition]: &#39;</span> <span class="pl-k">+</span> @SubjectTitle</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC66" class="blob-code blob-code-inner js-file-line"> ;</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WITH</span> trgt <span class="pl-k">AS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">*</span> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">heartbeat_log</span> <span class="pl-k">WHERE</span> servername <span class="pl-k">=</span> @servername)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">MERGE</span> <span class="pl-k">INTO</span> trgt</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC69" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">USING</span> (<span class="pl-k">SELECT</span> <span class="pl-k">*</span> <span class="pl-k">FROM</span> (<span class="pl-k">VALUES</span>(@servername, <span class="pl-c1">GETUTCDATE</span>())) <span class="pl-k">AS</span> v(servername, TimeNow)) <span class="pl-k">AS</span> src</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC70" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ON</span> <span class="pl-c1">trgt</span>.<span class="pl-c1">servername</span> <span class="pl-k">=</span> <span class="pl-c1">src</span>.<span class="pl-c1">servername</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-k">NOT</span> <span class="pl-k">MATCHED</span> <span class="pl-k">BY</span> <span class="pl-k">TARGET</span> <span class="pl-k">THEN</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC72" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> (servername, heartbeatdate)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC73" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">VALUES</span> (servername, TimeNow)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-k">MATCHED</span> <span class="pl-k">AND</span> <span class="pl-c1">src</span>.<span class="pl-c1">TimeNow</span> <span class="pl-k">&gt;</span> <span class="pl-c1">dateadd</span>(hour, @HeartbeatRepeatAlertThresholdHours, <span class="pl-c1">trgt</span>.<span class="pl-c1">heartbeatdate</span>) <span class="pl-k">THEN</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC75" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UPDATE</span> <span class="pl-k">SET</span> heartbeatdate <span class="pl-k">=</span> <span class="pl-c1">src</span>.<span class="pl-c1">TimeNow</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC76" class="blob-code blob-code-inner js-file-line"> ;</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC77" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC78" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@ROWCOUNT</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC79" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC80" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Heartbeat failure for &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@servername)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC81" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC82" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Get additional metadata about the server if it&#39;s also a SQL Server</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> @SQLVersion <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">4000</span>), @SQLEdition <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">4000</span>)</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC85" class="blob-code blob-code-inner js-file-line"> @SQLVersion <span class="pl-k">=</span> <span class="pl-k">CASE</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> MajorVersionNumber <span class="pl-k">=</span> <span class="pl-c1">10</span> <span class="pl-k">AND</span> MinorVersionNumber <span class="pl-k">=</span> <span class="pl-c1">50</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2008R2&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC87" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> EngineEdition <span class="pl-k">IN</span> (<span class="pl-c1">5</span>,<span class="pl-c1">6</span>) <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>sql_azure&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC88" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> MajorVersionNumber</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC90" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">8</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2000&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC91" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">9</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2005&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC92" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">10</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2008&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC93" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">11</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2012&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC94" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">12</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2014&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC95" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">13</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2016&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC96" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">14</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2017&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC97" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">15</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2019&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC98" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">16</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>2022&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC100" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC101" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC102" class="blob-code blob-code-inner js-file-line"> ,@SQLEdition <span class="pl-k">=</span> <span class="pl-k">CASE</span> [EngineEdition] <span class="pl-c"><span class="pl-c">--</span> https://docs.microsoft.com/en-us/sql/t-sql/functions/serverproperty-transact-sql</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC103" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">2</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>standard&#39;</span> <span class="pl-c"><span class="pl-c">--</span> also web and BI</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC104" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">3</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>enterprise&#39;</span> <span class="pl-c"><span class="pl-c">--</span> also datacenter, developer and evaluation</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC105" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">4</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>express&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC106" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">5</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>azure_sql_database&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC107" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">6</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>azure_sql_data_warehouse&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC108" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-c1">8</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>azure_managed_instance&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC109" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC110" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC111" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> [dbo].[vwSqlServer]</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC112" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> [ObjectName] <span class="pl-k">=</span> @servername</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC113" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC114" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> ---- TODO: Add your alert logic below this line ---- <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC115" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC116" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>-- Example 1: Sending an e-mail using DBMail:</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> EXEC msdb..sp_send_dbmail</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @profile_name = &#39;dbmail_profile&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> , @recipients = &#39;[email protected]&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> , @subject = @title</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> , @body = @BodyText</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> , @body_format = &#39;HTML&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> , @importance = &#39;high&#39;</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC125" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC126" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC127" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>-- Example 2: Throwing an error to fail the job:</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> --RAISERROR(N&#39;%s&#39;, 16, 1, @BodyText);</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC130" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC131" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>-- Example 3: Whatever else:</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> EXECUTE SendSNMPAlertCLR</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @SourceServer = @servername, </span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Subject = @title, </span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Body = @BodyText,</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Severity = 3,</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @SQLVersion = @SQLVersion,</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @SQLEdition = @SQLEdition,</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Condition = @SubjectTitle,</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Site = @site</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC141" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC142" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC143" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> ---- TODO: Add your alert logic above this line ---- <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC144" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC146" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC147" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> serverlist</td> </tr> <tr> <td id="file-sqlsentry_heartbeat_monitoring-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-sqlsentry_heartbeat_monitoring-sql-LC148" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> serverlist</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/62ccb432270d3e2a244866d6bc59fe25 2022-01-16T08:31:26Z 2022-01-16T09:53:11Z Check for Low PAGE Compression Success Rates Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/62ccb432270d3e2a244866d6bc59fe25#file-low-page-compression-success-rates-sql">Low PAGE Compression Success Rates.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-low-page-compression-success-rates-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Low PAGE Compression Success Rates.sql content, created by EitanBlumin on 08:31AM on January 16, 2022." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Low PAGE Compression Success Rates.sql"> <tr> <td id="file-low-page-compression-success-rates-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-low-page-compression-success-rates-sql-LC1" class="blob-code blob-code-inner js-file-line">/*</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-low-page-compression-success-rates-sql-LC2" class="blob-code blob-code-inner js-file-line">Check for low PAGE compression success rates</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-low-page-compression-success-rates-sql-LC3" class="blob-code blob-code-inner js-file-line">============================================</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-low-page-compression-success-rates-sql-LC4" class="blob-code blob-code-inner js-file-line">Author: Eitan Blumin</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-low-page-compression-success-rates-sql-LC5" class="blob-code blob-code-inner js-file-line">Date: 2022-01-13</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-low-page-compression-success-rates-sql-LC6" class="blob-code blob-code-inner js-file-line">Based on blog post by Paul Randal:</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-low-page-compression-success-rates-sql-LC7" class="blob-code blob-code-inner js-file-line">https://www.sqlskills.com/blogs/paul/the-curious-case-of-tracking-page-compression-success-rates/</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-low-page-compression-success-rates-sql-LC8" class="blob-code blob-code-inner js-file-line">*/</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-low-page-compression-success-rates-sql-LC9" class="blob-code blob-code-inner js-file-line">DECLARE</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-low-page-compression-success-rates-sql-LC10" class="blob-code blob-code-inner js-file-line"> /* threshold parameters: */</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-low-page-compression-success-rates-sql-LC11" class="blob-code blob-code-inner js-file-line"> @MinimumCompressionAttempts int = 200</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-low-page-compression-success-rates-sql-LC12" class="blob-code blob-code-inner js-file-line"> ,@MaxAttemptSuccessRatePercentage int = 20</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-low-page-compression-success-rates-sql-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-low-page-compression-success-rates-sql-LC14" class="blob-code blob-code-inner js-file-line"> /* change index rebuild options as needed: */</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-low-page-compression-success-rates-sql-LC15" class="blob-code blob-code-inner js-file-line"> ,@RebuildOptions nvarchar(MAX) = N&#39;ONLINE = ON, SORT_IN_TEMPDB = ON, MAXDOP = 4&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-low-page-compression-success-rates-sql-LC16" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-low-page-compression-success-rates-sql-LC17" class="blob-code blob-code-inner js-file-line">SET NOCOUNT ON;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-low-page-compression-success-rates-sql-LC18" class="blob-code blob-code-inner js-file-line">SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-low-page-compression-success-rates-sql-LC19" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-low-page-compression-success-rates-sql-LC20" class="blob-code blob-code-inner js-file-line">DECLARE @Results AS TABLE</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-low-page-compression-success-rates-sql-LC21" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-low-page-compression-success-rates-sql-LC22" class="blob-code blob-code-inner js-file-line">[database_name] sysname NOT NULL, [schema_name] sysname NULL, [table_name] sysname NULL, [index_name] sysname NULL,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-low-page-compression-success-rates-sql-LC23" class="blob-code blob-code-inner js-file-line">partition_number int NULL, total_rows int NULL, is_partitioned bit NULL, attempts_count int NOT NULL, success_count int NOT NULL,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-low-page-compression-success-rates-sql-LC24" class="blob-code blob-code-inner js-file-line">range_scans_percent int NULL, updates_percent int NULL,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-low-page-compression-success-rates-sql-LC25" class="blob-code blob-code-inner js-file-line">success_rate AS (success_count * 1.0 / NULLIF(attempts_count,0))</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-low-page-compression-success-rates-sql-LC26" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-low-page-compression-success-rates-sql-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-low-page-compression-success-rates-sql-LC28" class="blob-code blob-code-inner js-file-line">DECLARE @CurrDB sysname, @SpExecuteSql nvarchar(1000);</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-low-page-compression-success-rates-sql-LC29" class="blob-code blob-code-inner js-file-line">DECLARE DBs CURSOR</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-low-page-compression-success-rates-sql-LC30" class="blob-code blob-code-inner js-file-line">LOCAL FAST_FORWARD</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-low-page-compression-success-rates-sql-LC31" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-low-page-compression-success-rates-sql-LC32" class="blob-code blob-code-inner js-file-line">SELECT [name]</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-low-page-compression-success-rates-sql-LC33" class="blob-code blob-code-inner js-file-line">FROM sys.databases</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-low-page-compression-success-rates-sql-LC34" class="blob-code blob-code-inner js-file-line">WHERE state = 0</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-low-page-compression-success-rates-sql-LC35" class="blob-code blob-code-inner js-file-line">AND source_database_id IS NULL</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-low-page-compression-success-rates-sql-LC36" class="blob-code blob-code-inner js-file-line">AND database_id &gt; 2</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-low-page-compression-success-rates-sql-LC37" class="blob-code blob-code-inner js-file-line">AND HAS_DBACCESS([name]) = 1</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-low-page-compression-success-rates-sql-LC38" class="blob-code blob-code-inner js-file-line">AND DATABASEPROPERTYEX([name],&#39;Updateability&#39;) = &#39;READ_WRITE&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-low-page-compression-success-rates-sql-LC39" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-low-page-compression-success-rates-sql-LC40" class="blob-code blob-code-inner js-file-line">OPEN DBs;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-low-page-compression-success-rates-sql-LC41" class="blob-code blob-code-inner js-file-line">WHILE 1=1</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-low-page-compression-success-rates-sql-LC42" class="blob-code blob-code-inner js-file-line">BEGIN</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-low-page-compression-success-rates-sql-LC43" class="blob-code blob-code-inner js-file-line"> FETCH NEXT FROM DBs INTO @CurrDB;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-low-page-compression-success-rates-sql-LC44" class="blob-code blob-code-inner js-file-line"> IF @@FETCH_STATUS &lt;&gt; 0 BREAK;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-low-page-compression-success-rates-sql-LC45" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-low-page-compression-success-rates-sql-LC46" class="blob-code blob-code-inner js-file-line"> SET @SpExecuteSql = QUOTENAME(@CurrDB) + N&#39;..sp_executesql&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-low-page-compression-success-rates-sql-LC47" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-low-page-compression-success-rates-sql-LC48" class="blob-code blob-code-inner js-file-line"> INSERT INTO @Results</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-low-page-compression-success-rates-sql-LC49" class="blob-code blob-code-inner js-file-line"> EXEC @SpExecuteSql N&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-low-page-compression-success-rates-sql-LC50" class="blob-code blob-code-inner js-file-line">SELECT DISTINCT</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-low-page-compression-success-rates-sql-LC51" class="blob-code blob-code-inner js-file-line"> db_name(),</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-low-page-compression-success-rates-sql-LC52" class="blob-code blob-code-inner js-file-line"> object_schema_name (i.object_id),</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-low-page-compression-success-rates-sql-LC53" class="blob-code blob-code-inner js-file-line"> object_name (i.object_id),</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-low-page-compression-success-rates-sql-LC54" class="blob-code blob-code-inner js-file-line"> i.name,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-low-page-compression-success-rates-sql-LC55" class="blob-code blob-code-inner js-file-line"> p.partition_number,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-low-page-compression-success-rates-sql-LC56" class="blob-code blob-code-inner js-file-line"> p.[rows],</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-low-page-compression-success-rates-sql-LC57" class="blob-code blob-code-inner js-file-line"> is_partitioned = </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-low-page-compression-success-rates-sql-LC58" class="blob-code blob-code-inner js-file-line"> CASE WHEN EXISTS </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-low-page-compression-success-rates-sql-LC59" class="blob-code blob-code-inner js-file-line"> (SELECT NULL FROM sys.partitions AS p2</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-low-page-compression-success-rates-sql-LC60" class="blob-code blob-code-inner js-file-line"> WHERE p2.partition_number &gt; 1</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-low-page-compression-success-rates-sql-LC61" class="blob-code blob-code-inner js-file-line"> AND p2.object_id = p.object_id</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-low-page-compression-success-rates-sql-LC62" class="blob-code blob-code-inner js-file-line"> AND p2.index_id = p.index_id)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-low-page-compression-success-rates-sql-LC63" class="blob-code blob-code-inner js-file-line"> THEN 1 ELSE 0 END,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-low-page-compression-success-rates-sql-LC64" class="blob-code blob-code-inner js-file-line"> page_compression_attempt_count,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-low-page-compression-success-rates-sql-LC65" class="blob-code blob-code-inner js-file-line"> page_compression_success_count,</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-low-page-compression-success-rates-sql-LC66" class="blob-code blob-code-inner js-file-line"> range_scans_percent = ISNULL(</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-low-page-compression-success-rates-sql-LC67" class="blob-code blob-code-inner js-file-line"> FLOOR(ISNULL(ios.range_scan_count,0) * 1.0 /</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-low-page-compression-success-rates-sql-LC68" class="blob-code blob-code-inner js-file-line"> NULLIF(</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-low-page-compression-success-rates-sql-LC69" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.range_scan_count,0) +</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-low-page-compression-success-rates-sql-LC70" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_delete_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-low-page-compression-success-rates-sql-LC71" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_insert_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-low-page-compression-success-rates-sql-LC72" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_page_merge_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-low-page-compression-success-rates-sql-LC73" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_update_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-low-page-compression-success-rates-sql-LC74" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.singleton_lookup_count,0)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-low-page-compression-success-rates-sql-LC75" class="blob-code blob-code-inner js-file-line"> , 0) * 100.0), 0),</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-low-page-compression-success-rates-sql-LC76" class="blob-code blob-code-inner js-file-line"> updates_percent = ISNULL(</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-low-page-compression-success-rates-sql-LC77" class="blob-code blob-code-inner js-file-line"> CEILING(ISNULL(ios.leaf_update_count, 0) * 1.0 /</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-low-page-compression-success-rates-sql-LC78" class="blob-code blob-code-inner js-file-line"> NULLIF(</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-low-page-compression-success-rates-sql-LC79" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.range_scan_count,0) +</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-low-page-compression-success-rates-sql-LC80" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_delete_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-low-page-compression-success-rates-sql-LC81" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_insert_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-low-page-compression-success-rates-sql-LC82" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_page_merge_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-low-page-compression-success-rates-sql-LC83" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.leaf_update_count,0) + </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-low-page-compression-success-rates-sql-LC84" class="blob-code blob-code-inner js-file-line"> ISNULL(ios.singleton_lookup_count,0)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-low-page-compression-success-rates-sql-LC85" class="blob-code blob-code-inner js-file-line"> , 0) * 100.0), 0)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-low-page-compression-success-rates-sql-LC86" class="blob-code blob-code-inner js-file-line">FROM sys.indexes AS i</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-low-page-compression-success-rates-sql-LC87" class="blob-code blob-code-inner js-file-line">INNER JOIN sys.partitions AS p ON p.object_id = i.object_id AND p.index_id = i.index_id</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-low-page-compression-success-rates-sql-LC88" class="blob-code blob-code-inner js-file-line">CROSS APPLY sys.dm_db_index_operational_stats (db_id(), p.object_id, p.index_id, p.partition_number) AS ios</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-low-page-compression-success-rates-sql-LC89" class="blob-code blob-code-inner js-file-line">WHERE</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-low-page-compression-success-rates-sql-LC90" class="blob-code blob-code-inner js-file-line">p.data_compression = 2</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-low-page-compression-success-rates-sql-LC91" class="blob-code blob-code-inner js-file-line">AND page_compression_attempt_count &gt;= @MinimumCompressionAttempts</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-low-page-compression-success-rates-sql-LC92" class="blob-code blob-code-inner js-file-line">AND page_compression_success_count * 1.0 / NULLIF(page_compression_attempt_count,0) &lt;= @MaxAttemptSuccessRatePercentage / 100.0</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-low-page-compression-success-rates-sql-LC93" class="blob-code blob-code-inner js-file-line">&#39;, N&#39;@MinimumCompressionAttempts int, @MaxAttemptSuccessRatePercentage int&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-low-page-compression-success-rates-sql-LC94" class="blob-code blob-code-inner js-file-line">, @MinimumCompressionAttempts, @MaxAttemptSuccessRatePercentage</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-low-page-compression-success-rates-sql-LC95" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-low-page-compression-success-rates-sql-LC96" class="blob-code blob-code-inner js-file-line">END</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-low-page-compression-success-rates-sql-LC97" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-low-page-compression-success-rates-sql-LC98" class="blob-code blob-code-inner js-file-line">CLOSE DBs;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-low-page-compression-success-rates-sql-LC99" class="blob-code blob-code-inner js-file-line">DEALLOCATE DBs;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-low-page-compression-success-rates-sql-LC100" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-low-page-compression-success-rates-sql-LC101" class="blob-code blob-code-inner js-file-line">SELECT *</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-low-page-compression-success-rates-sql-LC102" class="blob-code blob-code-inner js-file-line">, RemediationCmd = N&#39;USE &#39; + QUOTENAME([database_name]) + N&#39;; ALTER &#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-low-page-compression-success-rates-sql-LC103" class="blob-code blob-code-inner js-file-line"> + CASE WHEN [index_name] IS NULL THEN N&#39;TABLE &#39; </td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-low-page-compression-success-rates-sql-LC104" class="blob-code blob-code-inner js-file-line"> ELSE N&#39;INDEX &#39; + QUOTENAME([index_name]) + N&#39; ON &#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-low-page-compression-success-rates-sql-LC105" class="blob-code blob-code-inner js-file-line"> END</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-low-page-compression-success-rates-sql-LC106" class="blob-code blob-code-inner js-file-line"> + QUOTENAME([schema_name]) + N&#39;.&#39; + QUOTENAME([table_name])</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-low-page-compression-success-rates-sql-LC107" class="blob-code blob-code-inner js-file-line"> + CASE WHEN is_partitioned = 1 THEN N&#39; PARTITION &#39; + CONVERT(nvarchar(MAX), partition_number)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-low-page-compression-success-rates-sql-LC108" class="blob-code blob-code-inner js-file-line"> ELSE N&#39;&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-low-page-compression-success-rates-sql-LC109" class="blob-code blob-code-inner js-file-line"> END</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-low-page-compression-success-rates-sql-LC110" class="blob-code blob-code-inner js-file-line"> + N&#39; REBUILD WITH(DATA_COMPRESSION = ROW&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-low-page-compression-success-rates-sql-LC111" class="blob-code blob-code-inner js-file-line"> + ISNULL(N&#39;, &#39; + NULLIF(@RebuildOptions, N&#39;&#39;), N&#39;&#39;)</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-low-page-compression-success-rates-sql-LC112" class="blob-code blob-code-inner js-file-line"> + N&#39;);&#39;</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-low-page-compression-success-rates-sql-LC113" class="blob-code blob-code-inner js-file-line">FROM @Results</td> </tr> <tr> <td id="file-low-page-compression-success-rates-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-low-page-compression-success-rates-sql-LC114" class="blob-code blob-code-inner js-file-line">ORDER BY success_rate ASC</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/3ba105ceedbf479728fee191b46370d5 2021-12-13T14:42:57Z 2024-03-26T06:31:23Z Hypothetical Indexes - Example Usage script Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/3ba105ceedbf479728fee191b46370d5#file-hypothetical-indexes-example-usage-sql">Hypothetical Indexes - Example Usage.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-hypothetical-indexes-example-usage-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Hypothetical Indexes - Example Usage.sql content, created by EitanBlumin on 02:42PM on December 13, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Hypothetical Indexes - Example Usage.sql"> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC1" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">SHOWPLAN_XML</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC4" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> TODO: Add your test query here to get its estimated plan WITHOUT the hypothetical indexes <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC6" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">SHOWPLAN_XML</span> <span class="pl-k">OFF</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> step 1: CREATE</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> CREATE hypothetical indexes using the WITH STATISTICS_ONLY clause:</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> TODO: Replace with your own index definitions, but don&#39;t forget to use WITH STATISTICS_ONLY <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> [IX_Hypothetical]</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> [dbo].[MyTableName] ( [column1], [column2] )</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WITH</span> <span class="pl-k">STATISTICS_ONLY</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC19" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> step 2: AUTOPILOT</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Generate and run DBCC AUTOPILOT commands to mark ALL hypothetical indexes for AUTOPILOT:</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC24" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @TableName <span class="pl-k">nvarchar</span>(<span class="pl-c1">256</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span> <span class="pl-c"><span class="pl-c">--</span> &#39;[dbo].[MyTableName]&#39; -- optionally filter by table</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC26" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> DBCC AUTOPILOT (typeid [, dbid [, {maxQueryCost | tabid [, indid [, pages [, flag [, rowcounts]]]]} ]])</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @cmd <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC29" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> cmd <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC32" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>DBCC AUTOPILOT(0,&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">MAX</span>), <span class="pl-c1">DB_ID</span>()) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">MAX</span>), <span class="pl-c1">object_id</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">MAX</span>), index_id) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>);&#39;</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> is_hypothetical <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@TableName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">OBJECT_ID</span>(@TableName))</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC37" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC39" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cmd <span class="pl-k">INTO</span> @cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC43" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC44" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> @cmd;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span>(@cmd);</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC48" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC52" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> step 3: GENERATE ESTIMATED PLAN</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> run the below to generate an estimated plan assuming the existence of hypothetical indexes marked for autopilot</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> WARNING: This was found to sometimes cause SQL Crash Dumps, specifically when canceled mid-execution.</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">AUTOPILOT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC59" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> TODO: Add your test query here to get its estimated plan WITH the hypothetical indexes <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC61" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">AUTOPILOT</span> <span class="pl-k">OFF</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC65" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> step 4: CLEANUP</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Generate and run DROP commands for ALL hypothetical indexes</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC68" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @TableName <span class="pl-k">nvarchar</span>(<span class="pl-c1">256</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span> <span class="pl-c"><span class="pl-c">--</span> &#39;[dbo].[MyTableName]&#39; -- optionally filter by table</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC70" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @cmd <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC72" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> cmd <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC75" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>DROP INDEX &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-k">name</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_SCHEMA_NAME</span>(<span class="pl-c1">object_id</span>)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_NAME</span>(<span class="pl-c1">object_id</span>)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> is_hypothetical <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@TableName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">OBJECT_ID</span>(@TableName))</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC80" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC82" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC85" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cmd <span class="pl-k">INTO</span> @cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC87" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC88" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> @cmd;</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span>(@cmd);</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC91" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> cmd</td> </tr> <tr> <td id="file-hypothetical-indexes-example-usage-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-hypothetical-indexes-example-usage-sql-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/442ebdc0d8a4d6757e8a2d96876640ed 2021-10-13T18:23:02Z 2025-05-05T05:45:24Z Moves files to a new location for a SQL Server database in an AlwaysOn Availability Group Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/442ebdc0d8a4d6757e8a2d96876640ed#file-move-sqlfilesalwayson-ps1">Move-SqlFilesAlwaysOn.ps1</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-move-sqlfilesalwayson-ps1" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-powershell " style="overflow: auto" tabindex="0" role="region" aria-label="Move-SqlFilesAlwaysOn.ps1 content, created by EitanBlumin on 06:23PM on October 13, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Move-SqlFilesAlwaysOn.ps1"> <tr> <td id="file-move-sqlfilesalwayson-ps1-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-move-sqlfilesalwayson-ps1-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Copyright 2021 Eitan Blumin &lt;@EitanBlumin, https://www.eitanblumin.com&gt;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-move-sqlfilesalwayson-ps1-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> while at Madeira Data Solutions &lt;https://www.madeiradata.com&gt;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-move-sqlfilesalwayson-ps1-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-move-sqlfilesalwayson-ps1-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Licensed under the MIT License (the &quot;License&quot;);</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-move-sqlfilesalwayson-ps1-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> </span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-move-sqlfilesalwayson-ps1-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-move-sqlfilesalwayson-ps1-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> </span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-move-sqlfilesalwayson-ps1-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-move-sqlfilesalwayson-ps1-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> </span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-move-sqlfilesalwayson-ps1-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-move-sqlfilesalwayson-ps1-LC11" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-move-sqlfilesalwayson-ps1-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">&lt;#</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-move-sqlfilesalwayson-ps1-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">SYNOPSIS</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-move-sqlfilesalwayson-ps1-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Moves files to a new location for a SQL Server database in an AlwaysOn Availability Group.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-move-sqlfilesalwayson-ps1-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-move-sqlfilesalwayson-ps1-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin (@EitanBlumin) | Madeira Data Solutions (@Madeira_Data)</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-move-sqlfilesalwayson-ps1-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">License: MIT License</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-move-sqlfilesalwayson-ps1-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-move-sqlfilesalwayson-ps1-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">DESCRIPTION</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-move-sqlfilesalwayson-ps1-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Moves files to a new location for a SQL Server database in an AlwaysOn Availability Group.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-move-sqlfilesalwayson-ps1-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c">The script performs the following operations:</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-move-sqlfilesalwayson-ps1-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Makes sure the destination folder(s) exist.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-move-sqlfilesalwayson-ps1-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Suspends and removes the specified database from its Availability Group.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-move-sqlfilesalwayson-ps1-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Executes ALTER DATABASE .. MODIFY FILE .. to change the database file paths.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-move-sqlfilesalwayson-ps1-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- If connected to the PRIMARY replica: Takes the database offline.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-move-sqlfilesalwayson-ps1-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- If connected to the SECONDARY replica: Takes the whole MSSQLSERVER service down.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-move-sqlfilesalwayson-ps1-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Actually moves the files to their new destination, while retaining the file permissions and ownership (so that the SQL Server won&#39;t get an &quot;Access Denied&quot; error).</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-move-sqlfilesalwayson-ps1-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Brings the database / service back online.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-move-sqlfilesalwayson-ps1-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Adds the database back to the Availability Group.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-move-sqlfilesalwayson-ps1-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-move-sqlfilesalwayson-ps1-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">EXAMPLE</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-move-sqlfilesalwayson-ps1-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c">C:\PS&gt; .\Move-SqlFilesAlwaysOn.ps1 -DatabaseName &quot;TestDB&quot; -NewDataFolderPath &quot;D:\MSSQL\Data\&quot; -NewLogFolderPath &quot;L:\MSSQL\Log\&quot;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-move-sqlfilesalwayson-ps1-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-move-sqlfilesalwayson-ps1-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">NOTES</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-move-sqlfilesalwayson-ps1-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This is an open-source project developed by Eitan Blumin while an employee at Madeira Data Solutions, Madeira Ltd.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-move-sqlfilesalwayson-ps1-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-move-sqlfilesalwayson-ps1-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-c">A few remarks:</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-move-sqlfilesalwayson-ps1-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Note the parameters for the script. Be sure you&#39;re providing the proper values as input.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-move-sqlfilesalwayson-ps1-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- The script was not tested with database files that aren&#39;t mdf/ndf/ldf (such as FILESTREAM, Full-Text Catalogs, and In-Memory). So, I cannot guarantee that those will work. But if you&#39;re feeling adventurous, you can use the switch parameter &quot;AllowNonDataOrLogFileTypes&quot; to try it out anyway.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-move-sqlfilesalwayson-ps1-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- If you&#39;re moving large files, remember that it would take a while to finish, during which time the database will not be available.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-move-sqlfilesalwayson-ps1-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Don&#39;t forget to disable backup jobs! The script doesn&#39;t do that for you.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-move-sqlfilesalwayson-ps1-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- The script is NOT idempotent. If it fails in the middle of execution, you may have trouble running it again.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-move-sqlfilesalwayson-ps1-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- As always with such things: Test, test, test! I recommend adding a new, small database to your Availability Group and test the script on this database, before trying it out on your larger production databases.</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-move-sqlfilesalwayson-ps1-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-move-sqlfilesalwayson-ps1-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">LINK</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-move-sqlfilesalwayson-ps1-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://github.com/MadeiraData/MadeiraToolbox/blob/master/Utility%20Scripts/Move-SqlFilesAlwaysOn.ps1</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-move-sqlfilesalwayson-ps1-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-move-sqlfilesalwayson-ps1-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">LINK</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-move-sqlfilesalwayson-ps1-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://madeiradata.com</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-move-sqlfilesalwayson-ps1-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-move-sqlfilesalwayson-ps1-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">LINK</span></span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-move-sqlfilesalwayson-ps1-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://eitanblumin.com</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-move-sqlfilesalwayson-ps1-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#&gt;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-move-sqlfilesalwayson-ps1-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-k">param</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-move-sqlfilesalwayson-ps1-LC55" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-move-sqlfilesalwayson-ps1-LC56" class="blob-code blob-code-inner js-file-line">[<span class="pl-c1">Parameter</span>(<span class="pl-v">Mandatory</span><span class="pl-k">=</span><span class="pl-c1">$true</span><span class="pl-k">,</span> <span class="pl-v">Position</span><span class="pl-k">=</span><span class="pl-c1">0</span>)][<span class="pl-k">string</span>]<span class="pl-smi">$DatabaseName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>TestDB<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-move-sqlfilesalwayson-ps1-LC57" class="blob-code blob-code-inner js-file-line">[<span class="pl-c1">Parameter</span>(<span class="pl-v">Mandatory</span><span class="pl-k">=</span><span class="pl-c1">$true</span><span class="pl-k">,</span> <span class="pl-v">Position</span><span class="pl-k">=</span><span class="pl-c1">1</span>)][<span class="pl-k">string</span>]<span class="pl-smi">$NewDataFolderPath</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>D:\MSSQL\Data\<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-move-sqlfilesalwayson-ps1-LC58" class="blob-code blob-code-inner js-file-line">[<span class="pl-c1">Parameter</span>(<span class="pl-v">Mandatory</span><span class="pl-k">=</span><span class="pl-c1">$false</span><span class="pl-k">,</span> <span class="pl-v">Position</span><span class="pl-k">=</span><span class="pl-c1">2</span>)][<span class="pl-k">string</span>]<span class="pl-smi">$NewLogFolderPath</span> <span class="pl-k">=</span> <span class="pl-smi">$NewDataFolderPath</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-move-sqlfilesalwayson-ps1-LC59" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">string</span>]<span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Data Source=.;Integrated Security=True;Application Name=Move Availability Group Files<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-move-sqlfilesalwayson-ps1-LC60" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">string</span>]<span class="pl-smi">$SqlServiceName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>MSSQLSERVER<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-move-sqlfilesalwayson-ps1-LC61" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">switch</span>]<span class="pl-smi">$SecondaryOnly</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-move-sqlfilesalwayson-ps1-LC62" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">switch</span>]<span class="pl-smi">$AllowNonDataOrLogFileTypes</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-move-sqlfilesalwayson-ps1-LC63" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">switch</span>]<span class="pl-smi">$SkipRunningJobsCheck</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-move-sqlfilesalwayson-ps1-LC64" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">int32</span>]<span class="pl-smi">$MaxRecoveryQueueMB</span> <span class="pl-k">=</span> <span class="pl-c1">1024</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-move-sqlfilesalwayson-ps1-LC65" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">string</span>]<span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>C:\Madeira\log<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-move-sqlfilesalwayson-ps1-LC66" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">string</span>]<span class="pl-smi">$logFilePrefix</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>move_ag_dbfiles_<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-move-sqlfilesalwayson-ps1-LC67" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">string</span>]<span class="pl-smi">$logFileDateFormat</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>yyyyMMdd_HHmmss<span class="pl-pds">&quot;</span></span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-move-sqlfilesalwayson-ps1-LC68" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">int</span>]<span class="pl-smi">$logFileRetentionDays</span> <span class="pl-k">=</span> <span class="pl-c1">7</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-move-sqlfilesalwayson-ps1-LC69" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-move-sqlfilesalwayson-ps1-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-k">Process</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-move-sqlfilesalwayson-ps1-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>region initialization</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-move-sqlfilesalwayson-ps1-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-k">function</span> <span class="pl-en">Get-TimeStamp</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-move-sqlfilesalwayson-ps1-LC73" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">Param</span>(</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-move-sqlfilesalwayson-ps1-LC74" class="blob-code blob-code-inner js-file-line"> [<span class="pl-k">switch</span>]<span class="pl-smi">$NoWrap</span><span class="pl-k">,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-move-sqlfilesalwayson-ps1-LC75" class="blob-code blob-code-inner js-file-line"> [<span class="pl-k">switch</span>]<span class="pl-smi">$Utc</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-move-sqlfilesalwayson-ps1-LC76" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-move-sqlfilesalwayson-ps1-LC77" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$dt</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Date</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-move-sqlfilesalwayson-ps1-LC78" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$Utc</span> <span class="pl-k">-eq</span> <span class="pl-c1">$true</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-move-sqlfilesalwayson-ps1-LC79" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$dt</span> <span class="pl-k">=</span> <span class="pl-smi">$dt<span class="pl-smi">.ToUniversalTime</span></span>()</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-move-sqlfilesalwayson-ps1-LC80" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-move-sqlfilesalwayson-ps1-LC81" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$str</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>{0:MM/dd/yy} {0:HH:mm:ss}<span class="pl-pds">&quot;</span></span> <span class="pl-k">-f</span> <span class="pl-smi">$dt</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-move-sqlfilesalwayson-ps1-LC82" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-move-sqlfilesalwayson-ps1-LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$NoWrap</span> <span class="pl-k">-ne</span> <span class="pl-c1">$true</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-move-sqlfilesalwayson-ps1-LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$str</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>[<span class="pl-smi">$str</span>]<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-move-sqlfilesalwayson-ps1-LC85" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-move-sqlfilesalwayson-ps1-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">$str</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-move-sqlfilesalwayson-ps1-LC87" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-move-sqlfilesalwayson-ps1-LC88" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-move-sqlfilesalwayson-ps1-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">-ne</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-move-sqlfilesalwayson-ps1-LC90" class="blob-code blob-code-inner js-file-line">{</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-move-sqlfilesalwayson-ps1-LC91" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>(<span class="pl-c1">Test-Path</span> <span class="pl-k">-</span>PathType Container <span class="pl-k">-</span>Path <span class="pl-smi">$logFileFolderPath</span>)) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-move-sqlfilesalwayson-ps1-LC92" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Creating directory <span class="pl-smi">$logFileFolderPath</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-move-sqlfilesalwayson-ps1-LC93" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">New-Item</span> <span class="pl-k">-</span>ItemType Directory <span class="pl-k">-</span>Force <span class="pl-k">-</span>Path <span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-move-sqlfilesalwayson-ps1-LC94" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-move-sqlfilesalwayson-ps1-LC95" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$DatetoDelete</span> <span class="pl-k">=</span> <span class="pl-k">$</span>(<span class="pl-c1">Get-Date</span>).AddDays(<span class="pl-k">-</span><span class="pl-smi">$logFileRetentionDays</span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-move-sqlfilesalwayson-ps1-LC96" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Get-ChildItem</span> <span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">|</span> <span class="pl-c1">Where-Object</span> { <span class="pl-c1">$_<span class="pl-smi">.Name</span></span> <span class="pl-k">-like</span> <span class="pl-s"><span class="pl-pds">&quot;</span>*<span class="pl-smi">$logFilePrefix</span>*<span class="pl-pds">&quot;</span></span> <span class="pl-k">-and</span> <span class="pl-c1">$_<span class="pl-smi">.LastWriteTime</span></span> <span class="pl-k">-lt</span> <span class="pl-smi">$DatetoDelete</span> } <span class="pl-k">|</span> <span class="pl-c1">Remove-Item</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-move-sqlfilesalwayson-ps1-LC97" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-move-sqlfilesalwayson-ps1-LC98" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-move-sqlfilesalwayson-ps1-LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$logFilePath</span> <span class="pl-k">=</span> <span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>\<span class="pl-smi">$logFilePrefix</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> (<span class="pl-c1">Get-Date</span> <span class="pl-k">-</span>Format <span class="pl-smi">$logFileDateFormat</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>.LOG<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-move-sqlfilesalwayson-ps1-LC100" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-move-sqlfilesalwayson-ps1-LC101" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> attempt to start the transcript log, but don&#39;t fail the script if unsuccessful:</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-move-sqlfilesalwayson-ps1-LC102" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-move-sqlfilesalwayson-ps1-LC103" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-move-sqlfilesalwayson-ps1-LC104" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Start-Transcript</span> <span class="pl-k">-</span>Path <span class="pl-smi">$logFilePath</span> <span class="pl-k">-</span>Append</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-move-sqlfilesalwayson-ps1-LC105" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-move-sqlfilesalwayson-ps1-LC106" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">catch</span> [<span class="pl-k">Exception</span>]</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-move-sqlfilesalwayson-ps1-LC107" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-move-sqlfilesalwayson-ps1-LC108" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Warning</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Unable to start Transcript: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.Exception.Message</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-move-sqlfilesalwayson-ps1-LC109" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-move-sqlfilesalwayson-ps1-LC110" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-move-sqlfilesalwayson-ps1-LC111" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-move-sqlfilesalwayson-ps1-LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>endregion initialization</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-move-sqlfilesalwayson-ps1-LC113" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-move-sqlfilesalwayson-ps1-LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">$ErrorActionPreference</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Stop<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-move-sqlfilesalwayson-ps1-LC115" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-move-sqlfilesalwayson-ps1-LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>region main</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-move-sqlfilesalwayson-ps1-LC117" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-move-sqlfilesalwayson-ps1-LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Get metadata for the given database, and do some basic validation</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-move-sqlfilesalwayson-ps1-LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$AGName</span> <span class="pl-k">=</span> <span class="pl-c1">$null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-move-sqlfilesalwayson-ps1-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$IsSecondary</span> <span class="pl-k">=</span> <span class="pl-c1">$false</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-move-sqlfilesalwayson-ps1-LC121" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-move-sqlfilesalwayson-ps1-LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$result</span> <span class="pl-k">=</span> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>SELECT ag.name,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-move-sqlfilesalwayson-ps1-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> replica_states.role_desc,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-move-sqlfilesalwayson-ps1-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CONVERT(sysname, SERVERPROPERTY(&#39;ServerName&#39;)) AS ServerName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-move-sqlfilesalwayson-ps1-LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-s">FROM sys.databases db</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-move-sqlfilesalwayson-ps1-LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-s">INNER JOIN sys.dm_hadr_availability_replica_states replica_states ON db.replica_id = replica_states.replica_id</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-move-sqlfilesalwayson-ps1-LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-s">INNER JOIN sys.availability_groups ag ON replica_states.group_id = ag.group_id</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-move-sqlfilesalwayson-ps1-LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-s">WHERE db.name = &#39;<span class="pl-smi">$DatabaseName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-move-sqlfilesalwayson-ps1-LC129" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-move-sqlfilesalwayson-ps1-LC130" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$result</span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-move-sqlfilesalwayson-ps1-LC131" class="blob-code blob-code-inner js-file-line">{</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-move-sqlfilesalwayson-ps1-LC132" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$AGName</span> <span class="pl-k">=</span> <span class="pl-smi">$result</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>name<span class="pl-pds">&#39;</span></span>]</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-move-sqlfilesalwayson-ps1-LC133" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-move-sqlfilesalwayson-ps1-LC134" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$result</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>ServerName<span class="pl-pds">&#39;</span></span>] <span class="pl-k">-ne</span> <span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-move-sqlfilesalwayson-ps1-LC135" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-move-sqlfilesalwayson-ps1-LC136" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>This script must be run locally from within one of the AG replica servers.<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-move-sqlfilesalwayson-ps1-LC137" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-move-sqlfilesalwayson-ps1-LC138" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-move-sqlfilesalwayson-ps1-LC139" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$result</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>role_desc<span class="pl-pds">&#39;</span></span>] <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&#39;</span>SECONDARY<span class="pl-pds">&#39;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-move-sqlfilesalwayson-ps1-LC140" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$IsSecondary</span> <span class="pl-k">=</span> <span class="pl-c1">$true</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-move-sqlfilesalwayson-ps1-LC141" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">elseif</span> (<span class="pl-smi">$SecondaryOnly</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-move-sqlfilesalwayson-ps1-LC142" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>This script must be run locally from within the SECONDARY replica only.<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-move-sqlfilesalwayson-ps1-LC143" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-move-sqlfilesalwayson-ps1-LC144" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-move-sqlfilesalwayson-ps1-LC145" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Database [<span class="pl-smi">$DatabaseName</span>] is not part of an availability group.<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-move-sqlfilesalwayson-ps1-LC146" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-move-sqlfilesalwayson-ps1-LC147" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-move-sqlfilesalwayson-ps1-LC148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Make sure this script is run as an Administrator</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-move-sqlfilesalwayson-ps1-LC149" class="blob-code blob-code-inner js-file-line"><span class="pl-k">If</span> (<span class="pl-k">-NOT</span> ([<span class="pl-k">Security.Principal.WindowsPrincipal</span>] [<span class="pl-k">Security.Principal.WindowsIdentity</span>]::GetCurrent()).IsInRole( [<span class="pl-k">Security.Principal.WindowsBuiltInRole</span>] <span class="pl-s"><span class="pl-pds">“</span>Administrator<span class="pl-pds">”</span></span>) )</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-move-sqlfilesalwayson-ps1-LC150" class="blob-code blob-code-inner js-file-line">{</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-move-sqlfilesalwayson-ps1-LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">“</span>You do not have Administrator rights to run this script!<span class="pl-cce">`n</span>Please re-run this script as an Administrator!<span class="pl-pds">”</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-move-sqlfilesalwayson-ps1-LC152" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-move-sqlfilesalwayson-ps1-LC153" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-move-sqlfilesalwayson-ps1-LC154" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$IsSecondary</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-move-sqlfilesalwayson-ps1-LC155" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Get the MSSQLSERVER service object</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-move-sqlfilesalwayson-ps1-LC156" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-move-sqlfilesalwayson-ps1-LC157" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SqlService</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Service</span> <span class="pl-k">-</span>Name <span class="pl-smi">$SqlServiceName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-move-sqlfilesalwayson-ps1-LC158" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-move-sqlfilesalwayson-ps1-LC159" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$SqlService<span class="pl-smi">.Status</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Running<span class="pl-pds">&quot;</span></span> <span class="pl-k">-and</span> <span class="pl-k">!</span><span class="pl-smi">$SqlService<span class="pl-smi">.CanStop</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-move-sqlfilesalwayson-ps1-LC160" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>No access to shut down &#39;<span class="pl-smi">$SqlServiceName</span>&#39; service of computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-move-sqlfilesalwayson-ps1-LC161" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-move-sqlfilesalwayson-ps1-LC162" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td> <td id="file-move-sqlfilesalwayson-ps1-LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Error accessing &#39;<span class="pl-smi">$SqlServiceName</span>&#39; service of computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td> <td id="file-move-sqlfilesalwayson-ps1-LC164" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td> <td id="file-move-sqlfilesalwayson-ps1-LC165" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td> <td id="file-move-sqlfilesalwayson-ps1-LC166" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Get all services dependent on the MSSQLSERVER service</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td> <td id="file-move-sqlfilesalwayson-ps1-LC167" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SqlDependentServices</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Service</span> <span class="pl-k">-</span>Name <span class="pl-smi">$SqlServiceName</span> <span class="pl-k">-</span>DependentServices <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td> <td id="file-move-sqlfilesalwayson-ps1-LC168" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td> <td id="file-move-sqlfilesalwayson-ps1-LC169" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Check for high recovery queues</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td> <td id="file-move-sqlfilesalwayson-ps1-LC170" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$recoveryQueues</span> <span class="pl-k">=</span> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>select counter_name, instance_name, cntr_value</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td> <td id="file-move-sqlfilesalwayson-ps1-LC171" class="blob-code blob-code-inner js-file-line"><span class="pl-s">from sys.dm_os_performance_counters</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td> <td id="file-move-sqlfilesalwayson-ps1-LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-s">where object_name like &#39;%Database Replica%&#39;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td> <td id="file-move-sqlfilesalwayson-ps1-LC173" class="blob-code blob-code-inner js-file-line"><span class="pl-s">and counter_name like &#39;Recovery Queue%&#39;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td> <td id="file-move-sqlfilesalwayson-ps1-LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-s">and cntr_value &gt; <span class="pl-smi">$MaxRecoveryQueueMB</span> * 1024</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td> <td id="file-move-sqlfilesalwayson-ps1-LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-s">order by cntr_value desc<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td> <td id="file-move-sqlfilesalwayson-ps1-LC176" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td> <td id="file-move-sqlfilesalwayson-ps1-LC177" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$recoveryQueues</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td> <td id="file-move-sqlfilesalwayson-ps1-LC178" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$recoveryQueues</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Host</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td> <td id="file-move-sqlfilesalwayson-ps1-LC179" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Stopping execution because Availability Group Recovery Queue is too high. Stopping the SQL service at this state may put the Availability Group at risk.<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td> <td id="file-move-sqlfilesalwayson-ps1-LC180" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td> <td id="file-move-sqlfilesalwayson-ps1-LC181" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td> <td id="file-move-sqlfilesalwayson-ps1-LC182" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td> <td id="file-move-sqlfilesalwayson-ps1-LC183" class="blob-code blob-code-inner js-file-line"><span class="pl-k">while</span> (<span class="pl-k">!</span><span class="pl-smi">$SkipRunningJobsCheck</span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td> <td id="file-move-sqlfilesalwayson-ps1-LC184" class="blob-code blob-code-inner js-file-line">{</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td> <td id="file-move-sqlfilesalwayson-ps1-LC185" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$runningJobs</span> <span class="pl-k">=</span> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>SELECT j.name, ja.start_execution_date, ja.stop_execution_date, ja.next_scheduled_run_date</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td> <td id="file-move-sqlfilesalwayson-ps1-LC186" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM msdb..sysjobactivity as ja</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td> <td id="file-move-sqlfilesalwayson-ps1-LC187" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> inner join msdb..sysjobs as j on ja.job_id = j.job_id</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td> <td id="file-move-sqlfilesalwayson-ps1-LC188" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE session_id = (SELECT MAX(session_id) FROM msdb..sysjobactivity)</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td> <td id="file-move-sqlfilesalwayson-ps1-LC189" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND start_execution_date IS NOT NULL</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td> <td id="file-move-sqlfilesalwayson-ps1-LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND (stop_execution_date is null or next_scheduled_Run_date between GETDATE() and DATEADD(minute, 5, GETDATE()))<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td> <td id="file-move-sqlfilesalwayson-ps1-LC191" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td> <td id="file-move-sqlfilesalwayson-ps1-LC192" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$runningJobs</span>)</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td> <td id="file-move-sqlfilesalwayson-ps1-LC193" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td> <td id="file-move-sqlfilesalwayson-ps1-LC194" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$runningJobs</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Host</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td> <td id="file-move-sqlfilesalwayson-ps1-LC195" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$inputResponse</span> <span class="pl-k">=</span> <span class="pl-c1">Read-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>There are jobs currently running or soon to be executed. Are you sure you want to proceed anyway? (C=Continue, R=Retry Check, S=Stop) <span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td> <td id="file-move-sqlfilesalwayson-ps1-LC196" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$inputResponse<span class="pl-smi">.ToLower</span></span>().StartsWith(<span class="pl-s"><span class="pl-pds">&quot;</span>c<span class="pl-pds">&quot;</span></span>)) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td> <td id="file-move-sqlfilesalwayson-ps1-LC197" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SkipRunningJobsCheck</span> <span class="pl-k">=</span> <span class="pl-c1">$true</span>;</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td> <td id="file-move-sqlfilesalwayson-ps1-LC198" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td> <td id="file-move-sqlfilesalwayson-ps1-LC199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">elseif</span> (<span class="pl-smi">$inputResponse<span class="pl-smi">.ToLower</span></span>().StartsWith(<span class="pl-s"><span class="pl-pds">&quot;</span>s<span class="pl-pds">&quot;</span></span>)) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td> <td id="file-move-sqlfilesalwayson-ps1-LC200" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Stopping execution because found currently running or soon to be run jobs.<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td> <td id="file-move-sqlfilesalwayson-ps1-LC201" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td> <td id="file-move-sqlfilesalwayson-ps1-LC202" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td> <td id="file-move-sqlfilesalwayson-ps1-LC203" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td> <td id="file-move-sqlfilesalwayson-ps1-LC204" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td> <td id="file-move-sqlfilesalwayson-ps1-LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Use T-SQL to make sure target folder(s) exist with proper permissions</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td> <td id="file-move-sqlfilesalwayson-ps1-LC206" class="blob-code blob-code-inner js-file-line"><span class="pl-k">@</span>(<span class="pl-smi">$NewDataFolderPath</span><span class="pl-k">,</span><span class="pl-smi">$NewLogFolderPath</span>) <span class="pl-k">|</span> <span class="pl-k">ForEach</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td> <td id="file-move-sqlfilesalwayson-ps1-LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>set nocount on;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td> <td id="file-move-sqlfilesalwayson-ps1-LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-s">declare @path varchar(8000) = &#39;<span class="pl-c1">$_</span>&#39;;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td> <td id="file-move-sqlfilesalwayson-ps1-LC209" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td> <td id="file-move-sqlfilesalwayson-ps1-LC210" class="blob-code blob-code-inner js-file-line"><span class="pl-s">create table #tmp (</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td> <td id="file-move-sqlfilesalwayson-ps1-LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-s">[FILE_EXISTS] int not null,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td> <td id="file-move-sqlfilesalwayson-ps1-LC212" class="blob-code blob-code-inner js-file-line"><span class="pl-s">[FILE_IS_DIRECTORY] int not null,</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td> <td id="file-move-sqlfilesalwayson-ps1-LC213" class="blob-code blob-code-inner js-file-line"><span class="pl-s">[PARENT_DIRECTORY_EXISTS] int not null)</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td> <td id="file-move-sqlfilesalwayson-ps1-LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td> <td id="file-move-sqlfilesalwayson-ps1-LC215" class="blob-code blob-code-inner js-file-line"><span class="pl-s">insert into #tmp</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td> <td id="file-move-sqlfilesalwayson-ps1-LC216" class="blob-code blob-code-inner js-file-line"><span class="pl-s">exec xp_fileexist @path;</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td> <td id="file-move-sqlfilesalwayson-ps1-LC217" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td> <td id="file-move-sqlfilesalwayson-ps1-LC218" class="blob-code blob-code-inner js-file-line"><span class="pl-s">if exists ( select * from #tmp where FILE_EXISTS = 1 )</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td> <td id="file-move-sqlfilesalwayson-ps1-LC219" class="blob-code blob-code-inner js-file-line"><span class="pl-s">begin</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td> <td id="file-move-sqlfilesalwayson-ps1-LC220" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> raiserror(N&#39;Existing path is not a directory: %s&#39;,16,1,@path);</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td> <td id="file-move-sqlfilesalwayson-ps1-LC221" class="blob-code blob-code-inner js-file-line"><span class="pl-s">end</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td> <td id="file-move-sqlfilesalwayson-ps1-LC222" class="blob-code blob-code-inner js-file-line"><span class="pl-s">else if exists (select * from #tmp where FILE_EXISTS = 0 AND FILE_IS_DIRECTORY = 0)</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td> <td id="file-move-sqlfilesalwayson-ps1-LC223" class="blob-code blob-code-inner js-file-line"><span class="pl-s">begin</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td> <td id="file-move-sqlfilesalwayson-ps1-LC224" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> raiserror(N&#39;Creating new directory: %s&#39;, 0, 1, @path);</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td> <td id="file-move-sqlfilesalwayson-ps1-LC225" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> exec xp_create_subdir @path</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td> <td id="file-move-sqlfilesalwayson-ps1-LC226" class="blob-code blob-code-inner js-file-line"><span class="pl-s">end<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td> <td id="file-move-sqlfilesalwayson-ps1-LC227" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td> <td id="file-move-sqlfilesalwayson-ps1-LC228" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td> <td id="file-move-sqlfilesalwayson-ps1-LC229" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Make sure the new folder paths are accessible</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td> <td id="file-move-sqlfilesalwayson-ps1-LC230" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">$NewDataFolderPath</span> <span class="pl-k">-or</span> <span class="pl-k">!</span>(<span class="pl-c1">Test-Path</span> <span class="pl-smi">$NewDataFolderPath</span> <span class="pl-k">-</span>PathType Container)) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td> <td id="file-move-sqlfilesalwayson-ps1-LC231" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Unable to access new data folder path: <span class="pl-smi">$NewDataFolderPath</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td> <td id="file-move-sqlfilesalwayson-ps1-LC232" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td> <td id="file-move-sqlfilesalwayson-ps1-LC233" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">$NewLogFolderPath</span> <span class="pl-k">-or</span> <span class="pl-k">!</span>(<span class="pl-c1">Test-Path</span> <span class="pl-smi">$NewLogFolderPath</span> <span class="pl-k">-</span>PathType Container)) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td> <td id="file-move-sqlfilesalwayson-ps1-LC234" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Unable to access new log folder path: <span class="pl-smi">$NewLogFolderPath</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td> <td id="file-move-sqlfilesalwayson-ps1-LC235" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td> <td id="file-move-sqlfilesalwayson-ps1-LC236" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td> <td id="file-move-sqlfilesalwayson-ps1-LC237" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Get metadata for all database files</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td> <td id="file-move-sqlfilesalwayson-ps1-LC238" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbFiles</span> <span class="pl-k">=</span> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>SELECT name, type_desc, physical_name</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td> <td id="file-move-sqlfilesalwayson-ps1-LC239" class="blob-code blob-code-inner js-file-line"><span class="pl-s">FROM sys.master_files</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td> <td id="file-move-sqlfilesalwayson-ps1-LC240" class="blob-code blob-code-inner js-file-line"><span class="pl-s">WHERE database_id = DB_ID(&#39;<span class="pl-smi">$DatabaseName</span>&#39;);<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td> <td id="file-move-sqlfilesalwayson-ps1-LC241" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td> <td id="file-move-sqlfilesalwayson-ps1-LC242" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Validate the path for each file and make sure it&#39;s either LOG or ROWS</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td> <td id="file-move-sqlfilesalwayson-ps1-LC243" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> (I cannot guarantee at this point that this script will work with other file types such as FILESTREAM, Full-Text, In-Memory, etc.)</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td> <td id="file-move-sqlfilesalwayson-ps1-LC244" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbFiles</span> <span class="pl-k">|</span> <span class="pl-k">ForEach</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td> <td id="file-move-sqlfilesalwayson-ps1-LC245" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((<span class="pl-c1">Test-Path</span> <span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span> <span class="pl-k">-</span>PathType Leaf <span class="pl-k">-</span>IsValid <span class="pl-k">-</span>ErrorAction <span class="pl-k">Continue</span>) <span class="pl-k">-and</span> (<span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ROWS<span class="pl-pds">&quot;</span></span> <span class="pl-k">-or</span> <span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>LOG<span class="pl-pds">&quot;</span></span> <span class="pl-k">-or</span> <span class="pl-smi">$AllowNonDataOrLogFileTypes</span>))</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td> <td id="file-move-sqlfilesalwayson-ps1-LC246" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td> <td id="file-move-sqlfilesalwayson-ps1-LC247" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>OK: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>, type: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span><span class="pl-pse">)</span>, old path: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Green</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td> <td id="file-move-sqlfilesalwayson-ps1-LC248" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">elseif</span> (<span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-ne</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ROWS<span class="pl-pds">&quot;</span></span> <span class="pl-k">-and</span> <span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-ne</span> <span class="pl-s"><span class="pl-pds">&quot;</span>LOG<span class="pl-pds">&quot;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td> <td id="file-move-sqlfilesalwayson-ps1-LC249" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>UNSUPPORTED TYPE: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>, type: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span><span class="pl-pse">)</span>, old path: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td> <td id="file-move-sqlfilesalwayson-ps1-LC250" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td> <td id="file-move-sqlfilesalwayson-ps1-LC251" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Error</span> <span class="pl-s"><span class="pl-pds">&quot;</span>INACCESSIBLE: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>, type: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span><span class="pl-pse">)</span>, old path: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td> <td id="file-move-sqlfilesalwayson-ps1-LC252" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td> <td id="file-move-sqlfilesalwayson-ps1-LC253" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td> <td id="file-move-sqlfilesalwayson-ps1-LC254" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td> <td id="file-move-sqlfilesalwayson-ps1-LC255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Suspend and remove the database from the Availability Group</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td> <td id="file-move-sqlfilesalwayson-ps1-LC256" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Removing [<span class="pl-smi">$DatabaseName</span>] from Availability Group [<span class="pl-smi">$AGName</span>]<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td> <td id="file-move-sqlfilesalwayson-ps1-LC257" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td> <td id="file-move-sqlfilesalwayson-ps1-LC258" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$cmd</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>USE [master];</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td> <td id="file-move-sqlfilesalwayson-ps1-LC259" class="blob-code blob-code-inner js-file-line"><span class="pl-s">ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET HADR SUSPEND;<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td> <td id="file-move-sqlfilesalwayson-ps1-LC260" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td> <td id="file-move-sqlfilesalwayson-ps1-LC261" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$IsSecondary</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td> <td id="file-move-sqlfilesalwayson-ps1-LC262" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$cmd</span> <span class="pl-k">=</span> <span class="pl-smi">$cmd</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td> <td id="file-move-sqlfilesalwayson-ps1-LC263" class="blob-code blob-code-inner js-file-line"><span class="pl-s">ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET HADR OFF;<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td> <td id="file-move-sqlfilesalwayson-ps1-LC264" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td> <td id="file-move-sqlfilesalwayson-ps1-LC265" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$cmd</span> <span class="pl-k">=</span> <span class="pl-smi">$cmd</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td> <td id="file-move-sqlfilesalwayson-ps1-LC266" class="blob-code blob-code-inner js-file-line"><span class="pl-s">ALTER AVAILABILITY GROUP [<span class="pl-smi">$AGName</span>] REMOVE DATABASE [<span class="pl-smi">$DatabaseName</span>];<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td> <td id="file-move-sqlfilesalwayson-ps1-LC267" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td> <td id="file-move-sqlfilesalwayson-ps1-LC268" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td> <td id="file-move-sqlfilesalwayson-ps1-LC269" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-smi">$cmd</span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td> <td id="file-move-sqlfilesalwayson-ps1-LC270" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td> <td id="file-move-sqlfilesalwayson-ps1-LC271" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Update the database file paths with their new locations</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td> <td id="file-move-sqlfilesalwayson-ps1-LC272" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbFiles</span> <span class="pl-k">|</span> <span class="pl-k">ForEach</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td> <td id="file-move-sqlfilesalwayson-ps1-LC273" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td> <td id="file-move-sqlfilesalwayson-ps1-LC274" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currFileName</span> <span class="pl-k">=</span> <span class="pl-c1">Split-Path</span> <span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span> <span class="pl-k">-</span>Leaf</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td> <td id="file-move-sqlfilesalwayson-ps1-LC275" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L276" class="blob-num js-line-number js-blob-rnum" data-line-number="276"></td> <td id="file-move-sqlfilesalwayson-ps1-LC276" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ROWS<span class="pl-pds">&quot;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L277" class="blob-num js-line-number js-blob-rnum" data-line-number="277"></td> <td id="file-move-sqlfilesalwayson-ps1-LC277" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currNewPath</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-k">-</span>Path <span class="pl-smi">$NewDataFolderPath</span> <span class="pl-k">-</span>ChildPath <span class="pl-smi">$currFileName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L278" class="blob-num js-line-number js-blob-rnum" data-line-number="278"></td> <td id="file-move-sqlfilesalwayson-ps1-LC278" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L279" class="blob-num js-line-number js-blob-rnum" data-line-number="279"></td> <td id="file-move-sqlfilesalwayson-ps1-LC279" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currNewPath</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-k">-</span>Path <span class="pl-smi">$NewLogFolderPath</span> <span class="pl-k">-</span>ChildPath <span class="pl-smi">$currFileName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L280" class="blob-num js-line-number js-blob-rnum" data-line-number="280"></td> <td id="file-move-sqlfilesalwayson-ps1-LC280" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L281" class="blob-num js-line-number js-blob-rnum" data-line-number="281"></td> <td id="file-move-sqlfilesalwayson-ps1-LC281" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L282" class="blob-num js-line-number js-blob-rnum" data-line-number="282"></td> <td id="file-move-sqlfilesalwayson-ps1-LC282" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Altering file [<span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>] with new path: <span class="pl-smi">$currNewPath</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L283" class="blob-num js-line-number js-blob-rnum" data-line-number="283"></td> <td id="file-move-sqlfilesalwayson-ps1-LC283" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L284" class="blob-num js-line-number js-blob-rnum" data-line-number="284"></td> <td id="file-move-sqlfilesalwayson-ps1-LC284" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>USE [master];</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L285" class="blob-num js-line-number js-blob-rnum" data-line-number="285"></td> <td id="file-move-sqlfilesalwayson-ps1-LC285" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] MODIFY FILE (NAME = [<span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>], FILENAME = &#39;<span class="pl-smi">$currNewPath</span>&#39;);<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L286" class="blob-num js-line-number js-blob-rnum" data-line-number="286"></td> <td id="file-move-sqlfilesalwayson-ps1-LC286" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L287" class="blob-num js-line-number js-blob-rnum" data-line-number="287"></td> <td id="file-move-sqlfilesalwayson-ps1-LC287" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L288" class="blob-num js-line-number js-blob-rnum" data-line-number="288"></td> <td id="file-move-sqlfilesalwayson-ps1-LC288" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">$IsSecondary</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L289" class="blob-num js-line-number js-blob-rnum" data-line-number="289"></td> <td id="file-move-sqlfilesalwayson-ps1-LC289" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L290" class="blob-num js-line-number js-blob-rnum" data-line-number="290"></td> <td id="file-move-sqlfilesalwayson-ps1-LC290" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> If connected to the PRIMARY replica, take the database offline</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L291" class="blob-num js-line-number js-blob-rnum" data-line-number="291"></td> <td id="file-move-sqlfilesalwayson-ps1-LC291" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Taking [<span class="pl-smi">$DatabaseName</span>] offline<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L292" class="blob-num js-line-number js-blob-rnum" data-line-number="292"></td> <td id="file-move-sqlfilesalwayson-ps1-LC292" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L293" class="blob-num js-line-number js-blob-rnum" data-line-number="293"></td> <td id="file-move-sqlfilesalwayson-ps1-LC293" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>USE [master];</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L294" class="blob-num js-line-number js-blob-rnum" data-line-number="294"></td> <td id="file-move-sqlfilesalwayson-ps1-LC294" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET OFFLINE WITH ROLLBACK IMMEDIATE;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L295" class="blob-num js-line-number js-blob-rnum" data-line-number="295"></td> <td id="file-move-sqlfilesalwayson-ps1-LC295" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L296" class="blob-num js-line-number js-blob-rnum" data-line-number="296"></td> <td id="file-move-sqlfilesalwayson-ps1-LC296" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">elseif</span> (<span class="pl-smi">$SqlService<span class="pl-smi">.Status</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Running<span class="pl-pds">&quot;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L297" class="blob-num js-line-number js-blob-rnum" data-line-number="297"></td> <td id="file-move-sqlfilesalwayson-ps1-LC297" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L298" class="blob-num js-line-number js-blob-rnum" data-line-number="298"></td> <td id="file-move-sqlfilesalwayson-ps1-LC298" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> If connected to the SECONDARY replica, take the MSSQLSERVER service offline</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L299" class="blob-num js-line-number js-blob-rnum" data-line-number="299"></td> <td id="file-move-sqlfilesalwayson-ps1-LC299" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Stopping service &#39;<span class="pl-smi">$SqlServiceName</span>&#39; in computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39;...<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L300" class="blob-num js-line-number js-blob-rnum" data-line-number="300"></td> <td id="file-move-sqlfilesalwayson-ps1-LC300" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L301" class="blob-num js-line-number js-blob-rnum" data-line-number="301"></td> <td id="file-move-sqlfilesalwayson-ps1-LC301" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SqlService</span> <span class="pl-k">|</span> <span class="pl-c1">Stop-Service</span> <span class="pl-k">-</span>Force <span class="pl-k">-</span>Verbose</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L302" class="blob-num js-line-number js-blob-rnum" data-line-number="302"></td> <td id="file-move-sqlfilesalwayson-ps1-LC302" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L303" class="blob-num js-line-number js-blob-rnum" data-line-number="303"></td> <td id="file-move-sqlfilesalwayson-ps1-LC303" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L304" class="blob-num js-line-number js-blob-rnum" data-line-number="304"></td> <td id="file-move-sqlfilesalwayson-ps1-LC304" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Warning</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Service status of &#39;<span class="pl-smi">$SqlServiceName</span>&#39; in computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39; is: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$SqlService<span class="pl-smi">.Status</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L305" class="blob-num js-line-number js-blob-rnum" data-line-number="305"></td> <td id="file-move-sqlfilesalwayson-ps1-LC305" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L306" class="blob-num js-line-number js-blob-rnum" data-line-number="306"></td> <td id="file-move-sqlfilesalwayson-ps1-LC306" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L307" class="blob-num js-line-number js-blob-rnum" data-line-number="307"></td> <td id="file-move-sqlfilesalwayson-ps1-LC307" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Begin moving the files to their new locations</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L308" class="blob-num js-line-number js-blob-rnum" data-line-number="308"></td> <td id="file-move-sqlfilesalwayson-ps1-LC308" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbFiles</span> <span class="pl-k">|</span> <span class="pl-k">ForEach</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L309" class="blob-num js-line-number js-blob-rnum" data-line-number="309"></td> <td id="file-move-sqlfilesalwayson-ps1-LC309" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L310" class="blob-num js-line-number js-blob-rnum" data-line-number="310"></td> <td id="file-move-sqlfilesalwayson-ps1-LC310" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currFileName</span> <span class="pl-k">=</span> <span class="pl-c1">Split-Path</span> <span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span> <span class="pl-k">-</span>Leaf</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L311" class="blob-num js-line-number js-blob-rnum" data-line-number="311"></td> <td id="file-move-sqlfilesalwayson-ps1-LC311" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L312" class="blob-num js-line-number js-blob-rnum" data-line-number="312"></td> <td id="file-move-sqlfilesalwayson-ps1-LC312" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Save the current file&#39;s permissions and ownership details</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L313" class="blob-num js-line-number js-blob-rnum" data-line-number="313"></td> <td id="file-move-sqlfilesalwayson-ps1-LC313" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currAcl</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Acl</span> <span class="pl-k">-</span>Path <span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L314" class="blob-num js-line-number js-blob-rnum" data-line-number="314"></td> <td id="file-move-sqlfilesalwayson-ps1-LC314" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L315" class="blob-num js-line-number js-blob-rnum" data-line-number="315"></td> <td id="file-move-sqlfilesalwayson-ps1-LC315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">$_<span class="pl-smi">.type_desc</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>LOG<span class="pl-pds">&quot;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L316" class="blob-num js-line-number js-blob-rnum" data-line-number="316"></td> <td id="file-move-sqlfilesalwayson-ps1-LC316" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currNewPath</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-k">-</span>Path <span class="pl-smi">$NewLogFolderPath</span> <span class="pl-k">-</span>ChildPath <span class="pl-smi">$currFileName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L317" class="blob-num js-line-number js-blob-rnum" data-line-number="317"></td> <td id="file-move-sqlfilesalwayson-ps1-LC317" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L318" class="blob-num js-line-number js-blob-rnum" data-line-number="318"></td> <td id="file-move-sqlfilesalwayson-ps1-LC318" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currNewPath</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-k">-</span>Path <span class="pl-smi">$NewDataFolderPath</span> <span class="pl-k">-</span>ChildPath <span class="pl-smi">$currFileName</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L319" class="blob-num js-line-number js-blob-rnum" data-line-number="319"></td> <td id="file-move-sqlfilesalwayson-ps1-LC319" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L320" class="blob-num js-line-number js-blob-rnum" data-line-number="320"></td> <td id="file-move-sqlfilesalwayson-ps1-LC320" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L321" class="blob-num js-line-number js-blob-rnum" data-line-number="321"></td> <td id="file-move-sqlfilesalwayson-ps1-LC321" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Moving file [<span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.name</span></span><span class="pl-pse">)</span>] from: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span><span class="pl-pse">)</span> to: <span class="pl-smi">$currNewPath</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L322" class="blob-num js-line-number js-blob-rnum" data-line-number="322"></td> <td id="file-move-sqlfilesalwayson-ps1-LC322" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L323" class="blob-num js-line-number js-blob-rnum" data-line-number="323"></td> <td id="file-move-sqlfilesalwayson-ps1-LC323" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Move-Item</span> <span class="pl-k">-</span>Path <span class="pl-c1">$_<span class="pl-smi">.physical_name</span></span> <span class="pl-k">-</span>Destination <span class="pl-smi">$currNewPath</span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>ErrorAction Stop <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L324" class="blob-num js-line-number js-blob-rnum" data-line-number="324"></td> <td id="file-move-sqlfilesalwayson-ps1-LC324" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L325" class="blob-num js-line-number js-blob-rnum" data-line-number="325"></td> <td id="file-move-sqlfilesalwayson-ps1-LC325" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Apply the file-level permissions and ownership in their new location</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L326" class="blob-num js-line-number js-blob-rnum" data-line-number="326"></td> <td id="file-move-sqlfilesalwayson-ps1-LC326" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$currAcl</span> <span class="pl-k">|</span> <span class="pl-c1">Set-Acl</span> <span class="pl-k">-</span>Path <span class="pl-smi">$currNewPath</span> <span class="pl-k">-</span>Verbose</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L327" class="blob-num js-line-number js-blob-rnum" data-line-number="327"></td> <td id="file-move-sqlfilesalwayson-ps1-LC327" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L328" class="blob-num js-line-number js-blob-rnum" data-line-number="328"></td> <td id="file-move-sqlfilesalwayson-ps1-LC328" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L329" class="blob-num js-line-number js-blob-rnum" data-line-number="329"></td> <td id="file-move-sqlfilesalwayson-ps1-LC329" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L330" class="blob-num js-line-number js-blob-rnum" data-line-number="330"></td> <td id="file-move-sqlfilesalwayson-ps1-LC330" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">$IsSecondary</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L331" class="blob-num js-line-number js-blob-rnum" data-line-number="331"></td> <td id="file-move-sqlfilesalwayson-ps1-LC331" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L332" class="blob-num js-line-number js-blob-rnum" data-line-number="332"></td> <td id="file-move-sqlfilesalwayson-ps1-LC332" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> If connected to the PRIMARY replica, bring the database back online</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L333" class="blob-num js-line-number js-blob-rnum" data-line-number="333"></td> <td id="file-move-sqlfilesalwayson-ps1-LC333" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Bringing [<span class="pl-smi">$DatabaseName</span>] online<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L334" class="blob-num js-line-number js-blob-rnum" data-line-number="334"></td> <td id="file-move-sqlfilesalwayson-ps1-LC334" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L335" class="blob-num js-line-number js-blob-rnum" data-line-number="335"></td> <td id="file-move-sqlfilesalwayson-ps1-LC335" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>USE [master];</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L336" class="blob-num js-line-number js-blob-rnum" data-line-number="336"></td> <td id="file-move-sqlfilesalwayson-ps1-LC336" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET ONLINE;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L337" class="blob-num js-line-number js-blob-rnum" data-line-number="337"></td> <td id="file-move-sqlfilesalwayson-ps1-LC337" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L338" class="blob-num js-line-number js-blob-rnum" data-line-number="338"></td> <td id="file-move-sqlfilesalwayson-ps1-LC338" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">elseif</span> (<span class="pl-smi">$SqlService<span class="pl-smi">.Status</span></span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Stopped<span class="pl-pds">&quot;</span></span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L339" class="blob-num js-line-number js-blob-rnum" data-line-number="339"></td> <td id="file-move-sqlfilesalwayson-ps1-LC339" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L340" class="blob-num js-line-number js-blob-rnum" data-line-number="340"></td> <td id="file-move-sqlfilesalwayson-ps1-LC340" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> If connected to the SECONDARY replica, bring the MSSQLSERVER service and its dependent services back online</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L341" class="blob-num js-line-number js-blob-rnum" data-line-number="341"></td> <td id="file-move-sqlfilesalwayson-ps1-LC341" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Starting service &#39;<span class="pl-smi">$SqlServiceName</span>&#39; in computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39;...<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L342" class="blob-num js-line-number js-blob-rnum" data-line-number="342"></td> <td id="file-move-sqlfilesalwayson-ps1-LC342" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L343" class="blob-num js-line-number js-blob-rnum" data-line-number="343"></td> <td id="file-move-sqlfilesalwayson-ps1-LC343" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SqlService</span> <span class="pl-k">|</span> <span class="pl-c1">Start-Service</span> <span class="pl-k">-</span>Verbose</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L344" class="blob-num js-line-number js-blob-rnum" data-line-number="344"></td> <td id="file-move-sqlfilesalwayson-ps1-LC344" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SqlDependentServices</span> <span class="pl-k">|</span> <span class="pl-c1">Start-Service</span> <span class="pl-k">-</span>Verbose</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L345" class="blob-num js-line-number js-blob-rnum" data-line-number="345"></td> <td id="file-move-sqlfilesalwayson-ps1-LC345" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L346" class="blob-num js-line-number js-blob-rnum" data-line-number="346"></td> <td id="file-move-sqlfilesalwayson-ps1-LC346" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L347" class="blob-num js-line-number js-blob-rnum" data-line-number="347"></td> <td id="file-move-sqlfilesalwayson-ps1-LC347" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Warning</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Service status of &#39;<span class="pl-smi">$SqlServiceName</span>&#39; in computer &#39;<span class="pl-smi">$<span class="pl-c1">env:</span>COMPUTERNAME</span>&#39; is: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$SqlService<span class="pl-smi">.Status</span></span><span class="pl-pse">)</span><span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L348" class="blob-num js-line-number js-blob-rnum" data-line-number="348"></td> <td id="file-move-sqlfilesalwayson-ps1-LC348" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L349" class="blob-num js-line-number js-blob-rnum" data-line-number="349"></td> <td id="file-move-sqlfilesalwayson-ps1-LC349" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L350" class="blob-num js-line-number js-blob-rnum" data-line-number="350"></td> <td id="file-move-sqlfilesalwayson-ps1-LC350" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Add the database back to the Availability Group</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L351" class="blob-num js-line-number js-blob-rnum" data-line-number="351"></td> <td id="file-move-sqlfilesalwayson-ps1-LC351" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Joining database [<span class="pl-smi">$DatabaseName</span>] back to Availability Group [<span class="pl-smi">$AGName</span>]<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L352" class="blob-num js-line-number js-blob-rnum" data-line-number="352"></td> <td id="file-move-sqlfilesalwayson-ps1-LC352" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L353" class="blob-num js-line-number js-blob-rnum" data-line-number="353"></td> <td id="file-move-sqlfilesalwayson-ps1-LC353" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$IsSecondary</span>) {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L354" class="blob-num js-line-number js-blob-rnum" data-line-number="354"></td> <td id="file-move-sqlfilesalwayson-ps1-LC354" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$cmd</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET HADR AVAILABILITY GROUP = [<span class="pl-smi">$AGName</span>];<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L355" class="blob-num js-line-number js-blob-rnum" data-line-number="355"></td> <td id="file-move-sqlfilesalwayson-ps1-LC355" class="blob-code blob-code-inner js-file-line">} <span class="pl-k">else</span> {</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L356" class="blob-num js-line-number js-blob-rnum" data-line-number="356"></td> <td id="file-move-sqlfilesalwayson-ps1-LC356" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$cmd</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>ALTER AVAILABILITY GROUP [<span class="pl-smi">$AGName</span>] ADD DATABASE [<span class="pl-smi">$DatabaseName</span>];<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L357" class="blob-num js-line-number js-blob-rnum" data-line-number="357"></td> <td id="file-move-sqlfilesalwayson-ps1-LC357" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L358" class="blob-num js-line-number js-blob-rnum" data-line-number="358"></td> <td id="file-move-sqlfilesalwayson-ps1-LC358" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L359" class="blob-num js-line-number js-blob-rnum" data-line-number="359"></td> <td id="file-move-sqlfilesalwayson-ps1-LC359" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-smi">$cmd</span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L360" class="blob-num js-line-number js-blob-rnum" data-line-number="360"></td> <td id="file-move-sqlfilesalwayson-ps1-LC360" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L361" class="blob-num js-line-number js-blob-rnum" data-line-number="361"></td> <td id="file-move-sqlfilesalwayson-ps1-LC361" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Output new file details</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L362" class="blob-num js-line-number js-blob-rnum" data-line-number="362"></td> <td id="file-move-sqlfilesalwayson-ps1-LC362" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Invoke-Sqlcmd</span> <span class="pl-k">-</span>ConnectionString <span class="pl-smi">$SqlInstanceConnectionString</span> <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>SELECT name, type_desc, physical_name, state_desc</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L363" class="blob-num js-line-number js-blob-rnum" data-line-number="363"></td> <td id="file-move-sqlfilesalwayson-ps1-LC363" class="blob-code blob-code-inner js-file-line"><span class="pl-s">FROM sys.master_files</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L364" class="blob-num js-line-number js-blob-rnum" data-line-number="364"></td> <td id="file-move-sqlfilesalwayson-ps1-LC364" class="blob-code blob-code-inner js-file-line"><span class="pl-s">WHERE database_id = DB_ID(&#39;<span class="pl-smi">$DatabaseName</span>&#39;);<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Verbose <span class="pl-k">-</span>AbortOnError <span class="pl-k">-</span>OutputSqlErrors <span class="pl-c1">$true</span> <span class="pl-k">-</span>ErrorAction Stop</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L365" class="blob-num js-line-number js-blob-rnum" data-line-number="365"></td> <td id="file-move-sqlfilesalwayson-ps1-LC365" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L366" class="blob-num js-line-number js-blob-rnum" data-line-number="366"></td> <td id="file-move-sqlfilesalwayson-ps1-LC366" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Output</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-c1">Get-TimeStamp</span><span class="pl-pse">)</span> Done<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L367" class="blob-num js-line-number js-blob-rnum" data-line-number="367"></td> <td id="file-move-sqlfilesalwayson-ps1-LC367" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L368" class="blob-num js-line-number js-blob-rnum" data-line-number="368"></td> <td id="file-move-sqlfilesalwayson-ps1-LC368" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>endregion main</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L369" class="blob-num js-line-number js-blob-rnum" data-line-number="369"></td> <td id="file-move-sqlfilesalwayson-ps1-LC369" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L370" class="blob-num js-line-number js-blob-rnum" data-line-number="370"></td> <td id="file-move-sqlfilesalwayson-ps1-LC370" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L371" class="blob-num js-line-number js-blob-rnum" data-line-number="371"></td> <td id="file-move-sqlfilesalwayson-ps1-LC371" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>region finalization</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L372" class="blob-num js-line-number js-blob-rnum" data-line-number="372"></td> <td id="file-move-sqlfilesalwayson-ps1-LC372" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-smi">$logFileFolderPath</span> <span class="pl-k">-ne</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>) { <span class="pl-c1">Stop-Transcript</span> }</td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L373" class="blob-num js-line-number js-blob-rnum" data-line-number="373"></td> <td id="file-move-sqlfilesalwayson-ps1-LC373" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>endregion finalization</span></td> </tr> <tr> <td id="file-move-sqlfilesalwayson-ps1-L374" class="blob-num js-line-number js-blob-rnum" data-line-number="374"></td> <td id="file-move-sqlfilesalwayson-ps1-LC374" class="blob-code blob-code-inner js-file-line">}</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/ab0ed39c6ad8e4db586e1ff0344e2ea8 2021-09-06T07:09:19Z 2021-09-06T07:09:38Z Checks for tables and indexes with a high percentage of allocated but unused space in all DBs, and generates remediation commands for it Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/ab0ed39c6ad8e4db586e1ff0344e2ea8#file-table-and-index-high-unused-space-sql">Table and Index High Unused Space.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-table-and-index-high-unused-space-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Table and Index High Unused Space.sql content, created by EitanBlumin on 07:09AM on September 06, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Table and Index High Unused Space.sql"> <tr> <td id="file-table-and-index-high-unused-space-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-table-and-index-high-unused-space-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-table-and-index-high-unused-space-sql-LC2" class="blob-code blob-code-inner js-file-line"> @TopPerDB <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">50</span>,</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-table-and-index-high-unused-space-sql-LC3" class="blob-code blob-code-inner js-file-line"> @MinimumRowCount <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">1000</span>,</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-table-and-index-high-unused-space-sql-LC4" class="blob-code blob-code-inner js-file-line"> @MinimumUnusedSizeMB <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">1024</span>,</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-table-and-index-high-unused-space-sql-LC5" class="blob-code blob-code-inner js-file-line"> @MinimumUnusedSpacePct <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">40</span>,</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-table-and-index-high-unused-space-sql-LC6" class="blob-code blob-code-inner js-file-line"> @RebuildIndexOptions <span class="pl-k">varchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ONLINE = ON, SORT_IN_TEMPDB = ON, MAXDOP = 1&#39;</span> <span class="pl-c"><span class="pl-c">--</span> , RESUMABLE = ON -- adjust as needed</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-table-and-index-high-unused-space-sql-LC7" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-table-and-index-high-unused-space-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span>, <span class="pl-k">ARITHABORT</span>, <span class="pl-k">XACT_ABORT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-table-and-index-high-unused-space-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">TRANSACTION</span> <span class="pl-k">ISOLATION</span> <span class="pl-k">LEVEL</span> <span class="pl-k">READ</span> <span class="pl-k">UNCOMMITTED</span>;</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-table-and-index-high-unused-space-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @command <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>);</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-table-and-index-high-unused-space-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @TempResult <span class="pl-k">AS</span> <span class="pl-k">TABLE</span> (DatabaseName <span class="pl-k">sysname</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>, SchemaName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>, TableName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>, IndexName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>, Fill_Factor <span class="pl-k">int</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-table-and-index-high-unused-space-sql-LC12" class="blob-code blob-code-inner js-file-line">, DatabaseID <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>, ObjectId <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>, IndexId <span class="pl-k">int</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-table-and-index-high-unused-space-sql-LC13" class="blob-code blob-code-inner js-file-line">, CompressionType <span class="pl-k">tinyint</span> <span class="pl-k">NULL</span>, CompressionType_Desc <span class="pl-k">AS</span> (<span class="pl-k">CASE</span> CompressionType <span class="pl-k">WHEN</span> <span class="pl-c1">0</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>NONE&#39;</span> <span class="pl-k">WHEN</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ROW&#39;</span> <span class="pl-k">WHEN</span> <span class="pl-c1">2</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>PAGE&#39;</span> <span class="pl-k">WHEN</span> <span class="pl-c1">3</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>COLUMNSTORE&#39;</span> <span class="pl-k">WHEN</span> <span class="pl-c1">4</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>COLUMNSTORE_ARCHIVE&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>UNKNOWN&#39;</span> <span class="pl-k">END</span>)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-table-and-index-high-unused-space-sql-LC14" class="blob-code blob-code-inner js-file-line">, RowCounts <span class="pl-k">bigint</span> <span class="pl-k">NULL</span>, TotalSpaceMB <span class="pl-k">money</span> <span class="pl-k">NULL</span>, UsedSpaceMB <span class="pl-k">money</span> <span class="pl-k">NULL</span>, UnusedSpaceMB <span class="pl-k">money</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-table-and-index-high-unused-space-sql-LC15" class="blob-code blob-code-inner js-file-line">, UserSeeks <span class="pl-k">int</span> <span class="pl-k">NULL</span>, UserScans <span class="pl-k">int</span> <span class="pl-k">NULL</span>, UserLookups <span class="pl-k">int</span> <span class="pl-k">NULL</span>, UserUpdates <span class="pl-k">int</span> <span class="pl-k">NULL</span>);</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-table-and-index-high-unused-space-sql-LC16" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-table-and-index-high-unused-space-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @command <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>IF EXISTS (SELECT * FROM sys.databases WHERE [name] = &#39;<span class="pl-pds">&#39;</span>?&#39;<span class="pl-pds">&#39;</span> AND state = 0 AND HAS_DBACCESS([name]) = 1 AND database_id &gt; 4 AND is_distributor = 0 AND DATABASEPROPERTYEX([name], &#39;<span class="pl-pds">&#39;</span>Updateability&#39;<span class="pl-pds">&#39;</span>) = &#39;<span class="pl-pds">&#39;</span>READ_WRITE&#39;<span class="pl-pds">&#39;</span>)</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-table-and-index-high-unused-space-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-s">BEGIN</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-table-and-index-high-unused-space-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-s">USE [?];</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-table-and-index-high-unused-space-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s">SELECT TOP (<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), @TopPerDB) <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>)</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-table-and-index-high-unused-space-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> DB_NAME() AS DatabaseName,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-table-and-index-high-unused-space-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> OBJECT_SCHEMA_NAME(i.object_id) AS SchemaName,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-table-and-index-high-unused-space-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> OBJECT_NAME(i.object_id) AS TableName,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-table-and-index-high-unused-space-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> i.name AS IndexName,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-table-and-index-high-unused-space-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> i.fill_factor,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-table-and-index-high-unused-space-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> DB_ID(), i.object_id, i.index_id,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-table-and-index-high-unused-space-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> MAX(p.data_compression) AS CompressionType,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-table-and-index-high-unused-space-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SUM(p.rows) AS RowCounts,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-table-and-index-high-unused-space-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ROUND(SUM(a.total_pages) / 128.0, 2) AS TotalSpaceMB,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-table-and-index-high-unused-space-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ROUND(SUM(a.used_pages) / 128.0, 2) AS UsedSpaceMB, </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-table-and-index-high-unused-space-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ROUND((SUM(a.total_pages) - SUM(a.used_pages)) / 128.0, 2) AS UnusedSpaceMB,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-table-and-index-high-unused-space-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> MAX(us.user_seeks) AS user_seeks,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-table-and-index-high-unused-space-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> MAX(us.user_scans) AS user_scans,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-table-and-index-high-unused-space-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> MAX(us.user_lookups) AS user_lookups,</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-table-and-index-high-unused-space-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> MAX(us.user_updates) AS user_updates</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-table-and-index-high-unused-space-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-s">FROM </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-table-and-index-high-unused-space-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> sys.indexes i</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-table-and-index-high-unused-space-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-s">INNER JOIN </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-table-and-index-high-unused-space-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-table-and-index-high-unused-space-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-s">INNER JOIN </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-table-and-index-high-unused-space-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> sys.allocation_units a ON p.partition_id = a.container_id</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-table-and-index-high-unused-space-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-s">LEFT JOIN</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-table-and-index-high-unused-space-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> sys.dm_db_index_usage_stats AS us ON us.database_id = DB_ID() AND us.object_id = i.object_id AND us.index_id = i.index_id</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-table-and-index-high-unused-space-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-s">WHERE </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-table-and-index-high-unused-space-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> OBJECT_NAME(i.object_id) NOT LIKE <span class="pl-pds">&#39;&#39;</span>dt%&#39;<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-table-and-index-high-unused-space-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND OBJECT_SCHEMA_NAME(i.object_id) &lt;&gt; <span class="pl-pds">&#39;&#39;</span>sys&#39;<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-table-and-index-high-unused-space-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND i.object_id &gt; 255 </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-table-and-index-high-unused-space-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> and p.rows &gt;= 1</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-table-and-index-high-unused-space-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-s">GROUP BY </span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-table-and-index-high-unused-space-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> i.object_id, i.name, i.index_id, i.fill_factor</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-table-and-index-high-unused-space-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-s">HAVING</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-table-and-index-high-unused-space-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SUM(p.rows) &gt;= <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), @MinimumRowCount) <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-table-and-index-high-unused-space-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND (SUM(a.total_pages) - SUM(a.used_pages)) / 128 &gt;= <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), @MinimumUnusedSizeMB) <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-table-and-index-high-unused-space-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AND (SUM(a.used_pages) * 1.0) / SUM(a.total_pages) &lt;= 1 - (<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), @MinimumUnusedSpacePct) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> / 100.0)</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-table-and-index-high-unused-space-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-s">ORDER BY TotalSpaceMB DESC</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-table-and-index-high-unused-space-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-s">END<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-table-and-index-high-unused-space-sql-LC57" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-table-and-index-high-unused-space-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @TempResult</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-table-and-index-high-unused-space-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> sp_MSforeachdb @command</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-table-and-index-high-unused-space-sql-LC60" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-table-and-index-high-unused-space-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> r.<span class="pl-k">*</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-table-and-index-high-unused-space-sql-LC62" class="blob-code blob-code-inner js-file-line">, UnusedSpacePercent <span class="pl-k">=</span> UnusedSpaceMB <span class="pl-k">/</span> TotalSpaceMB <span class="pl-k">*</span> <span class="pl-c1">100</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-table-and-index-high-unused-space-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>, frg.avg_fragmentation_in_percent, frg.page_count</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-table-and-index-high-unused-space-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>, frg.avg_page_space_used_in_percent</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-table-and-index-high-unused-space-sql-LC65" class="blob-code blob-code-inner js-file-line">, RebuildCommand <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(DatabaseName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>; &#39;</span> <span class="pl-k">+</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-table-and-index-high-unused-space-sql-LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> IndexName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(SchemaName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(TableName)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-table-and-index-high-unused-space-sql-LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER INDEX &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(IndexName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(SchemaName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(TableName)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-table-and-index-high-unused-space-sql-LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> REBUILD WITH (FILLFACTOR = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), <span class="pl-c1">ISNULL</span>(<span class="pl-c1">NULLIF</span>(Fill_Factor,<span class="pl-c1">0</span>),<span class="pl-c1">100</span>)) <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">NULLIF</span>(@RebuildIndexOptions,<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span>), <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>);&#39;</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-table-and-index-high-unused-space-sql-LC69" class="blob-code blob-code-inner js-file-line">, ReorganizeCommand <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(DatabaseName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>; &#39;</span> <span class="pl-k">+</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-table-and-index-high-unused-space-sql-LC70" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> IndexName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER TABLE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(SchemaName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(TableName)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-table-and-index-high-unused-space-sql-LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER INDEX &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(IndexName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(SchemaName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(TableName)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-table-and-index-high-unused-space-sql-LC72" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> REORGANIZE;&#39;</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-table-and-index-high-unused-space-sql-LC73" class="blob-code blob-code-inner js-file-line">, CleanTableCommand <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(DatabaseName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>; DBCC CLEANTABLE (&#39;</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-table-and-index-high-unused-space-sql-LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(DatabaseName, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">QUOTENAME</span>(SchemaName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(TableName), <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-table-and-index-high-unused-space-sql-LC75" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, 10000 ) WITH NO_INFOMSGS;&#39;</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-table-and-index-high-unused-space-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> @TempResult <span class="pl-k">AS</span> r</td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-table-and-index-high-unused-space-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>OUTER APPLY sys.dm_db_index_physical_stats(DatabaseID, ObjectId, IndexId, NULL, &#39;LIMITED&#39;) AS frg</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-table-and-index-high-unused-space-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> UnusedSpaceMB <span class="pl-k">DESC</span></td> </tr> <tr> <td id="file-table-and-index-high-unused-space-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-table-and-index-high-unused-space-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPTION</span> (<span class="pl-k">MAXDOP</span> <span class="pl-c1">1</span>)</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/316a699e9febe6d02922b3910b3587b2 2021-07-24T12:48:53Z 2021-07-24T13:03:52Z Change Tracking Utility function and procedure to maintain last copied version Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/316a699e9febe6d02922b3910b3587b2#file-extended-properties-change-tracking-wrapper-functions-sql">extended properties change tracking wrapper functions.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-extended-properties-change-tracking-wrapper-functions-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="extended properties change tracking wrapper functions.sql content, created by EitanBlumin on 12:48PM on July 24, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="extended properties change tracking wrapper functions.sql"> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">FUNCTION</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">ct_get_last_copied_version</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC2" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC3" class="blob-code blob-code-inner js-file-line"> @table_name <span class="pl-k">sysname</span>,</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC4" class="blob-code blob-code-inner js-file-line"> @target_identifier <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">null</span> <span class="pl-c"><span class="pl-c">--</span> optional parameter if you have multiple sync targets</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC5" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RETURNS</span> <span class="pl-k">bigint</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RETURN</span> <span class="pl-c1">ISNULL</span>((<span class="pl-k">SELECT</span> <span class="pl-c1">convert</span>(<span class="pl-k">bigint</span>, [value])</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC10" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC11" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> major_id <span class="pl-k">=</span> <span class="pl-c1">OBJECT_ID</span>(@table_name)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC12" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> [name] <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CT_LastCopiedVersion&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>_&#39;</span> <span class="pl-k">+</span> @target_identifier, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span>)), <span class="pl-c1">0</span>)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">ct_set_last_copied_version</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC16" class="blob-code blob-code-inner js-file-line"> @table_name <span class="pl-k">sysname</span>,</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC17" class="blob-code blob-code-inner js-file-line"> @new_version <span class="pl-k">bigint</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC18" class="blob-code blob-code-inner js-file-line"> @target_identifier <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">null</span> <span class="pl-c"><span class="pl-c">--</span> optional parameter if you have multiple sync targets</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @PropertyName <span class="pl-k">sysname</span>, @PropertyValue <span class="pl-k">sql_variant</span>, @Level0Schema <span class="pl-k">sysname</span>, @Level1Table <span class="pl-k">sysname</span>;</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC23" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @PropertyName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CT_LastCopiedVersion&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>_&#39;</span> <span class="pl-k">+</span> @target_identifier, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Level0Schema <span class="pl-k">=</span> <span class="pl-c1">OBJECT_SCHEMA_NAME</span>(<span class="pl-c1">OBJECT_ID</span>(@table_name))</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Level1Table <span class="pl-k">=</span> <span class="pl-c1">OBJECT_NAME</span>(<span class="pl-c1">OBJECT_ID</span>(@table_name))</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @PropertyValue <span class="pl-k">=</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">sql_variant</span>, <span class="pl-c1">ISNULL</span>(@new_version, <span class="pl-c1">0</span>))</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC28" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Level0Schema <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> @Level1Table <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Specified table &quot;%s&quot; was not found.&#39;</span>,<span class="pl-c1">16</span>,<span class="pl-c1">1</span>,@table_name);</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC30" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC32" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC33" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">*</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC34" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC35" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> major_id <span class="pl-k">=</span> <span class="pl-c1">OBJECT_ID</span>(@table_name)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC36" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> [name] <span class="pl-k">=</span> @PropertyName</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC37" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC39" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_addextendedproperty @name <span class="pl-k">=</span> @PropertyName, @value <span class="pl-k">=</span> @PropertyValue,</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC40" class="blob-code blob-code-inner js-file-line"> @level0type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>SCHEMA&#39;</span>, @level0name <span class="pl-k">=</span> @Level0Schema, </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC41" class="blob-code blob-code-inner js-file-line"> @level1type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>TABLE&#39;</span>, @level1name <span class="pl-k">=</span> @Level1Table; </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_updateextendedproperty @name <span class="pl-k">=</span> @PropertyName, @value <span class="pl-k">=</span> @PropertyValue,</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC46" class="blob-code blob-code-inner js-file-line"> @level0type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>SCHEMA&#39;</span>, @level0name <span class="pl-k">=</span> @Level0Schema, </td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC47" class="blob-code blob-code-inner js-file-line"> @level1type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>TABLE&#39;</span>, @level1name <span class="pl-k">=</span> @Level1Table;</td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-extended-properties-change-tracking-wrapper-functions-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/f0b1b2112548207910b8036f06840e1f 2021-07-24T12:25:23Z 2022-03-20T17:17:01Z Function and stored procedure to implement Global Variables using Extended Properties Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/f0b1b2112548207910b8036f06840e1f#file-extended-properties-global-variable-wrapper-functions-sql">extended properties global variable wrapper functions.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-extended-properties-global-variable-wrapper-functions-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="extended properties global variable wrapper functions.sql content, created by EitanBlumin on 12:25PM on July 24, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="extended properties global variable wrapper functions.sql"> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Function to Retrieve a global variable value</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> don&#39;t forget to convert to the correct data type</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">FUNCTION</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">global_variable</span>(@VariableName <span class="pl-k">sysname</span>)</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RETURNS</span> <span class="pl-k">sql_variant</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">RETURN</span> (<span class="pl-k">SELECT</span> [value]</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC8" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC9" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> major_id <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-k">AND</span> minor_id <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC10" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> [name] <span class="pl-k">=</span> @VariableName)</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Stored Procedure to Save a global variable value</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">global_variable_set</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC15" class="blob-code blob-code-inner js-file-line"> @VariableName <span class="pl-k">sysname</span>,</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC16" class="blob-code blob-code-inner js-file-line"> @NewValue <span class="pl-k">sql_variant</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC20" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC21" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">*</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC22" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC23" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> major_id <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-k">AND</span> minor_id <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC24" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> [name] <span class="pl-k">=</span> @VariableName</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC25" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC27" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_addextendedproperty @name <span class="pl-k">=</span> @VariableName, @value <span class="pl-k">=</span> @NewValue; </td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC31" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_updateextendedproperty @name <span class="pl-k">=</span> @VariableName, @value <span class="pl-k">=</span> @NewValue;</td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-global-variable-wrapper-functions-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-extended-properties-global-variable-wrapper-functions-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/4c2048e992447a9027fbfcd85c055dbf 2021-07-12T20:46:43Z 2021-07-12T20:46:43Z Asynchronous Ledger Demo Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/4c2048e992447a9027fbfcd85c055dbf#file-asynchronous-ledger-demo-sql">Asynchronous Ledger Demo.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-asynchronous-ledger-demo-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Asynchronous Ledger Demo.sql content, created by EitanBlumin on 08:46PM on July 12, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Asynchronous Ledger Demo.sql"> <tr> <td id="file-asynchronous-ledger-demo-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-asynchronous-ledger-demo-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-asynchronous-ledger-demo-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Asynchronous Ledger Demo</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-asynchronous-ledger-demo-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">========================</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-asynchronous-ledger-demo-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin | https://eitanblumin.com | https://madeiradata.com</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-asynchronous-ledger-demo-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Date: 2021-07-03</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-asynchronous-ledger-demo-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Description:</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-asynchronous-ledger-demo-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This script demonstrates a use case of a high-throughput table</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-asynchronous-ledger-demo-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">which serves as a &quot;hot-spot&quot; for inserts and updates and queries.</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-asynchronous-ledger-demo-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This causes performance problems due to long lock chains, possible deadlocks,</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-asynchronous-ledger-demo-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">and sometimes even worker thread starvation.</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-asynchronous-ledger-demo-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-asynchronous-ledger-demo-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c">The script then creates a solution for this problem in the form of</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-asynchronous-ledger-demo-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c">an &quot;Asynchronous Ledger&quot; method utilizing ALTER TABLE SWITCH TO while</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-asynchronous-ledger-demo-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">separating between a &quot;buffer&quot; and a &quot;staging&quot; table, to eliminate any</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-asynchronous-ledger-demo-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c">contention between the high-throughput INSERTs and any other operations.</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-asynchronous-ledger-demo-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-asynchronous-ledger-demo-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">More details: https://eitanblumin.com/?p=2204</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-asynchronous-ledger-demo-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-asynchronous-ledger-demo-sql-LC19" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-asynchronous-ledger-demo-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>***********************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-asynchronous-ledger-demo-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>************* Synchronous Demo ****************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-asynchronous-ledger-demo-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>***********************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-asynchronous-ledger-demo-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>MyHotTable&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-en">MyHotTable</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-asynchronous-ledger-demo-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-asynchronous-ledger-demo-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> MyHotTable (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-asynchronous-ledger-demo-sql-LC26" class="blob-code blob-code-inner js-file-line"> SomeIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-asynchronous-ledger-demo-sql-LC27" class="blob-code blob-code-inner js-file-line"> SomeOtherIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-asynchronous-ledger-demo-sql-LC28" class="blob-code blob-code-inner js-file-line"> SomeText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-asynchronous-ledger-demo-sql-LC29" class="blob-code blob-code-inner js-file-line"> SomeOtherText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-asynchronous-ledger-demo-sql-LC30" class="blob-code blob-code-inner js-file-line"> SomeCounter <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-asynchronous-ledger-demo-sql-LC31" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CONSTRAINT</span> PK_MyHotTable <span class="pl-k">PRIMARY</span> <span class="pl-k">KEY</span> <span class="pl-k">CLUSTERED</span> (SomeIdentifier, SomeOtherIdentifier)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-asynchronous-ledger-demo-sql-LC32" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-asynchronous-ledger-demo-sql-LC33" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-asynchronous-ledger-demo-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">NONCLUSTERED</span> <span class="pl-k">INDEX</span> IX_MyHotTable_SomeOtherIdentifier <span class="pl-k">ON</span> MyHotTable (SomeOtherIdentifier) <span class="pl-k">INCLUDE</span> (SomeCounter, SomeText, SomeOtherText);</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-asynchronous-ledger-demo-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-asynchronous-ledger-demo-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WITH</span> Level1</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-asynchronous-ledger-demo-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-asynchronous-ledger-demo-sql-LC38" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-asynchronous-ledger-demo-sql-LC39" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> (<span class="pl-c1">100</span>) <span class="pl-c1">ROW_NUMBER</span>() <span class="pl-k">OVER</span> (<span class="pl-k">ORDER BY</span> (<span class="pl-k">SELECT</span> <span class="pl-k">NULL</span>)) <span class="pl-k">AS</span> n</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-asynchronous-ledger-demo-sql-LC40" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">all_columns</span> a <span class="pl-k">CROSS</span> <span class="pl-k">JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">all_columns</span> b</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-asynchronous-ledger-demo-sql-LC41" class="blob-code blob-code-inner js-file-line">),</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-asynchronous-ledger-demo-sql-LC42" class="blob-code blob-code-inner js-file-line">Level2</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-asynchronous-ledger-demo-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-asynchronous-ledger-demo-sql-LC44" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-asynchronous-ledger-demo-sql-LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> (<span class="pl-c1">10000</span>) <span class="pl-c1">ROW_NUMBER</span>() <span class="pl-k">OVER</span> (<span class="pl-k">ORDER BY</span> (<span class="pl-k">SELECT</span> <span class="pl-k">NULL</span>)) <span class="pl-k">AS</span> n</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-asynchronous-ledger-demo-sql-LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">all_columns</span> a <span class="pl-k">CROSS</span> <span class="pl-k">JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">all_columns</span> b</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-asynchronous-ledger-demo-sql-LC47" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-asynchronous-ledger-demo-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> MyHotTable (SomeIdentifier, SomeOtherIdentifier, SomeText, SomeOtherText, SomeCounter)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-asynchronous-ledger-demo-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">Level1</span>.<span class="pl-c1">n</span>, <span class="pl-c1">Level2</span>.<span class="pl-c1">n</span>, <span class="pl-c1">NEWID</span>(), <span class="pl-c1">NEWID</span>(), <span class="pl-c1">ABS</span>(<span class="pl-c1">CHECKSUM</span>(<span class="pl-c1">NEWID</span>())) % <span class="pl-c1">10000</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-asynchronous-ledger-demo-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> Level1 <span class="pl-k">CROSS</span> <span class="pl-k">JOIN</span> Level2</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-asynchronous-ledger-demo-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-asynchronous-ledger-demo-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE OR ALTER</span> <span class="pl-k">PROCEDURE</span> UpsertHotTable</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-asynchronous-ledger-demo-sql-LC53" class="blob-code blob-code-inner js-file-line"> @SomeIdentifier <span class="pl-k">int</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-asynchronous-ledger-demo-sql-LC54" class="blob-code blob-code-inner js-file-line"> @SomeOtherIdentifier <span class="pl-k">int</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-asynchronous-ledger-demo-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-asynchronous-ledger-demo-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-asynchronous-ledger-demo-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-k">UPDATE</span> MyHotTable <span class="pl-k">SET</span> SomeCounter <span class="pl-k">=</span> SomeCounter <span class="pl-k">+</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-asynchronous-ledger-demo-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> SomeIdentifier <span class="pl-k">=</span> @SomeIdentifier <span class="pl-k">AND</span> SomeOtherIdentifier <span class="pl-k">=</span> @SomeOtherIdentifier</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-asynchronous-ledger-demo-sql-LC59" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-asynchronous-ledger-demo-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">@@ROWCOUNT</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-asynchronous-ledger-demo-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-asynchronous-ledger-demo-sql-LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> MyHotTable (SomeIdentifier, SomeOtherIdentifier, SomeText, SomeOtherText, SomeCounter)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-asynchronous-ledger-demo-sql-LC63" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">VALUES</span> (@SomeIdentifier, @SomeOtherIdentifier, <span class="pl-c1">NEWID</span>(), <span class="pl-c1">NEWID</span>(), <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-asynchronous-ledger-demo-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-asynchronous-ledger-demo-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-asynchronous-ledger-demo-sql-LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> UPSERT thread:</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-asynchronous-ledger-demo-sql-LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-asynchronous-ledger-demo-sql-LC68" class="blob-code blob-code-inner js-file-line"> @SomeIdentifier <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">ABS</span>(<span class="pl-c1">CHECKSUM</span>(<span class="pl-c1">NEWID</span>())) % <span class="pl-c1">2</span> <span class="pl-k">+</span> <span class="pl-c1">100</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-asynchronous-ledger-demo-sql-LC69" class="blob-code blob-code-inner js-file-line"> , @SomeOtherIdentifier <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">ABS</span>(<span class="pl-c1">CHECKSUM</span>(<span class="pl-c1">NEWID</span>())) % <span class="pl-c1">5</span> <span class="pl-k">+</span> <span class="pl-c1">10000</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-asynchronous-ledger-demo-sql-LC70" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-asynchronous-ledger-demo-sql-LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> UpsertHotTable @SomeIdentifier, @SomeOtherIdentifier</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-asynchronous-ledger-demo-sql-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-asynchronous-ledger-demo-sql-LC73" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-asynchronous-ledger-demo-sql-LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Query thread:</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-asynchronous-ledger-demo-sql-LC75" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..#AggTemp&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-asynchronous-ledger-demo-sql-LC76" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> #AggTemp</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-asynchronous-ledger-demo-sql-LC77" class="blob-code blob-code-inner js-file-line"> (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-asynchronous-ledger-demo-sql-LC78" class="blob-code blob-code-inner js-file-line"> SomeIdentifier <span class="pl-k">int</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-asynchronous-ledger-demo-sql-LC79" class="blob-code blob-code-inner js-file-line"> TotalCounter <span class="pl-k">int</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-asynchronous-ledger-demo-sql-LC80" class="blob-code blob-code-inner js-file-line"> );</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-asynchronous-ledger-demo-sql-LC81" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-asynchronous-ledger-demo-sql-LC82" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span> <span class="pl-k">TRAN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-asynchronous-ledger-demo-sql-LC83" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-asynchronous-ledger-demo-sql-LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> #AggTemp</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-asynchronous-ledger-demo-sql-LC85" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> SomeIdentifier, <span class="pl-c1">SUM</span>(SomeCounter)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-asynchronous-ledger-demo-sql-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> MyHotTable <span class="pl-k">WITH</span>(<span class="pl-k">REPEATABLEREAD</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-asynchronous-ledger-demo-sql-LC87" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GROUP BY</span> SomeIdentifier</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-asynchronous-ledger-demo-sql-LC88" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-asynchronous-ledger-demo-sql-LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WAITFOR</span> <span class="pl-k">DELAY</span> <span class="pl-s"><span class="pl-pds">&#39;</span>00:00:03&#39;</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-asynchronous-ledger-demo-sql-LC90" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-asynchronous-ledger-demo-sql-LC91" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DELETE</span> <span class="pl-k">FROM</span> #AggTemp</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-asynchronous-ledger-demo-sql-LC92" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-asynchronous-ledger-demo-sql-LC93" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">COMMIT</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-asynchronous-ledger-demo-sql-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-asynchronous-ledger-demo-sql-LC95" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-asynchronous-ledger-demo-sql-LC96" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-asynchronous-ledger-demo-sql-LC97" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-asynchronous-ledger-demo-sql-LC98" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>***********************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-asynchronous-ledger-demo-sql-LC99" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>************ Asynchronous Demo ****************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-asynchronous-ledger-demo-sql-LC100" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>***********************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-asynchronous-ledger-demo-sql-LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>MyHotTable_Buffer&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-en">MyHotTable_Buffer</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-asynchronous-ledger-demo-sql-LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-asynchronous-ledger-demo-sql-LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> MyHotTable_Buffer (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-asynchronous-ledger-demo-sql-LC104" class="blob-code blob-code-inner js-file-line"> SomeIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-asynchronous-ledger-demo-sql-LC105" class="blob-code blob-code-inner js-file-line"> SomeOtherIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-asynchronous-ledger-demo-sql-LC106" class="blob-code blob-code-inner js-file-line"> SomeText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-asynchronous-ledger-demo-sql-LC107" class="blob-code blob-code-inner js-file-line"> SomeOtherText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-asynchronous-ledger-demo-sql-LC108" class="blob-code blob-code-inner js-file-line"> SomeCounter <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-asynchronous-ledger-demo-sql-LC109" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-asynchronous-ledger-demo-sql-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-asynchronous-ledger-demo-sql-LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>MyHotTable_Staging&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> <span class="pl-en">MyHotTable_Staging</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-asynchronous-ledger-demo-sql-LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-asynchronous-ledger-demo-sql-LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> MyHotTable_Staging (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-asynchronous-ledger-demo-sql-LC114" class="blob-code blob-code-inner js-file-line"> SomeIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-asynchronous-ledger-demo-sql-LC115" class="blob-code blob-code-inner js-file-line"> SomeOtherIdentifier <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-asynchronous-ledger-demo-sql-LC116" class="blob-code blob-code-inner js-file-line"> SomeText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-asynchronous-ledger-demo-sql-LC117" class="blob-code blob-code-inner js-file-line"> SomeOtherText <span class="pl-k">nchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-asynchronous-ledger-demo-sql-LC118" class="blob-code blob-code-inner js-file-line"> SomeCounter <span class="pl-k">int</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-asynchronous-ledger-demo-sql-LC119" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-asynchronous-ledger-demo-sql-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-asynchronous-ledger-demo-sql-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE OR ALTER</span> <span class="pl-k">PROCEDURE</span> UpsertHotTable</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-asynchronous-ledger-demo-sql-LC122" class="blob-code blob-code-inner js-file-line"> @SomeIdentifier <span class="pl-k">int</span>,</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-asynchronous-ledger-demo-sql-LC123" class="blob-code blob-code-inner js-file-line"> @SomeOtherIdentifier <span class="pl-k">int</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-asynchronous-ledger-demo-sql-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-asynchronous-ledger-demo-sql-LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-asynchronous-ledger-demo-sql-LC126" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-asynchronous-ledger-demo-sql-LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> MyHotTable_Buffer (SomeIdentifier, SomeOtherIdentifier, SomeText, SomeOtherText, SomeCounter)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-asynchronous-ledger-demo-sql-LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-k">VALUES</span> (@SomeIdentifier, @SomeOtherIdentifier, <span class="pl-c1">NEWID</span>(), <span class="pl-c1">NEWID</span>(), <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-asynchronous-ledger-demo-sql-LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-asynchronous-ledger-demo-sql-LC130" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE OR ALTER</span> <span class="pl-k">PROCEDURE</span> [dbo].[sp_MyHotTable_AsyncInsert]</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-asynchronous-ledger-demo-sql-LC131" class="blob-code blob-code-inner js-file-line"> @DelayBeforeRepeat <span class="pl-k">VARCHAR</span>(<span class="pl-c1">17</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>00:00:15&#39;</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-asynchronous-ledger-demo-sql-LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-asynchronous-ledger-demo-sql-LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-asynchronous-ledger-demo-sql-LC134" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span>, <span class="pl-k">XACT_ABORT</span>, <span class="pl-k">ARITHABORT</span>, <span class="pl-k">QUOTED_IDENTIFIER</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-asynchronous-ledger-demo-sql-LC135" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> @PreexistingData <span class="pl-k">BIT</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-asynchronous-ledger-demo-sql-LC136" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-asynchronous-ledger-demo-sql-LC137" class="blob-code blob-code-inner js-file-line">RestartPoint:</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-asynchronous-ledger-demo-sql-LC138" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-asynchronous-ledger-demo-sql-LC139" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">*</span> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Staging</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-asynchronous-ledger-demo-sql-LC140" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-asynchronous-ledger-demo-sql-LC141" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @PreexistingData <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-asynchronous-ledger-demo-sql-LC142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GOTO</span> AggregateMerge;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-asynchronous-ledger-demo-sql-LC143" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-asynchronous-ledger-demo-sql-LC144" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-asynchronous-ledger-demo-sql-LC145" class="blob-code blob-code-inner js-file-line">TruncateAndSwitch:</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-asynchronous-ledger-demo-sql-LC146" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-asynchronous-ledger-demo-sql-LC147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">TRUNCATE</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Staging</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-asynchronous-ledger-demo-sql-LC148" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Buffer</span> SWITCH <span class="pl-k">TO</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Staging</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-asynchronous-ledger-demo-sql-LC149" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-asynchronous-ledger-demo-sql-LC150" class="blob-code blob-code-inner js-file-line">AggregateMerge:</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-asynchronous-ledger-demo-sql-LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> @RCount <span class="pl-k">int</span>, @DateString <span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>);</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-asynchronous-ledger-demo-sql-LC152" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-asynchronous-ledger-demo-sql-LC153" class="blob-code blob-code-inner js-file-line"> ; <span class="pl-k">WITH</span> Trgt</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-asynchronous-ledger-demo-sql-LC154" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-asynchronous-ledger-demo-sql-LC155" class="blob-code blob-code-inner js-file-line"> (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-asynchronous-ledger-demo-sql-LC156" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">*</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-asynchronous-ledger-demo-sql-LC157" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable</span> <span class="pl-k">AS</span> prod <span class="pl-k">WITH</span>(<span class="pl-k">UPDLOCK</span>, HOLDLOCK)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-asynchronous-ledger-demo-sql-LC158" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-k">EXISTS</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-asynchronous-ledger-demo-sql-LC159" class="blob-code blob-code-inner js-file-line"> (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-asynchronous-ledger-demo-sql-LC160" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-asynchronous-ledger-demo-sql-LC161" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> MyHotTable_Staging <span class="pl-k">AS</span> stg</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-asynchronous-ledger-demo-sql-LC162" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-c1">stg</span>.<span class="pl-c1">SomeIdentifier</span> <span class="pl-k">=</span> <span class="pl-c1">prod</span>.<span class="pl-c1">SomeIdentifier</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td> <td id="file-asynchronous-ledger-demo-sql-LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">stg</span>.<span class="pl-c1">SomeOtherIdentifier</span> <span class="pl-k">=</span> <span class="pl-c1">prod</span>.<span class="pl-c1">SomeOtherIdentifier</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td> <td id="file-asynchronous-ledger-demo-sql-LC164" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td> <td id="file-asynchronous-ledger-demo-sql-LC165" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td> <td id="file-asynchronous-ledger-demo-sql-LC166" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">MERGE</span> <span class="pl-k">INTO</span> Trgt</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td> <td id="file-asynchronous-ledger-demo-sql-LC167" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">USING</span> (</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td> <td id="file-asynchronous-ledger-demo-sql-LC168" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> SomeIdentifier, SomeOtherIdentifier, <span class="pl-c1">SUM</span>(SomeCounter) <span class="pl-k">AS</span> SomeCounter</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td> <td id="file-asynchronous-ledger-demo-sql-LC169" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> MyHotTable_Staging </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td> <td id="file-asynchronous-ledger-demo-sql-LC170" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GROUP BY</span> SomeIdentifier, SomeOtherIdentifier</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td> <td id="file-asynchronous-ledger-demo-sql-LC171" class="blob-code blob-code-inner js-file-line"> ) <span class="pl-k">AS</span> Src</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td> <td id="file-asynchronous-ledger-demo-sql-LC172" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ON</span> <span class="pl-c1">Src</span>.<span class="pl-c1">SomeIdentifier</span> <span class="pl-k">=</span> <span class="pl-c1">Trgt</span>.<span class="pl-c1">SomeIdentifier</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td> <td id="file-asynchronous-ledger-demo-sql-LC173" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">Src</span>.<span class="pl-c1">SomeOtherIdentifier</span> <span class="pl-k">=</span> <span class="pl-c1">Trgt</span>.<span class="pl-c1">SomeOtherIdentifier</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td> <td id="file-asynchronous-ledger-demo-sql-LC174" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-k">MATCHED</span> <span class="pl-k">THEN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td> <td id="file-asynchronous-ledger-demo-sql-LC175" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UPDATE</span> <span class="pl-k">SET</span> SomeCounter <span class="pl-k">=</span> <span class="pl-c1">Trgt</span>.<span class="pl-c1">SomeCounter</span> <span class="pl-k">+</span> <span class="pl-c1">Src</span>.<span class="pl-c1">SomeCounter</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td> <td id="file-asynchronous-ledger-demo-sql-LC176" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHEN</span> <span class="pl-k">NOT</span> <span class="pl-k">MATCHED</span> <span class="pl-k">BY</span> <span class="pl-k">TARGET</span> <span class="pl-k">THEN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td> <td id="file-asynchronous-ledger-demo-sql-LC177" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> (SomeIdentifier, SomeOtherIdentifier, SomeText, SomeOtherText, SomeCounter)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td> <td id="file-asynchronous-ledger-demo-sql-LC178" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">VALUES</span> (<span class="pl-c1">Src</span>.<span class="pl-c1">SomeIdentifier</span>, <span class="pl-c1">Src</span>.<span class="pl-c1">SomeOtherIdentifier</span>, <span class="pl-c1">NEWID</span>(), <span class="pl-c1">NEWID</span>(), <span class="pl-c1">Src</span>.<span class="pl-c1">SomeCounter</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td> <td id="file-asynchronous-ledger-demo-sql-LC179" class="blob-code blob-code-inner js-file-line"> ;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td> <td id="file-asynchronous-ledger-demo-sql-LC180" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td> <td id="file-asynchronous-ledger-demo-sql-LC181" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @RCount <span class="pl-k">=</span> <span class="pl-c1">@@ROWCOUNT</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td> <td id="file-asynchronous-ledger-demo-sql-LC182" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @DateString <span class="pl-k">=</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), <span class="pl-c1">GETDATE</span>(), <span class="pl-c1">121</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td> <td id="file-asynchronous-ledger-demo-sql-LC183" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td> <td id="file-asynchronous-ledger-demo-sql-LC184" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @RCount <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%s - Loaded %d row(s)&#39;</span>,<span class="pl-c1">0</span>,<span class="pl-c1">1</span>,@DateString,@RCount) <span class="pl-k">WITH</span> <span class="pl-k">NOWAIT</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td> <td id="file-asynchronous-ledger-demo-sql-LC185" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td> <td id="file-asynchronous-ledger-demo-sql-LC186" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">TRUNCATE</span> <span class="pl-k">TABLE</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Staging</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td> <td id="file-asynchronous-ledger-demo-sql-LC187" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td> <td id="file-asynchronous-ledger-demo-sql-LC188" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @PreexistingData <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td> <td id="file-asynchronous-ledger-demo-sql-LC189" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td> <td id="file-asynchronous-ledger-demo-sql-LC190" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @PreexistingData <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td> <td id="file-asynchronous-ledger-demo-sql-LC191" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GOTO</span> RestartPoint;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td> <td id="file-asynchronous-ledger-demo-sql-LC192" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td> <td id="file-asynchronous-ledger-demo-sql-LC193" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td> <td id="file-asynchronous-ledger-demo-sql-LC194" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Check for new data</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td> <td id="file-asynchronous-ledger-demo-sql-LC195" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> <span class="pl-c1">1</span> <span class="pl-c1">1</span> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Buffer</span> <span class="pl-k">WITH</span>(<span class="pl-k">READPAST</span>))</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td> <td id="file-asynchronous-ledger-demo-sql-LC196" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td> <td id="file-asynchronous-ledger-demo-sql-LC197" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GOTO</span> RestartPoint;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td> <td id="file-asynchronous-ledger-demo-sql-LC198" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td> <td id="file-asynchronous-ledger-demo-sql-LC199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @DelayBeforeRepeat <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td> <td id="file-asynchronous-ledger-demo-sql-LC200" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td> <td id="file-asynchronous-ledger-demo-sql-LC201" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WAITFOR</span> <span class="pl-k">DELAY</span> @DelayBeforeRepeat;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td> <td id="file-asynchronous-ledger-demo-sql-LC202" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td> <td id="file-asynchronous-ledger-demo-sql-LC203" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> <span class="pl-c1">1</span> <span class="pl-c1">1</span> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">MyHotTable_Buffer</span> <span class="pl-k">WITH</span>(<span class="pl-k">READPAST</span>))</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td> <td id="file-asynchronous-ledger-demo-sql-LC204" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td> <td id="file-asynchronous-ledger-demo-sql-LC205" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GOTO</span> RestartPoint;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td> <td id="file-asynchronous-ledger-demo-sql-LC206" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td> <td id="file-asynchronous-ledger-demo-sql-LC207" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td> <td id="file-asynchronous-ledger-demo-sql-LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td> <td id="file-asynchronous-ledger-demo-sql-LC209" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td> <td id="file-asynchronous-ledger-demo-sql-LC210" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td> <td id="file-asynchronous-ledger-demo-sql-LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">XACT_ABORT</span>, <span class="pl-k">ARITHABORT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td> <td id="file-asynchronous-ledger-demo-sql-LC212" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td> <td id="file-asynchronous-ledger-demo-sql-LC213" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">*</span> <span class="pl-k">FROM</span> msdb..sysjobs <span class="pl-k">WHERE</span> <span class="pl-k">name</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>MyHotTable_AsyncInsert&#39;</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td> <td id="file-asynchronous-ledger-demo-sql-LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td> <td id="file-asynchronous-ledger-demo-sql-LC215" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td> <td id="file-asynchronous-ledger-demo-sql-LC216" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span> <span class="pl-k">TRANSACTION</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td> <td id="file-asynchronous-ledger-demo-sql-LC217" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> @ReturnCode <span class="pl-k">INT</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td> <td id="file-asynchronous-ledger-demo-sql-LC218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td> <td id="file-asynchronous-ledger-demo-sql-LC219" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">name</span> <span class="pl-k">FROM</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.syscategories <span class="pl-k">WHERE</span> <span class="pl-k">name</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>[Uncategorized (Local)]&#39;</span> <span class="pl-k">AND</span> category_class<span class="pl-k">=</span><span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td> <td id="file-asynchronous-ledger-demo-sql-LC220" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td> <td id="file-asynchronous-ledger-demo-sql-LC221" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_add_category @class<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>JOB&#39;</span>, @type<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LOCAL&#39;</span>, @name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>[Uncategorized (Local)]&#39;</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td> <td id="file-asynchronous-ledger-demo-sql-LC222" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td> <td id="file-asynchronous-ledger-demo-sql-LC223" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td> <td id="file-asynchronous-ledger-demo-sql-LC224" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td> <td id="file-asynchronous-ledger-demo-sql-LC225" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> @jobId <span class="pl-k">BINARY</span>(<span class="pl-c1">16</span>)</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td> <td id="file-asynchronous-ledger-demo-sql-LC226" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_add_job @job_name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>MyHotTable_AsyncInsert&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td> <td id="file-asynchronous-ledger-demo-sql-LC227" class="blob-code blob-code-inner js-file-line"> @enabled<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td> <td id="file-asynchronous-ledger-demo-sql-LC228" class="blob-code blob-code-inner js-file-line"> @notify_level_eventlog<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td> <td id="file-asynchronous-ledger-demo-sql-LC229" class="blob-code blob-code-inner js-file-line"> @notify_level_email<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td> <td id="file-asynchronous-ledger-demo-sql-LC230" class="blob-code blob-code-inner js-file-line"> @notify_level_netsend<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td> <td id="file-asynchronous-ledger-demo-sql-LC231" class="blob-code blob-code-inner js-file-line"> @notify_level_page<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td> <td id="file-asynchronous-ledger-demo-sql-LC232" class="blob-code blob-code-inner js-file-line"> @delete_level<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td> <td id="file-asynchronous-ledger-demo-sql-LC233" class="blob-code blob-code-inner js-file-line"> @description<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>No description available.&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td> <td id="file-asynchronous-ledger-demo-sql-LC234" class="blob-code blob-code-inner js-file-line"> @category_name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>[Uncategorized (Local)]&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td> <td id="file-asynchronous-ledger-demo-sql-LC235" class="blob-code blob-code-inner js-file-line"> @owner_login_name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>sa&#39;</span>, @job_id <span class="pl-k">=</span> @jobId <span class="pl-k">OUTPUT</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td> <td id="file-asynchronous-ledger-demo-sql-LC236" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td> <td id="file-asynchronous-ledger-demo-sql-LC237" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_add_jobstep @job_id<span class="pl-k">=</span>@jobId, @step_name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>MyHotTable_AsyncInsert&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td> <td id="file-asynchronous-ledger-demo-sql-LC238" class="blob-code blob-code-inner js-file-line"> @step_id<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td> <td id="file-asynchronous-ledger-demo-sql-LC239" class="blob-code blob-code-inner js-file-line"> @cmdexec_success_code<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td> <td id="file-asynchronous-ledger-demo-sql-LC240" class="blob-code blob-code-inner js-file-line"> @on_success_action<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td> <td id="file-asynchronous-ledger-demo-sql-LC241" class="blob-code blob-code-inner js-file-line"> @on_success_step_id<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td> <td id="file-asynchronous-ledger-demo-sql-LC242" class="blob-code blob-code-inner js-file-line"> @on_fail_action<span class="pl-k">=</span><span class="pl-c1">2</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td> <td id="file-asynchronous-ledger-demo-sql-LC243" class="blob-code blob-code-inner js-file-line"> @on_fail_step_id<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td> <td id="file-asynchronous-ledger-demo-sql-LC244" class="blob-code blob-code-inner js-file-line"> @retry_attempts<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td> <td id="file-asynchronous-ledger-demo-sql-LC245" class="blob-code blob-code-inner js-file-line"> @retry_interval<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td> <td id="file-asynchronous-ledger-demo-sql-LC246" class="blob-code blob-code-inner js-file-line"> @os_run_priority<span class="pl-k">=</span><span class="pl-c1">0</span>, @subsystem<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>TSQL&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td> <td id="file-asynchronous-ledger-demo-sql-LC247" class="blob-code blob-code-inner js-file-line"> @command<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>EXEC [dbo].[sp_MyHotTable_AsyncInsert]&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td> <td id="file-asynchronous-ledger-demo-sql-LC248" class="blob-code blob-code-inner js-file-line"> @database_name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>MyDB&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td> <td id="file-asynchronous-ledger-demo-sql-LC249" class="blob-code blob-code-inner js-file-line"> @flags<span class="pl-k">=</span><span class="pl-c1">4</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td> <td id="file-asynchronous-ledger-demo-sql-LC250" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td> <td id="file-asynchronous-ledger-demo-sql-LC251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_update_job @job_id <span class="pl-k">=</span> @jobId, @start_step_id <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td> <td id="file-asynchronous-ledger-demo-sql-LC252" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td> <td id="file-asynchronous-ledger-demo-sql-LC253" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_add_jobschedule @job_id<span class="pl-k">=</span>@jobId, @name<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Every 1 minute&#39;</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td> <td id="file-asynchronous-ledger-demo-sql-LC254" class="blob-code blob-code-inner js-file-line"> @enabled<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td> <td id="file-asynchronous-ledger-demo-sql-LC255" class="blob-code blob-code-inner js-file-line"> @freq_type<span class="pl-k">=</span><span class="pl-c1">4</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td> <td id="file-asynchronous-ledger-demo-sql-LC256" class="blob-code blob-code-inner js-file-line"> @freq_interval<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td> <td id="file-asynchronous-ledger-demo-sql-LC257" class="blob-code blob-code-inner js-file-line"> @freq_subday_type<span class="pl-k">=</span><span class="pl-c1">4</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td> <td id="file-asynchronous-ledger-demo-sql-LC258" class="blob-code blob-code-inner js-file-line"> @freq_subday_interval<span class="pl-k">=</span><span class="pl-c1">1</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td> <td id="file-asynchronous-ledger-demo-sql-LC259" class="blob-code blob-code-inner js-file-line"> @freq_relative_interval<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td> <td id="file-asynchronous-ledger-demo-sql-LC260" class="blob-code blob-code-inner js-file-line"> @freq_recurrence_factor<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td> <td id="file-asynchronous-ledger-demo-sql-LC261" class="blob-code blob-code-inner js-file-line"> @active_start_date<span class="pl-k">=</span><span class="pl-c1">20210615</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td> <td id="file-asynchronous-ledger-demo-sql-LC262" class="blob-code blob-code-inner js-file-line"> @active_end_date<span class="pl-k">=</span><span class="pl-c1">99991231</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td> <td id="file-asynchronous-ledger-demo-sql-LC263" class="blob-code blob-code-inner js-file-line"> @active_start_time<span class="pl-k">=</span><span class="pl-c1">0</span>, </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td> <td id="file-asynchronous-ledger-demo-sql-LC264" class="blob-code blob-code-inner js-file-line"> @active_end_time<span class="pl-k">=</span><span class="pl-c1">235959</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td> <td id="file-asynchronous-ledger-demo-sql-LC265" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td> <td id="file-asynchronous-ledger-demo-sql-LC266" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @ReturnCode <span class="pl-k">=</span> <span class="pl-c1">msdb</span>.<span class="pl-c1">dbo</span>.sp_add_jobserver @job_id <span class="pl-k">=</span> @jobId, @server_name <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>(local)&#39;</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td> <td id="file-asynchronous-ledger-demo-sql-LC267" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@ERROR</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> @ReturnCode <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">GOTO</span> QuitWithRollback</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td> <td id="file-asynchronous-ledger-demo-sql-LC268" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">COMMIT</span> <span class="pl-k">TRANSACTION</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td> <td id="file-asynchronous-ledger-demo-sql-LC269" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">GOTO</span> EndSave</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td> <td id="file-asynchronous-ledger-demo-sql-LC270" class="blob-code blob-code-inner js-file-line"> QuitWithRollback:</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td> <td id="file-asynchronous-ledger-demo-sql-LC271" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@TRANCOUNT</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span>) <span class="pl-k">ROLLBACK</span> <span class="pl-k">TRANSACTION</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td> <td id="file-asynchronous-ledger-demo-sql-LC272" class="blob-code blob-code-inner js-file-line"> EndSave:</td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td> <td id="file-asynchronous-ledger-demo-sql-LC273" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td> <td id="file-asynchronous-ledger-demo-sql-LC274" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-asynchronous-ledger-demo-sql-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td> <td id="file-asynchronous-ledger-demo-sql-LC275" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/919ac3368a8e3eaec0e3ec1af0f0f106 2021-06-14T07:29:55Z 2022-03-20T17:20:19Z Use Extended Properties as Database Global Variables Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/919ac3368a8e3eaec0e3ec1af0f0f106#file-extended-properties-as-database-global-variables-sql">Extended Properties as Database Global Variables.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-extended-properties-as-database-global-variables-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Extended Properties as Database Global Variables.sql content, created by EitanBlumin on 07:29AM on June 14, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Extended Properties as Database Global Variables.sql"> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">================================================</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Extended Properties as Database Global Variables</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">================================================</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin | https://madeiradata.com | https://eitanblumin.com</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Date: 2021-06-04</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Description:</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Use this sample script as a template or starting point</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> for when you want to utilize extended properties</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> to save and retrieve values as if using &quot;global&quot; variables</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> at the database level.</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @PreviousValue <span class="pl-k">datetime</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC14" class="blob-code blob-code-inner js-file-line"> , @NewValue <span class="pl-k">datetime</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC15" class="blob-code blob-code-inner js-file-line"> , @ExtendedPropertyName <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>My_Database_Global_Var&#39;</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC16" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Retrieve a value: (don&#39;t forget to convert to the correct data type)</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @PreviousValue <span class="pl-k">=</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">datetime</span>, [value])</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> [name] <span class="pl-k">=</span> @ExtendedPropertyName</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> TODO: do something here with @PreviousValue and @NewValue <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC23" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Save a value:</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC26" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC27" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> <span class="pl-k">*</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC28" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">extended_properties</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC29" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> [name] <span class="pl-k">=</span> @ExtendedPropertyName</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC30" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC32" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_addextendedproperty @name <span class="pl-k">=</span> @ExtendedPropertyName, @value <span class="pl-k">=</span> @NewValue; </td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC36" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_updateextendedproperty @name <span class="pl-k">=</span> @ExtendedPropertyName, @value <span class="pl-k">=</span> @NewValue;</td> </tr> <tr> <td id="file-extended-properties-as-database-global-variables-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-extended-properties-as-database-global-variables-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/1f19b0b3f59a9220641c559653b90f15 2021-05-05T19:36:20Z 2025-12-16T11:38:27Z sp_help_revlogin2 is a simpler alternative to sp_help_revlogin Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/1f19b0b3f59a9220641c559653b90f15#file-sp_help_revlogin2-sql">sp_help_revlogin2.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sp_help_revlogin2-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="sp_help_revlogin2.sql content, created by EitanBlumin on 07:36PM on May 05, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="sp_help_revlogin2.sql"> <tr> <td id="file-sp_help_revlogin2-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sp_help_revlogin2-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..#sp_help_revlogin2&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">PROCEDURE</span> #sp_help_revlogin2</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sp_help_revlogin2-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sp_help_revlogin2-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>********************************************************************************************</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sp_help_revlogin2-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">sp_help_revlogin2 V1.2</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sp_help_revlogin2-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Eitan Blumin</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sp_help_revlogin2-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sp_help_revlogin2-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://eitanblumin.com | https://madeiradata.com</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sp_help_revlogin2-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://gist.github.com/EitanBlumin/1f19b0b3f59a9220641c559653b90f15</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sp_help_revlogin2-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://github.com/MadeiraData/MadeiraToolbox/blob/master/Utility%20Scripts/sp_help_revlogin2.sql</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sp_help_revlogin2-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://eitanblumin.com/2021/05/11/t-sql-tuesday-138-sp_help_revlogin-is-dead-long-live-sp_help_revlogin2/</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sp_help_revlogin2-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sp_help_revlogin2-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This is a simpler alternative to sp_help_revlogin.</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sp_help_revlogin2-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sp_help_revlogin2-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Standard disclaimer: You use scripts off of the web at your own risk. I fully expect this</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sp_help_revlogin2-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> script to work without issue but I&#39;ve been known to be wrong before.</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sp_help_revlogin2-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sp_help_revlogin2-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Parameters:</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sp_help_revlogin2-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @login_name</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sp_help_revlogin2-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Optionally filter for a specific login name. Defaults to NULL (all logins).</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sp_help_revlogin2-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sp_help_revlogin2-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @include_system_logins</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sp_help_revlogin2-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If set to 1, will output system principals such as sa, NT SERVICE accounts, and ##... accounts.</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sp_help_revlogin2-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sp_help_revlogin2-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @command_separator</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sp_help_revlogin2-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> By default equals to &#39;GO&#39;. Will be used as a separator between each CREATE LOGIN command.</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sp_help_revlogin2-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*********************************************************************************************</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sp_help_revlogin2-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V1.2</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sp_help_revlogin2-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 14/12/2021 - added support for Azure SQL DB</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sp_help_revlogin2-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sp_help_revlogin2-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V1.1</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sp_help_revlogin2-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 23/06/2021 - added new optional parameter @login_name</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sp_help_revlogin2-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sp_help_revlogin2-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V1.0</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sp_help_revlogin2-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 05/05/2021</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sp_help_revlogin2-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-c">********************************************************************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sp_help_revlogin2-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> #sp_help_revlogin2</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sp_help_revlogin2-sql-LC37" class="blob-code blob-code-inner js-file-line"> @login_name <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sp_help_revlogin2-sql-LC38" class="blob-code blob-code-inner js-file-line"> @include_system_logins <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sp_help_revlogin2-sql-LC39" class="blob-code blob-code-inner js-file-line"> @command_separator <span class="pl-k">nvarchar</span>(<span class="pl-c1">1000</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>GO&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sp_help_revlogin2-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sp_help_revlogin2-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span>, <span class="pl-k">ARITHABORT</span>, <span class="pl-k">XACT_ABORT</span>, <span class="pl-k">QUOTED_IDENTIFIER</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sp_help_revlogin2-sql-LC42" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sp_help_revlogin2-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Output <span class="pl-k">AS</span> <span class="pl-k">TABLE</span> (Content <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>));</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sp_help_revlogin2-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-sp_help_revlogin2-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-s">/***************************************************/</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-sp_help_revlogin2-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-s">/*** sp_help_revlogin2 output ***/</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-sp_help_revlogin2-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-s">/***************************************************/</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-sp_help_revlogin2-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-s">-- Generated on: <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">25</span>), <span class="pl-c1">GETDATE</span>(),<span class="pl-c1">121</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-sp_help_revlogin2-sql-LC49" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-sp_help_revlogin2-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">int</span>, <span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>EngineEdition&#39;</span>)) <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">5</span> <span class="pl-k">AND</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>sys.server_principals&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-sp_help_revlogin2-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-sp_help_revlogin2-sql-LC52" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Generating from: sys.server_principals&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-sp_help_revlogin2-sql-LC53" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-sp_help_revlogin2-sql-LC54" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @Output</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-sp_help_revlogin2-sql-LC55" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-sp_help_revlogin2-sql-LC56" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Login: &#39;</span> <span class="pl-k">+</span> [name] <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-sp_help_revlogin2-sql-LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-sp_help_revlogin2-sql-LC58" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> FROM WINDOWS WITH DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(default_database_name, <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-sp_help_revlogin2-sql-LC59" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> WITH PASSWORD = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), <span class="pl-c1">CAST</span>( LOGINPROPERTY( login_name, <span class="pl-s"><span class="pl-pds">&#39;</span>PasswordHash&#39;</span> ) <span class="pl-k">AS</span> <span class="pl-k">varbinary</span> (<span class="pl-c1">max</span>)), <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-sp_help_revlogin2-sql-LC60" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> HASHED, SID = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), [sid], <span class="pl-c1">1</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(default_database_name, <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-sp_help_revlogin2-sql-LC61" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-sp_help_revlogin2-sql-LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">CAST</span>(LOGINPROPERTY( login_name, <span class="pl-s"><span class="pl-pds">&#39;</span>HistoryLength&#39;</span> ) <span class="pl-k">AS</span> <span class="pl-k">int</span>) <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_POLICY = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-sp_help_revlogin2-sql-LC63" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> LOGINPROPERTY( login_name, <span class="pl-s"><span class="pl-pds">&#39;</span>DaysUntilExpiration&#39;</span> ) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_EXPIRATION = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-sp_help_revlogin2-sql-LC64" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-sp_help_revlogin2-sql-LC65" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">dp</span>.<span class="pl-c1">is_disabled</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> DISABLE;&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-sp_help_revlogin2-sql-LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">server_principals</span> <span class="pl-k">AS</span> dp</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-sp_help_revlogin2-sql-LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CROSS</span> <span class="pl-k">APPLY</span> ( <span class="pl-k">SELECT</span> [name] <span class="pl-k">AS</span> login_name ) <span class="pl-k">AS</span> l</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-sp_help_revlogin2-sql-LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> [sid] <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-sp_help_revlogin2-sql-LC69" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>S&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-sp_help_revlogin2-sql-LC70" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (@login_name <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> @login_name <span class="pl-k">=</span> <span class="pl-c1">l</span>.<span class="pl-c1">login_name</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-sp_help_revlogin2-sql-LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-sp_help_revlogin2-sql-LC72" class="blob-code blob-code-inner js-file-line"> @include_system_logins <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-sp_help_revlogin2-sql-LC73" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OR</span> ([sid] <span class="pl-k">NOT</span> <span class="pl-k">IN</span> (0x00, 0x01) <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>##%##&#39;</span> <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>NT SERVICE\%&#39;</span> <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>NT AUTHORITY\%&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-sp_help_revlogin2-sql-LC74" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-sp_help_revlogin2-sql-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-sp_help_revlogin2-sql-LC76" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-sp_help_revlogin2-sql-LC77" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-sp_help_revlogin2-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>sys.sql_logins&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">AND</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">int</span>, <span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>EngineEdition&#39;</span>)) <span class="pl-k">=</span> <span class="pl-c1">5</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-sp_help_revlogin2-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-sp_help_revlogin2-sql-LC80" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Generating from: sys.sql_logins&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-sp_help_revlogin2-sql-LC81" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-sp_help_revlogin2-sql-LC82" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @Output</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-sp_help_revlogin2-sql-LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-sp_help_revlogin2-sql-LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Login: &#39;</span> <span class="pl-k">+</span> [name] <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-sp_help_revlogin2-sql-LC85" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-sp_help_revlogin2-sql-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> FROM WINDOWS WITH DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(default_database_name, <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-sp_help_revlogin2-sql-LC87" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> WITH PASSWORD = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), <span class="pl-c1">dp</span>.<span class="pl-c1">password_hash</span>, <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-sp_help_revlogin2-sql-LC88" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> HASHED, SID = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), [sid], <span class="pl-c1">1</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(default_database_name, <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-sp_help_revlogin2-sql-LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-sp_help_revlogin2-sql-LC90" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">CAST</span>(LOGINPROPERTY( login_name, <span class="pl-s"><span class="pl-pds">&#39;</span>HistoryLength&#39;</span> ) <span class="pl-k">AS</span> <span class="pl-k">int</span>) <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_POLICY = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-sp_help_revlogin2-sql-LC91" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> LOGINPROPERTY( login_name, <span class="pl-s"><span class="pl-pds">&#39;</span>DaysUntilExpiration&#39;</span> ) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_EXPIRATION = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-sp_help_revlogin2-sql-LC92" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-sp_help_revlogin2-sql-LC93" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">dp</span>.<span class="pl-c1">is_disabled</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>ALTER LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( login_name ) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> DISABLE;&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-sp_help_revlogin2-sql-LC94" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">sql_logins</span> <span class="pl-k">AS</span> dp</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-sp_help_revlogin2-sql-LC95" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CROSS</span> <span class="pl-k">APPLY</span> ( <span class="pl-k">SELECT</span> [name] <span class="pl-k">AS</span> login_name ) <span class="pl-k">AS</span> l</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-sp_help_revlogin2-sql-LC96" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> [sid] <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-sp_help_revlogin2-sql-LC97" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>S&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-sp_help_revlogin2-sql-LC98" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (@login_name <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> @login_name <span class="pl-k">=</span> <span class="pl-c1">l</span>.<span class="pl-c1">login_name</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-sp_help_revlogin2-sql-LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-sp_help_revlogin2-sql-LC100" class="blob-code blob-code-inner js-file-line"> @include_system_logins <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-sp_help_revlogin2-sql-LC101" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OR</span> ([sid] <span class="pl-k">NOT</span> <span class="pl-k">IN</span> (0x00, 0x01) <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>##%##&#39;</span> <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>NT SERVICE\%&#39;</span> <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>NT AUTHORITY\%&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-sp_help_revlogin2-sql-LC102" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-sp_help_revlogin2-sql-LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-sp_help_revlogin2-sql-LC104" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span> <span class="pl-k">IF</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">int</span>, <span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>EngineEdition&#39;</span>)) <span class="pl-k">=</span> <span class="pl-c1">5</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-sp_help_revlogin2-sql-LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-sp_help_revlogin2-sql-LC106" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>This script does not support Azure SQL User Databases. You must run this from the &quot;master&quot; database.&#39;</span>,<span class="pl-c1">16</span>,<span class="pl-c1">1</span>);</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-sp_help_revlogin2-sql-LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-sp_help_revlogin2-sql-LC108" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-sp_help_revlogin2-sql-LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">int</span>, <span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>EngineEdition&#39;</span>)) <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">5</span> <span class="pl-k">AND</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-k">NULL</span> <span class="pl-k">FROM</span> @Output)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-sp_help_revlogin2-sql-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-sp_help_revlogin2-sql-LC111" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Generating from: sys.database_principals&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-sp_help_revlogin2-sql-LC112" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-sp_help_revlogin2-sql-LC113" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @Output </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-sp_help_revlogin2-sql-LC114" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-sp_help_revlogin2-sql-LC115" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Login: &#39;</span> <span class="pl-k">+</span> [name] <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-sp_help_revlogin2-sql-LC116" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-sp_help_revlogin2-sql-LC117" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( [name] ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> FROM WINDOWS WITH DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(<span class="pl-c1">CONVERT</span>(<span class="pl-k">sysname</span>, LOGINPROPERTY( [name], <span class="pl-s"><span class="pl-pds">&#39;</span>DefaultDatabase&#39;</span>)), <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-sp_help_revlogin2-sql-LC118" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>CREATE LOGIN &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( [name] ) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> WITH PASSWORD = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), <span class="pl-c1">CAST</span>( LOGINPROPERTY( [name], <span class="pl-s"><span class="pl-pds">&#39;</span>PasswordHash&#39;</span> ) <span class="pl-k">AS</span> <span class="pl-k">varbinary</span> (<span class="pl-c1">max</span>)), <span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-sp_help_revlogin2-sql-LC119" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> HASHED, SID = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>), [sid], <span class="pl-c1">1</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, DEFAULT_DATABASE = &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>( <span class="pl-c1">ISNULL</span>(<span class="pl-c1">CONVERT</span>(<span class="pl-k">sysname</span>, LOGINPROPERTY( [name], <span class="pl-s"><span class="pl-pds">&#39;</span>DefaultDatabase&#39;</span>)), <span class="pl-c1">DB_NAME</span>()) )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-sp_help_revlogin2-sql-LC120" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-sp_help_revlogin2-sql-LC121" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">CAST</span>(LOGINPROPERTY( [name], <span class="pl-s"><span class="pl-pds">&#39;</span>HistoryLength&#39;</span> ) <span class="pl-k">AS</span> <span class="pl-k">int</span>) <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_POLICY = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-sp_help_revlogin2-sql-LC122" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> LOGINPROPERTY( [name], <span class="pl-s"><span class="pl-pds">&#39;</span>DaysUntilExpiration&#39;</span> ) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>, CHECK_EXPIRATION = ON&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-sp_help_revlogin2-sql-LC123" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-sp_help_revlogin2-sql-LC124" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span>, UserCreateScript = N&#39;CREATE USER &#39; + QUOTENAME([name]) + N&#39; FOR LOGIN &#39; + QUOTENAME( [name] ) + N&#39;;&#39;</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-sp_help_revlogin2-sql-LC125" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">database_principals</span> <span class="pl-k">AS</span> dp</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-sp_help_revlogin2-sql-LC126" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> [sid] <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-sp_help_revlogin2-sql-LC127" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-k">type</span> <span class="pl-k">IN</span> ( <span class="pl-s"><span class="pl-pds">&#39;</span>S&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>G&#39;</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>U&#39;</span> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-sp_help_revlogin2-sql-LC128" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (@login_name <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> @login_name <span class="pl-k">=</span> [name])</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-sp_help_revlogin2-sql-LC129" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> (</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-sp_help_revlogin2-sql-LC130" class="blob-code blob-code-inner js-file-line"> @include_system_logins <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-sp_help_revlogin2-sql-LC131" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OR</span> ([sid] <span class="pl-k">NOT</span> <span class="pl-k">IN</span> (0x00, 0x01) <span class="pl-k">AND</span> [name] <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>##%##&#39;</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-sp_help_revlogin2-sql-LC132" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-sp_help_revlogin2-sql-LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-sp_help_revlogin2-sql-LC134" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-sp_help_revlogin2-sql-LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Content <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>)</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-sp_help_revlogin2-sql-LC136" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-sp_help_revlogin2-sql-LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> Outputs <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-sp_help_revlogin2-sql-LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-sp_help_revlogin2-sql-LC139" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-sp_help_revlogin2-sql-LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> Content <span class="pl-k">FROM</span> @Output</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-sp_help_revlogin2-sql-LC141" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-sp_help_revlogin2-sql-LC142" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> Outputs</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-sp_help_revlogin2-sql-LC143" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-sp_help_revlogin2-sql-LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-sp_help_revlogin2-sql-LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-sp_help_revlogin2-sql-LC146" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> Outputs <span class="pl-k">INTO</span> @Content;</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-sp_help_revlogin2-sql-LC147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-sp_help_revlogin2-sql-LC148" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-sp_help_revlogin2-sql-LC149" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-sp_help_revlogin2-sql-LC150" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">ISNULL</span>(@command_separator, <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>))</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-sp_help_revlogin2-sql-LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> @Content;</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-sp_help_revlogin2-sql-LC152" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-sp_help_revlogin2-sql-LC153" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-sp_help_revlogin2-sql-LC154" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> Outputs</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-sp_help_revlogin2-sql-LC155" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> Outputs</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-sp_help_revlogin2-sql-LC156" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-sp_help_revlogin2-sql-LC157" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> <span class="pl-c1">ISNULL</span>(@command_separator, <span class="pl-k">CHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">CHAR</span>(<span class="pl-c1">10</span>))</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-sp_help_revlogin2-sql-LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-sp_help_revlogin2-sql-LC159" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-sp_help_revlogin2-sql-LC160" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-sp_help_revlogin2-sql-LC161" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> #sp_help_revlogin2</td> </tr> <tr> <td id="file-sp_help_revlogin2-sql-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-sp_help_revlogin2-sql-LC162" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> @include_system_logins = 1</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/916b1845c573a782f9efd3f2f2282545 2021-02-18T19:31:11Z 2021-08-20T17:51:02Z sp_DBPermissions Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/916b1845c573a782f9efd3f2f2282545#file-sp_dbpermissions-sql">sp_DBPermissions.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sp_dbpermissions-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="sp_DBPermissions.sql content, created by EitanBlumin on 07:31PM on February 18, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="sp_DBPermissions.sql"> <tr> <td id="file-sp_dbpermissions-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sp_dbpermissions-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..#sp_DBPermissions&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">PROCEDURE</span> #sp_DBPermissions</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sp_dbpermissions-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sp_dbpermissions-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>********************************************************************************************</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sp_dbpermissions-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">sp_DBPermissions V6.1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sp_dbpermissions-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Kenneth Fisher</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sp_dbpermissions-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sp_dbpermissions-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">http://www.sqlstudies.com</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sp_dbpermissions-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://github.com/sqlstudent144/SQL-Server-Scripts/blob/master/sp_DBPermissions.sql</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sp_dbpermissions-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sp_dbpermissions-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This stored procedure returns 3 data sets. The first dataset is the list of database</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sp_dbpermissions-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c">principals, the second is role membership, and the third is object and database level</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sp_dbpermissions-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c">permissions.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sp_dbpermissions-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sp_dbpermissions-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">The final 2 columns of each query are &quot;Un-Do&quot;/&quot;Do&quot; scripts. For example removing a member</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sp_dbpermissions-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c">from a role or adding them to a role. I am fairly confident in the role scripts, however, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sp_dbpermissions-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c">the scripts in the database principals query and database/object permissions query are </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sp_dbpermissions-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">works in progress. In particular certificates, keys and column level permissions are not</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sp_dbpermissions-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c">scripted out. Also while the scripts have worked flawlessly on the systems I&#39;ve tested </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sp_dbpermissions-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c">them on, these systems are fairly similar when it comes to security so I can&#39;t say that </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sp_dbpermissions-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c">in a more complicated system there won&#39;t be the odd bug.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sp_dbpermissions-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sp_dbpermissions-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Standard disclaimer: You use scripts off of the web at your own risk. I fully expect this</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sp_dbpermissions-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> script to work without issue but I&#39;ve been known to be wrong before.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sp_dbpermissions-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sp_dbpermissions-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Parameters:</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sp_dbpermissions-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @DBName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sp_dbpermissions-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NULL use the current database, otherwise give permissions based on the parameter.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sp_dbpermissions-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sp_dbpermissions-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> There is a special case where you pass in ALL to the @DBName. In this case the SP</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sp_dbpermissions-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> will loop through (yes I&#39;m using a cursor) all of the DBs in sysdatabases and run</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sp_dbpermissions-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> the queries into temp tables before returning the results. WARNINGS: If you use</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sp_dbpermissions-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> this option and have a large number of databases it will be SLOW. If you use this</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sp_dbpermissions-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> option and don&#39;t specify any other parameters (say a specific @Principal) and have</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sp_dbpermissions-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> even a medium number of databases it will be SLOW. Also the undo/do scripts do </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sp_dbpermissions-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> not have USE statements in them so please take that into account.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sp_dbpermissions-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Principal</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sp_dbpermissions-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then all three queries only pull for that database principal. @Principal</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sp_dbpermissions-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> is a pattern check. The queries check for any row where the passed in value exists.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sp_dbpermissions-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It uses the pattern &#39;%&#39; + @Principal + &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sp_dbpermissions-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Role</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sp_dbpermissions-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then the roles query will pull members of the role. If it is NOT NULL and</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sp_dbpermissions-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @DBName is NULL then DB principal and permissions query will pull the principal row for</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sp_dbpermissions-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> the role and the permissions for the role. @Role is a pattern check. The queries </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sp_dbpermissions-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> check for any row where the passed in value exists. It uses the pattern &#39;%&#39; + @Role +</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-sp_dbpermissions-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-sp_dbpermissions-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Type</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-sp_dbpermissions-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then all three queries will only pull principals of that type. </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-sp_dbpermissions-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> S = SQL login</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-sp_dbpermissions-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> U = Windows login</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-sp_dbpermissions-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> G = Windows group</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-sp_dbpermissions-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> R = Server role</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-sp_dbpermissions-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> C = Login mapped to a certificate</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-sp_dbpermissions-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> K = Login mapped to an asymmetric key</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-sp_dbpermissions-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @ObjectName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-sp_dbpermissions-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then the third query will display permissions specific to the object </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-sp_dbpermissions-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> specified and the first two queries will display only those users with those specific</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-sp_dbpermissions-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> permissions. Unfortunately at this point only objects in sys.all_objects will work.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-sp_dbpermissions-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This parameter uses the pattern &#39;%&#39; + @ObjectName + &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-sp_dbpermissions-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Permission</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-sp_dbpermissions-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then the third query will display only permissions that match what is in</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-sp_dbpermissions-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> the parameter. The first two queries will display only those users with that specific</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-sp_dbpermissions-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> permission.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-sp_dbpermissions-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @LoginName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-sp_dbpermissions-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then each of the queries will only pull back database principals that</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-sp_dbpermissions-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> have the same SID as a login that matches the pattern &#39;%&#39; + @LoginName + &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-sp_dbpermissions-sql-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @UseLikeSearch</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-sp_dbpermissions-sql-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) then the search parameters will use LIKE (and </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-sp_dbpermissions-sql-LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> %&#39;s will be added around the @Principal, @Role, @ObjectName, and @LoginName parameters). </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-sp_dbpermissions-sql-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When set to 0 searchs will use =.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-sp_dbpermissions-sql-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @IncludeMSShipped</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-sp_dbpermissions-sql-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) then all principals will be included. When set </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-sp_dbpermissions-sql-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> to 0 the fixed server roles and SA and Public principals will be excluded.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-sp_dbpermissions-sql-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @DropTempTables</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-sp_dbpermissions-sql-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) the temp tables used are dropped. If it&#39;s 0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-sp_dbpermissions-sql-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> then the tempt ables are kept for references after the code has finished.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-sp_dbpermissions-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The temp tables are:</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-sp_dbpermissions-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##DBPrincipals</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-sp_dbpermissions-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##DBRoles </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-sp_dbpermissions-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##DBPermissions</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-sp_dbpermissions-sql-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Output</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-sp_dbpermissions-sql-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> What type of output is desired.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-sp_dbpermissions-sql-LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Default - Either &#39;Default&#39; or it doesn&#39;t match any of the allowed values then the SP</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-sp_dbpermissions-sql-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> will return the standard 3 outputs.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-sp_dbpermissions-sql-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> None - No output at all. Usually used if you keeping the temp tables to do your own</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-sp_dbpermissions-sql-LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> reporting.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-sp_dbpermissions-sql-LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> CreateOnly - Only return the create scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-sp_dbpermissions-sql-LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DropOnly - Only return the drop scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-sp_dbpermissions-sql-LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ScriptsOnly - Return drop and create scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-sp_dbpermissions-sql-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Report - Returns one output with one row per principal and a comma delimited list of</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-sp_dbpermissions-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> roles the principal is a member of and a comma delimited list of the </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-sp_dbpermissions-sql-LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> individual permissions they have.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-sp_dbpermissions-sql-LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Print</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-sp_dbpermissions-sql-LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Defaults to 0, but if a 1 is passed in then the queries are not run but printed</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-sp_dbpermissions-sql-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> out instead. This is primarily for debugging.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-sp_dbpermissions-sql-LC95" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-sp_dbpermissions-sql-LC96" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Data is ordered as follows</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-sp_dbpermissions-sql-LC97" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 1st result set: DBPrincipal</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-sp_dbpermissions-sql-LC98" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 2nd result set: RoleName, UserName if the parameter @Role is used else</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-sp_dbpermissions-sql-LC99" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> UserName, RoleName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-sp_dbpermissions-sql-LC100" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 3rd result set: If @ObjectName is used then DBName, SchemaName, ObjectName, Grantee_Name, permission_name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-sp_dbpermissions-sql-LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> otherwise DBName, GranteeName, SchemaName, ObjectName, permission_name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-sp_dbpermissions-sql-LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-sp_dbpermissions-sql-LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V2.0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-sp_dbpermissions-sql-LC104" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 8/18/2013 – Create a stub if the SP doesn’t exist, then always do an alter</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-sp_dbpermissions-sql-LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 8/18/2013 - Use instance collation for all concatenated strings</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-sp_dbpermissions-sql-LC106" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 9/04/2013 - dbo can’t be added or removed from roles. Don’t script.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-sp_dbpermissions-sql-LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 9/04/2013 - Fix scripts for schema level permissions.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-sp_dbpermissions-sql-LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 9/04/2013 – Change print option to show values of variables not the </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-sp_dbpermissions-sql-LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- Variable names.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-sp_dbpermissions-sql-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V3.0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-sp_dbpermissions-sql-LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/5/2013 - Added @Type parameter to pull only principals of a given type.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-sp_dbpermissions-sql-LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/10/2013 - Added @ObjectName parameter to pull only permissions for a given object.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-sp_dbpermissions-sql-LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V4.0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-sp_dbpermissions-sql-LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 11/18/2013 - Added parameter names to sp_addrolemember and sp_droprolemember.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-sp_dbpermissions-sql-LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 11/19/2013 - Added an ORDER BY to each of the result sets. See above for details.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-sp_dbpermissions-sql-LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 01/04/2014 - Add an ALL option to the DBName parameter.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-sp_dbpermissions-sql-LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V4.1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-sp_dbpermissions-sql-LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 02/07/2014 - Fix bug scripting permissions where object and schema have the same ID</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-sp_dbpermissions-sql-LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 02/15/2014 - Add support for user defined types</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-sp_dbpermissions-sql-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 02/15/2014 - Fix: Add schema to object GRANT and REVOKE scripts</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-sp_dbpermissions-sql-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V5.0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-sp_dbpermissions-sql-LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 4/29/2014 - Fix: Removed extra print statements</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-sp_dbpermissions-sql-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 4/29/2014 - Fix: Added SET NOCOUNT ON</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-sp_dbpermissions-sql-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 4/29/2014 - Added a USE statement to the scripts when using the @DBName = &#39;All&#39; option</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-sp_dbpermissions-sql-LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 5/01/2014 - Added @Permission parameter</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-sp_dbpermissions-sql-LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 5/14/2014 - Added additional permissions based on information from Kendal Van Dyke&#39;s</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-sp_dbpermissions-sql-LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> post http://www.kendalvandyke.com/2014/02/using-sysobjects-when-scripting.html</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-sp_dbpermissions-sql-LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 6/02/2014 - Added @LoginName parameter</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-sp_dbpermissions-sql-LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V5.5</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-sp_dbpermissions-sql-LC130" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 7/15/2014 - Bunch of changes recommended by @SQLSoldier/&quot;https://twitter.com/SQLSoldier&quot;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-sp_dbpermissions-sql-LC131" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Primarily changing the strings to unicode &amp; adding QUOTENAME in a few places</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-sp_dbpermissions-sql-LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> I&#39;d missed it.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-sp_dbpermissions-sql-LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V6.0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-sp_dbpermissions-sql-LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/19/2014 - Add @UserLikeSearch and @IncludeMSShipped parameters. </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-sp_dbpermissions-sql-LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 11/29/2016 - Fixed permissions for symmetric keys</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-sp_dbpermissions-sql-LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- Found and fixed by Brenda Grossnickle</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-sp_dbpermissions-sql-LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Move SID towards the end of the first output so the more important </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-sp_dbpermissions-sql-LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- columns are closer to the front.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-sp_dbpermissions-sql-LC139" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Add IF Exists to drop and create user scripts</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-sp_dbpermissions-sql-LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Remove create/drop user scripts for guest, public, sys and INFORMATION_SCHEMA</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-sp_dbpermissions-sql-LC141" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Add @DropTempTables to keep the temp tables after the SP is run.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-sp_dbpermissions-sql-LC142" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/26/2017 - Add @Output to allow different types of output.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-sp_dbpermissions-sql-LC143" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V6.1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-sp_dbpermissions-sql-LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 06/25/2018 - Skip snapshots</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-sp_dbpermissions-sql-LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 02/13/2019 - Fix to direct permissions column in the report output to show schema permissions correctly</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-sp_dbpermissions-sql-LC146" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 04/05/2019 - For &#39;All&#39; DB parameter fix to only look at ONLINE and EMERGENCY DBs.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-sp_dbpermissions-sql-LC147" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 06/04/2019 - Add SchemaName and permission_name to the order of the third data set.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-sp_dbpermissions-sql-LC148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This makes the order more reliable.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-sp_dbpermissions-sql-LC149" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 06/04/2019 - Begin cleanup of the dynamic SQL (specifically removing carrage return &amp; extra quotes)</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-sp_dbpermissions-sql-LC150" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 06/04/2019 - Fix @print where part of the permissions query was being truncated.</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-sp_dbpermissions-sql-LC151" class="blob-code blob-code-inner js-file-line"><span class="pl-c">********************************************************************************************<span class="pl-c">*/</span></span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-sp_dbpermissions-sql-LC152" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> #sp_DBPermissions </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-sp_dbpermissions-sql-LC153" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-sp_dbpermissions-sql-LC154" class="blob-code blob-code-inner js-file-line"> @DBName <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-sp_dbpermissions-sql-LC155" class="blob-code blob-code-inner js-file-line"> @Principal <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-sp_dbpermissions-sql-LC156" class="blob-code blob-code-inner js-file-line"> @Role <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-sp_dbpermissions-sql-LC157" class="blob-code blob-code-inner js-file-line"> @Type <span class="pl-k">nvarchar</span>(<span class="pl-c1">30</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-sp_dbpermissions-sql-LC158" class="blob-code blob-code-inner js-file-line"> @ObjectName <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-sp_dbpermissions-sql-LC159" class="blob-code blob-code-inner js-file-line"> @Permission <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-sp_dbpermissions-sql-LC160" class="blob-code blob-code-inner js-file-line"> @LoginName <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-sp_dbpermissions-sql-LC161" class="blob-code blob-code-inner js-file-line"> @UseLikeSearch <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-sp_dbpermissions-sql-LC162" class="blob-code blob-code-inner js-file-line"> @IncludeMSShipped <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td> <td id="file-sp_dbpermissions-sql-LC163" class="blob-code blob-code-inner js-file-line"> @DropTempTables <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td> <td id="file-sp_dbpermissions-sql-LC164" class="blob-code blob-code-inner js-file-line"> @Output <span class="pl-k">varchar</span>(<span class="pl-c1">30</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Default&#39;</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td> <td id="file-sp_dbpermissions-sql-LC165" class="blob-code blob-code-inner js-file-line"> @Print <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td> <td id="file-sp_dbpermissions-sql-LC166" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td> <td id="file-sp_dbpermissions-sql-LC167" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td> <td id="file-sp_dbpermissions-sql-LC168" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td> <td id="file-sp_dbpermissions-sql-LC169" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td> <td id="file-sp_dbpermissions-sql-LC170" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td> <td id="file-sp_dbpermissions-sql-LC171" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Collation <span class="pl-k">nvarchar</span>(<span class="pl-c1">75</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td> <td id="file-sp_dbpermissions-sql-LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Collation <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> COLLATE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CAST</span>(<span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>Collation&#39;</span>) <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">50</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td> <td id="file-sp_dbpermissions-sql-LC173" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td> <td id="file-sp_dbpermissions-sql-LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @sql <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td> <td id="file-sp_dbpermissions-sql-LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @sql2 <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td> <td id="file-sp_dbpermissions-sql-LC176" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @ObjectList <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td> <td id="file-sp_dbpermissions-sql-LC177" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @ObjectList2 <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td> <td id="file-sp_dbpermissions-sql-LC178" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @use <span class="pl-k">nvarchar</span>(<span class="pl-c1">500</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td> <td id="file-sp_dbpermissions-sql-LC179" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @AllDBNames <span class="pl-k">sysname</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td> <td id="file-sp_dbpermissions-sql-LC180" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td> <td id="file-sp_dbpermissions-sql-LC181" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>All&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td> <td id="file-sp_dbpermissions-sql-LC182" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td> <td id="file-sp_dbpermissions-sql-LC183" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @use <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td> <td id="file-sp_dbpermissions-sql-LC184" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td> <td id="file-sp_dbpermissions-sql-LC185" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @DBName <span class="pl-k">=</span> <span class="pl-c1">DB_NAME</span>()</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td> <td id="file-sp_dbpermissions-sql-LC186" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span>SELECT @DBName = db_name(database_id) </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td> <td id="file-sp_dbpermissions-sql-LC187" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span>FROM sys.dm_exec_requests </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td> <td id="file-sp_dbpermissions-sql-LC188" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span>WHERE session_id = @@SPID</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td> <td id="file-sp_dbpermissions-sql-LC189" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td> <td id="file-sp_dbpermissions-sql-LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td> <td id="file-sp_dbpermissions-sql-LC191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> IF EXISTS (SELECT 1 FROM sys.databases WHERE name = @DBName)</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td> <td id="file-sp_dbpermissions-sql-LC192" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">db_id</span>(@DBName) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td> <td id="file-sp_dbpermissions-sql-LC193" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @use <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@DBName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td> <td id="file-sp_dbpermissions-sql-LC194" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td> <td id="file-sp_dbpermissions-sql-LC195" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td> <td id="file-sp_dbpermissions-sql-LC196" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RAISERROR</span> (<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%s is not a valid database name.&#39;</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td> <td id="file-sp_dbpermissions-sql-LC197" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">16</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td> <td id="file-sp_dbpermissions-sql-LC198" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td> <td id="file-sp_dbpermissions-sql-LC199" class="blob-code blob-code-inner js-file-line"> @DBName)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td> <td id="file-sp_dbpermissions-sql-LC200" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RETURN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td> <td id="file-sp_dbpermissions-sql-LC201" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td> <td id="file-sp_dbpermissions-sql-LC202" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td> <td id="file-sp_dbpermissions-sql-LC203" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @LikeOperator <span class="pl-k">nvarchar</span>(<span class="pl-c1">4</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td> <td id="file-sp_dbpermissions-sql-LC204" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td> <td id="file-sp_dbpermissions-sql-LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @UseLikeSearch <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td> <td id="file-sp_dbpermissions-sql-LC206" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @LikeOperator <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LIKE&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td> <td id="file-sp_dbpermissions-sql-LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td> <td id="file-sp_dbpermissions-sql-LC208" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @LikeOperator <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>=&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td> <td id="file-sp_dbpermissions-sql-LC209" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td> <td id="file-sp_dbpermissions-sql-LC210" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @UseLikeSearch <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td> <td id="file-sp_dbpermissions-sql-LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td> <td id="file-sp_dbpermissions-sql-LC212" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td> <td id="file-sp_dbpermissions-sql-LC213" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @Principal <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @Principal <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td> <td id="file-sp_dbpermissions-sql-LC214" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td> <td id="file-sp_dbpermissions-sql-LC215" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td> <td id="file-sp_dbpermissions-sql-LC216" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @Role <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @Role <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td> <td id="file-sp_dbpermissions-sql-LC217" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td> <td id="file-sp_dbpermissions-sql-LC218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@ObjectName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td> <td id="file-sp_dbpermissions-sql-LC219" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @ObjectName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @ObjectName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td> <td id="file-sp_dbpermissions-sql-LC220" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td> <td id="file-sp_dbpermissions-sql-LC221" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@LoginName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td> <td id="file-sp_dbpermissions-sql-LC222" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @LoginName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @LoginName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td> <td id="file-sp_dbpermissions-sql-LC223" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td> <td id="file-sp_dbpermissions-sql-LC224" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td> <td id="file-sp_dbpermissions-sql-LC225" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">AND</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>All&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td> <td id="file-sp_dbpermissions-sql-LC226" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td> <td id="file-sp_dbpermissions-sql-LC227" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>DECLARE @AllDBNames sysname&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td> <td id="file-sp_dbpermissions-sql-LC228" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>SET @AllDBNames = &#39;<span class="pl-pds">&#39;</span>master&#39;<span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td> <td id="file-sp_dbpermissions-sql-LC229" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td> <td id="file-sp_dbpermissions-sql-LC230" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td> <td id="file-sp_dbpermissions-sql-LC231" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td> <td id="file-sp_dbpermissions-sql-LC232" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Database Principals</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td> <td id="file-sp_dbpermissions-sql-LC233" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @sql <span class="pl-k">=</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td> <td id="file-sp_dbpermissions-sql-LC234" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>SELECT &#39;</span> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@AllDBNames&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AS DBName,&#39;</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td> <td id="file-sp_dbpermissions-sql-LC235" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> DBPrincipals.principal_id AS DBPrincipalId, DBPrincipals.name AS DBPrincipal, SrvPrincipals.name AS SrvPrincipal, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td> <td id="file-sp_dbpermissions-sql-LC236" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> DBPrincipals.type, DBPrincipals.type_desc, DBPrincipals.default_schema_name, DBPrincipals.create_date, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td> <td id="file-sp_dbpermissions-sql-LC237" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> DBPrincipals.modify_date, DBPrincipals.is_fixed_role, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td> <td id="file-sp_dbpermissions-sql-LC238" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> Authorizations.name AS RoleAuthorization, DBPrincipals.sid, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td> <td id="file-sp_dbpermissions-sql-LC239" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN DBPrincipals.is_fixed_role = 0 AND DBPrincipals.name NOT IN (&#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>guest&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>INFORMATION_SCHEMA&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>sys&#39;<span class="pl-pds">&#39;</span>) THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td> <td id="file-sp_dbpermissions-sql-LC240" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td> <td id="file-sp_dbpermissions-sql-LC241" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>IF DATABASE_PRINCIPAL_ID(&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> + DBPrincipals.name + &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) IS NOT NULL &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td> <td id="file-sp_dbpermissions-sql-LC242" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>DROP &#39;<span class="pl-pds">&#39;</span> + CASE DBPrincipals.[type] WHEN &#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span> THEN NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td> <td id="file-sp_dbpermissions-sql-LC243" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span> THEN NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td> <td id="file-sp_dbpermissions-sql-LC244" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>ROLE&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td> <td id="file-sp_dbpermissions-sql-LC245" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>A&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>APPLICATION ROLE&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td> <td id="file-sp_dbpermissions-sql-LC246" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>USER&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td> <td id="file-sp_dbpermissions-sql-LC247" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(DBPrincipals.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> ELSE NULL END AS DropScript, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td> <td id="file-sp_dbpermissions-sql-LC248" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN DBPrincipals.is_fixed_role = 0 AND DBPrincipals.name NOT IN (&#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>guest&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>INFORMATION_SCHEMA&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>, &#39;<span class="pl-pds">&#39;</span>sys&#39;<span class="pl-pds">&#39;</span>) THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td> <td id="file-sp_dbpermissions-sql-LC249" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span><span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td> <td id="file-sp_dbpermissions-sql-LC250" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>IF DATABASE_PRINCIPAL_ID(&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> + DBPrincipals.name + &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) IS NULL &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td> <td id="file-sp_dbpermissions-sql-LC251" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>CREATE &#39;<span class="pl-pds">&#39;</span> + CASE DBPrincipals.[type] WHEN &#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span> THEN NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td> <td id="file-sp_dbpermissions-sql-LC252" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span> THEN NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td> <td id="file-sp_dbpermissions-sql-LC253" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>ROLE&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td> <td id="file-sp_dbpermissions-sql-LC254" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN &#39;<span class="pl-pds">&#39;</span>A&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>APPLICATION ROLE&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td> <td id="file-sp_dbpermissions-sql-LC255" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>USER&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td> <td id="file-sp_dbpermissions-sql-LC256" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(DBPrincipals.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>) END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td> <td id="file-sp_dbpermissions-sql-LC257" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN DBPrincipals.[type] = &#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td> <td id="file-sp_dbpermissions-sql-LC258" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(&#39;<span class="pl-pds">&#39;</span> AUTHORIZATION &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Authorizations.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td> <td id="file-sp_dbpermissions-sql-LC259" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN DBPrincipals.[type] = &#39;<span class="pl-pds">&#39;</span>A&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td> <td id="file-sp_dbpermissions-sql-LC260" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td> <td id="file-sp_dbpermissions-sql-LC261" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHEN DBPrincipals.[type] NOT IN (&#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span>) THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td> <td id="file-sp_dbpermissions-sql-LC262" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(&#39;<span class="pl-pds">&#39;</span> FOR LOGIN &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td> <td id="file-sp_dbpermissions-sql-LC263" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> QUOTENAME(SrvPrincipals.name<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>),&#39;<span class="pl-pds">&#39;</span> WITHOUT LOGIN&#39;<span class="pl-pds">&#39;</span>) + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td> <td id="file-sp_dbpermissions-sql-LC264" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(&#39;<span class="pl-pds">&#39;</span> WITH DEFAULT_SCHEMA = &#39;<span class="pl-pds">&#39;</span>+</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td> <td id="file-sp_dbpermissions-sql-LC265" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> QUOTENAME(DBPrincipals.default_schema_name<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td> <td id="file-sp_dbpermissions-sql-LC266" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td> <td id="file-sp_dbpermissions-sql-LC267" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> END + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td> <td id="file-sp_dbpermissions-sql-LC268" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN DBPrincipals.[type] NOT IN (&#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>A&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td> <td id="file-sp_dbpermissions-sql-LC269" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.name IS NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td> <td id="file-sp_dbpermissions-sql-LC270" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.sid IS NOT NULL &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td> <td id="file-sp_dbpermissions-sql-LC271" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.sid NOT IN (0x00, 0x01) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td> <td id="file-sp_dbpermissions-sql-LC272" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span> -- Possible missing server principal&#39;<span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td> <td id="file-sp_dbpermissions-sql-LC273" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td> <td id="file-sp_dbpermissions-sql-LC274" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AS CreateScript &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td> <td id="file-sp_dbpermissions-sql-LC275" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>FROM sys.database_principals DBPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L276" class="blob-num js-line-number js-blob-rnum" data-line-number="276"></td> <td id="file-sp_dbpermissions-sql-LC276" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LEFT OUTER JOIN sys.database_principals Authorizations &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L277" class="blob-num js-line-number js-blob-rnum" data-line-number="277"></td> <td id="file-sp_dbpermissions-sql-LC277" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON DBPrincipals.owning_principal_id = Authorizations.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L278" class="blob-num js-line-number js-blob-rnum" data-line-number="278"></td> <td id="file-sp_dbpermissions-sql-LC278" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LEFT OUTER JOIN sys.server_principals SrvPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L279" class="blob-num js-line-number js-blob-rnum" data-line-number="279"></td> <td id="file-sp_dbpermissions-sql-LC279" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON DBPrincipals.sid = SrvPrincipals.sid &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L280" class="blob-num js-line-number js-blob-rnum" data-line-number="280"></td> <td id="file-sp_dbpermissions-sql-LC280" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.sid NOT IN (0x00, 0x01) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L281" class="blob-num js-line-number js-blob-rnum" data-line-number="281"></td> <td id="file-sp_dbpermissions-sql-LC281" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>WHERE 1=1 &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L282" class="blob-num js-line-number js-blob-rnum" data-line-number="282"></td> <td id="file-sp_dbpermissions-sql-LC282" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L283" class="blob-num js-line-number js-blob-rnum" data-line-number="283"></td> <td id="file-sp_dbpermissions-sql-LC283" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,@Role)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L284" class="blob-num js-line-number js-blob-rnum" data-line-number="284"></td> <td id="file-sp_dbpermissions-sql-LC284" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L285" class="blob-num js-line-number js-blob-rnum" data-line-number="285"></td> <td id="file-sp_dbpermissions-sql-LC285" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L286" class="blob-num js-line-number js-blob-rnum" data-line-number="286"></td> <td id="file-sp_dbpermissions-sql-LC286" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">ISNULL</span>(<span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L287" class="blob-num js-line-number js-blob-rnum" data-line-number="287"></td> <td id="file-sp_dbpermissions-sql-LC287" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L288" class="blob-num js-line-number js-blob-rnum" data-line-number="288"></td> <td id="file-sp_dbpermissions-sql-LC288" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(@Principal,@Role) &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L289" class="blob-num js-line-number js-blob-rnum" data-line-number="289"></td> <td id="file-sp_dbpermissions-sql-LC289" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L290" class="blob-num js-line-number js-blob-rnum" data-line-number="290"></td> <td id="file-sp_dbpermissions-sql-LC290" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L291" class="blob-num js-line-number js-blob-rnum" data-line-number="291"></td> <td id="file-sp_dbpermissions-sql-LC291" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L292" class="blob-num js-line-number js-blob-rnum" data-line-number="292"></td> <td id="file-sp_dbpermissions-sql-LC292" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L293" class="blob-num js-line-number js-blob-rnum" data-line-number="293"></td> <td id="file-sp_dbpermissions-sql-LC293" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L294" class="blob-num js-line-number js-blob-rnum" data-line-number="294"></td> <td id="file-sp_dbpermissions-sql-LC294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L295" class="blob-num js-line-number js-blob-rnum" data-line-number="295"></td> <td id="file-sp_dbpermissions-sql-LC295" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L296" class="blob-num js-line-number js-blob-rnum" data-line-number="296"></td> <td id="file-sp_dbpermissions-sql-LC296" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@LoginName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L297" class="blob-num js-line-number js-blob-rnum" data-line-number="297"></td> <td id="file-sp_dbpermissions-sql-LC297" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L298" class="blob-num js-line-number js-blob-rnum" data-line-number="298"></td> <td id="file-sp_dbpermissions-sql-LC298" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@LoginName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L299" class="blob-num js-line-number js-blob-rnum" data-line-number="299"></td> <td id="file-sp_dbpermissions-sql-LC299" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L300" class="blob-num js-line-number js-blob-rnum" data-line-number="300"></td> <td id="file-sp_dbpermissions-sql-LC300" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @LoginName&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L301" class="blob-num js-line-number js-blob-rnum" data-line-number="301"></td> <td id="file-sp_dbpermissions-sql-LC301" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L302" class="blob-num js-line-number js-blob-rnum" data-line-number="302"></td> <td id="file-sp_dbpermissions-sql-LC302" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@ObjectName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L303" class="blob-num js-line-number js-blob-rnum" data-line-number="303"></td> <td id="file-sp_dbpermissions-sql-LC303" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L304" class="blob-num js-line-number js-blob-rnum" data-line-number="304"></td> <td id="file-sp_dbpermissions-sql-LC304" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L305" class="blob-num js-line-number js-blob-rnum" data-line-number="305"></td> <td id="file-sp_dbpermissions-sql-LC305" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L306" class="blob-num js-line-number js-blob-rnum" data-line-number="306"></td> <td id="file-sp_dbpermissions-sql-LC306" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.all_objects [Objects] &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L307" class="blob-num js-line-number js-blob-rnum" data-line-number="307"></td> <td id="file-sp_dbpermissions-sql-LC307" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> INNER JOIN sys.database_permissions Permission &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L308" class="blob-num js-line-number js-blob-rnum" data-line-number="308"></td> <td id="file-sp_dbpermissions-sql-LC308" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON Permission.major_id = [Objects].object_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L309" class="blob-num js-line-number js-blob-rnum" data-line-number="309"></td> <td id="file-sp_dbpermissions-sql-LC309" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE Permission.major_id = [Objects].object_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L310" class="blob-num js-line-number js-blob-rnum" data-line-number="310"></td> <td id="file-sp_dbpermissions-sql-LC310" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.grantee_principal_id = DBPrincipals.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L311" class="blob-num js-line-number js-blob-rnum" data-line-number="311"></td> <td id="file-sp_dbpermissions-sql-LC311" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L312" class="blob-num js-line-number js-blob-rnum" data-line-number="312"></td> <td id="file-sp_dbpermissions-sql-LC312" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L313" class="blob-num js-line-number js-blob-rnum" data-line-number="313"></td> <td id="file-sp_dbpermissions-sql-LC313" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND [Objects].name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@ObjectName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L314" class="blob-num js-line-number js-blob-rnum" data-line-number="314"></td> <td id="file-sp_dbpermissions-sql-LC314" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L315" class="blob-num js-line-number js-blob-rnum" data-line-number="315"></td> <td id="file-sp_dbpermissions-sql-LC315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND [Objects].name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @ObjectName&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L316" class="blob-num js-line-number js-blob-rnum" data-line-number="316"></td> <td id="file-sp_dbpermissions-sql-LC316" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L317" class="blob-num js-line-number js-blob-rnum" data-line-number="317"></td> <td id="file-sp_dbpermissions-sql-LC317" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L318" class="blob-num js-line-number js-blob-rnum" data-line-number="318"></td> <td id="file-sp_dbpermissions-sql-LC318" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L319" class="blob-num js-line-number js-blob-rnum" data-line-number="319"></td> <td id="file-sp_dbpermissions-sql-LC319" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L320" class="blob-num js-line-number js-blob-rnum" data-line-number="320"></td> <td id="file-sp_dbpermissions-sql-LC320" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Permission) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L321" class="blob-num js-line-number js-blob-rnum" data-line-number="321"></td> <td id="file-sp_dbpermissions-sql-LC321" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L322" class="blob-num js-line-number js-blob-rnum" data-line-number="322"></td> <td id="file-sp_dbpermissions-sql-LC322" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L323" class="blob-num js-line-number js-blob-rnum" data-line-number="323"></td> <td id="file-sp_dbpermissions-sql-LC323" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L324" class="blob-num js-line-number js-blob-rnum" data-line-number="324"></td> <td id="file-sp_dbpermissions-sql-LC324" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.database_permissions Permission &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L325" class="blob-num js-line-number js-blob-rnum" data-line-number="325"></td> <td id="file-sp_dbpermissions-sql-LC325" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE Permission.grantee_principal_id = DBPrincipals.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L326" class="blob-num js-line-number js-blob-rnum" data-line-number="326"></td> <td id="file-sp_dbpermissions-sql-LC326" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L327" class="blob-num js-line-number js-blob-rnum" data-line-number="327"></td> <td id="file-sp_dbpermissions-sql-LC327" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L328" class="blob-num js-line-number js-blob-rnum" data-line-number="328"></td> <td id="file-sp_dbpermissions-sql-LC328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Permission,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L329" class="blob-num js-line-number js-blob-rnum" data-line-number="329"></td> <td id="file-sp_dbpermissions-sql-LC329" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L330" class="blob-num js-line-number js-blob-rnum" data-line-number="330"></td> <td id="file-sp_dbpermissions-sql-LC330" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Permission&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L331" class="blob-num js-line-number js-blob-rnum" data-line-number="331"></td> <td id="file-sp_dbpermissions-sql-LC331" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L332" class="blob-num js-line-number js-blob-rnum" data-line-number="332"></td> <td id="file-sp_dbpermissions-sql-LC332" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L333" class="blob-num js-line-number js-blob-rnum" data-line-number="333"></td> <td id="file-sp_dbpermissions-sql-LC333" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L334" class="blob-num js-line-number js-blob-rnum" data-line-number="334"></td> <td id="file-sp_dbpermissions-sql-LC334" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L335" class="blob-num js-line-number js-blob-rnum" data-line-number="335"></td> <td id="file-sp_dbpermissions-sql-LC335" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L336" class="blob-num js-line-number js-blob-rnum" data-line-number="336"></td> <td id="file-sp_dbpermissions-sql-LC336" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND DBPrincipals.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L337" class="blob-num js-line-number js-blob-rnum" data-line-number="337"></td> <td id="file-sp_dbpermissions-sql-LC337" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND DBPrincipals.name NOT IN (&#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>INFORMATION_SCHEMA&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>guest&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>sys&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L338" class="blob-num js-line-number js-blob-rnum" data-line-number="338"></td> <td id="file-sp_dbpermissions-sql-LC338" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L339" class="blob-num js-line-number js-blob-rnum" data-line-number="339"></td> <td id="file-sp_dbpermissions-sql-LC339" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L340" class="blob-num js-line-number js-blob-rnum" data-line-number="340"></td> <td id="file-sp_dbpermissions-sql-LC340" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L341" class="blob-num js-line-number js-blob-rnum" data-line-number="341"></td> <td id="file-sp_dbpermissions-sql-LC341" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Database Principals&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L342" class="blob-num js-line-number js-blob-rnum" data-line-number="342"></td> <td id="file-sp_dbpermissions-sql-LC342" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@sql <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L343" class="blob-num js-line-number js-blob-rnum" data-line-number="343"></td> <td id="file-sp_dbpermissions-sql-LC343" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-c"><span class="pl-c">--</span> Spacing before the next print</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L344" class="blob-num js-line-number js-blob-rnum" data-line-number="344"></td> <td id="file-sp_dbpermissions-sql-LC344" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L345" class="blob-num js-line-number js-blob-rnum" data-line-number="345"></td> <td id="file-sp_dbpermissions-sql-LC345" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L346" class="blob-num js-line-number js-blob-rnum" data-line-number="346"></td> <td id="file-sp_dbpermissions-sql-LC346" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L347" class="blob-num js-line-number js-blob-rnum" data-line-number="347"></td> <td id="file-sp_dbpermissions-sql-LC347" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L348" class="blob-num js-line-number js-blob-rnum" data-line-number="348"></td> <td id="file-sp_dbpermissions-sql-LC348" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##DBPrincipals&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L349" class="blob-num js-line-number js-blob-rnum" data-line-number="349"></td> <td id="file-sp_dbpermissions-sql-LC349" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBPrincipals</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L350" class="blob-num js-line-number js-blob-rnum" data-line-number="350"></td> <td id="file-sp_dbpermissions-sql-LC350" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L351" class="blob-num js-line-number js-blob-rnum" data-line-number="351"></td> <td id="file-sp_dbpermissions-sql-LC351" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L352" class="blob-num js-line-number js-blob-rnum" data-line-number="352"></td> <td id="file-sp_dbpermissions-sql-LC352" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##DBPrincipals (</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L353" class="blob-num js-line-number js-blob-rnum" data-line-number="353"></td> <td id="file-sp_dbpermissions-sql-LC353" class="blob-code blob-code-inner js-file-line"> DBName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L354" class="blob-num js-line-number js-blob-rnum" data-line-number="354"></td> <td id="file-sp_dbpermissions-sql-LC354" class="blob-code blob-code-inner js-file-line"> DBPrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L355" class="blob-num js-line-number js-blob-rnum" data-line-number="355"></td> <td id="file-sp_dbpermissions-sql-LC355" class="blob-code blob-code-inner js-file-line"> DBPrincipal <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L356" class="blob-num js-line-number js-blob-rnum" data-line-number="356"></td> <td id="file-sp_dbpermissions-sql-LC356" class="blob-code blob-code-inner js-file-line"> SrvPrincipal <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L357" class="blob-num js-line-number js-blob-rnum" data-line-number="357"></td> <td id="file-sp_dbpermissions-sql-LC357" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">type</span> <span class="pl-k">char</span>(<span class="pl-c1">1</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L358" class="blob-num js-line-number js-blob-rnum" data-line-number="358"></td> <td id="file-sp_dbpermissions-sql-LC358" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">type_desc</span> <span class="pl-k">nchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L359" class="blob-num js-line-number js-blob-rnum" data-line-number="359"></td> <td id="file-sp_dbpermissions-sql-LC359" class="blob-code blob-code-inner js-file-line"> default_schema_name <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L360" class="blob-num js-line-number js-blob-rnum" data-line-number="360"></td> <td id="file-sp_dbpermissions-sql-LC360" class="blob-code blob-code-inner js-file-line"> create_date <span class="pl-k">datetime</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L361" class="blob-num js-line-number js-blob-rnum" data-line-number="361"></td> <td id="file-sp_dbpermissions-sql-LC361" class="blob-code blob-code-inner js-file-line"> modify_date <span class="pl-k">datetime</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L362" class="blob-num js-line-number js-blob-rnum" data-line-number="362"></td> <td id="file-sp_dbpermissions-sql-LC362" class="blob-code blob-code-inner js-file-line"> is_fixed_role <span class="pl-k">bit</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L363" class="blob-num js-line-number js-blob-rnum" data-line-number="363"></td> <td id="file-sp_dbpermissions-sql-LC363" class="blob-code blob-code-inner js-file-line"> RoleAuthorization <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L364" class="blob-num js-line-number js-blob-rnum" data-line-number="364"></td> <td id="file-sp_dbpermissions-sql-LC364" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">sid</span> <span class="pl-k">varbinary</span>(<span class="pl-c1">85</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L365" class="blob-num js-line-number js-blob-rnum" data-line-number="365"></td> <td id="file-sp_dbpermissions-sql-LC365" class="blob-code blob-code-inner js-file-line"> DropScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L366" class="blob-num js-line-number js-blob-rnum" data-line-number="366"></td> <td id="file-sp_dbpermissions-sql-LC366" class="blob-code blob-code-inner js-file-line"> CreateScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L367" class="blob-num js-line-number js-blob-rnum" data-line-number="367"></td> <td id="file-sp_dbpermissions-sql-LC367" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L368" class="blob-num js-line-number js-blob-rnum" data-line-number="368"></td> <td id="file-sp_dbpermissions-sql-LC368" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L369" class="blob-num js-line-number js-blob-rnum" data-line-number="369"></td> <td id="file-sp_dbpermissions-sql-LC369" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @use <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>INSERT INTO ##DBPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L370" class="blob-num js-line-number js-blob-rnum" data-line-number="370"></td> <td id="file-sp_dbpermissions-sql-LC370" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L371" class="blob-num js-line-number js-blob-rnum" data-line-number="371"></td> <td id="file-sp_dbpermissions-sql-LC371" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L372" class="blob-num js-line-number js-blob-rnum" data-line-number="372"></td> <td id="file-sp_dbpermissions-sql-LC372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L373" class="blob-num js-line-number js-blob-rnum" data-line-number="373"></td> <td id="file-sp_dbpermissions-sql-LC373" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Declare a READ_ONLY cursor to loop through the databases</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L374" class="blob-num js-line-number js-blob-rnum" data-line-number="374"></td> <td id="file-sp_dbpermissions-sql-LC374" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> cur_DBList <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L375" class="blob-num js-line-number js-blob-rnum" data-line-number="375"></td> <td id="file-sp_dbpermissions-sql-LC375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">READ_ONLY</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L376" class="blob-num js-line-number js-blob-rnum" data-line-number="376"></td> <td id="file-sp_dbpermissions-sql-LC376" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">SELECT</span> <span class="pl-k">name</span> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">databases</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L377" class="blob-num js-line-number js-blob-rnum" data-line-number="377"></td> <td id="file-sp_dbpermissions-sql-LC377" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-k">state</span> <span class="pl-k">IN</span> (<span class="pl-c1">0</span>,<span class="pl-c1">5</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L378" class="blob-num js-line-number js-blob-rnum" data-line-number="378"></td> <td id="file-sp_dbpermissions-sql-LC378" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> source_database_id <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L379" class="blob-num js-line-number js-blob-rnum" data-line-number="379"></td> <td id="file-sp_dbpermissions-sql-LC379" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> <span class="pl-k">name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L380" class="blob-num js-line-number js-blob-rnum" data-line-number="380"></td> <td id="file-sp_dbpermissions-sql-LC380" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L381" class="blob-num js-line-number js-blob-rnum" data-line-number="381"></td> <td id="file-sp_dbpermissions-sql-LC381" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OPEN</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L382" class="blob-num js-line-number js-blob-rnum" data-line-number="382"></td> <td id="file-sp_dbpermissions-sql-LC382" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L383" class="blob-num js-line-number js-blob-rnum" data-line-number="383"></td> <td id="file-sp_dbpermissions-sql-LC383" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L384" class="blob-num js-line-number js-blob-rnum" data-line-number="384"></td> <td id="file-sp_dbpermissions-sql-LC384" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHILE</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L385" class="blob-num js-line-number js-blob-rnum" data-line-number="385"></td> <td id="file-sp_dbpermissions-sql-LC385" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L386" class="blob-num js-line-number js-blob-rnum" data-line-number="386"></td> <td id="file-sp_dbpermissions-sql-LC386" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">2</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L387" class="blob-num js-line-number js-blob-rnum" data-line-number="387"></td> <td id="file-sp_dbpermissions-sql-LC387" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L388" class="blob-num js-line-number js-blob-rnum" data-line-number="388"></td> <td id="file-sp_dbpermissions-sql-LC388" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql2 <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@AllDBNames) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L389" class="blob-num js-line-number js-blob-rnum" data-line-number="389"></td> <td id="file-sp_dbpermissions-sql-LC389" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql2, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L390" class="blob-num js-line-number js-blob-rnum" data-line-number="390"></td> <td id="file-sp_dbpermissions-sql-LC390" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), @ObjectName sysname, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L391" class="blob-num js-line-number js-blob-rnum" data-line-number="391"></td> <td id="file-sp_dbpermissions-sql-LC391" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @AllDBNames sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L392" class="blob-num js-line-number js-blob-rnum" data-line-number="392"></td> <td id="file-sp_dbpermissions-sql-LC392" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @AllDBNames, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L393" class="blob-num js-line-number js-blob-rnum" data-line-number="393"></td> <td id="file-sp_dbpermissions-sql-LC393" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> PRINT @sql2</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L394" class="blob-num js-line-number js-blob-rnum" data-line-number="394"></td> <td id="file-sp_dbpermissions-sql-LC394" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L395" class="blob-num js-line-number js-blob-rnum" data-line-number="395"></td> <td id="file-sp_dbpermissions-sql-LC395" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L396" class="blob-num js-line-number js-blob-rnum" data-line-number="396"></td> <td id="file-sp_dbpermissions-sql-LC396" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L397" class="blob-num js-line-number js-blob-rnum" data-line-number="397"></td> <td id="file-sp_dbpermissions-sql-LC397" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L398" class="blob-num js-line-number js-blob-rnum" data-line-number="398"></td> <td id="file-sp_dbpermissions-sql-LC398" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CLOSE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L399" class="blob-num js-line-number js-blob-rnum" data-line-number="399"></td> <td id="file-sp_dbpermissions-sql-LC399" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DEALLOCATE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L400" class="blob-num js-line-number js-blob-rnum" data-line-number="400"></td> <td id="file-sp_dbpermissions-sql-LC400" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L401" class="blob-num js-line-number js-blob-rnum" data-line-number="401"></td> <td id="file-sp_dbpermissions-sql-LC401" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L402" class="blob-num js-line-number js-blob-rnum" data-line-number="402"></td> <td id="file-sp_dbpermissions-sql-LC402" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L403" class="blob-num js-line-number js-blob-rnum" data-line-number="403"></td> <td id="file-sp_dbpermissions-sql-LC403" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @ObjectName sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L404" class="blob-num js-line-number js-blob-rnum" data-line-number="404"></td> <td id="file-sp_dbpermissions-sql-LC404" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L405" class="blob-num js-line-number js-blob-rnum" data-line-number="405"></td> <td id="file-sp_dbpermissions-sql-LC405" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L406" class="blob-num js-line-number js-blob-rnum" data-line-number="406"></td> <td id="file-sp_dbpermissions-sql-LC406" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L407" class="blob-num js-line-number js-blob-rnum" data-line-number="407"></td> <td id="file-sp_dbpermissions-sql-LC407" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Database Role Members</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L408" class="blob-num js-line-number js-blob-rnum" data-line-number="408"></td> <td id="file-sp_dbpermissions-sql-LC408" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @sql <span class="pl-k">=</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L409" class="blob-num js-line-number js-blob-rnum" data-line-number="409"></td> <td id="file-sp_dbpermissions-sql-LC409" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>SELECT &#39;</span> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@AllDBNames&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AS DBName,&#39;</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L410" class="blob-num js-line-number js-blob-rnum" data-line-number="410"></td> <td id="file-sp_dbpermissions-sql-LC410" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> Users.principal_id AS UserPrincipalId, Users.name AS UserName, Roles.name AS RoleName, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L411" class="blob-num js-line-number js-blob-rnum" data-line-number="411"></td> <td id="file-sp_dbpermissions-sql-LC411" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L412" class="blob-num js-line-number js-blob-rnum" data-line-number="412"></td> <td id="file-sp_dbpermissions-sql-LC412" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Users.is_fixed_role = 0 AND Users.name &lt;&gt; &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L413" class="blob-num js-line-number js-blob-rnum" data-line-number="413"></td> <td id="file-sp_dbpermissions-sql-LC413" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>EXEC sp_droprolemember @rolename = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Roles.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L414" class="blob-num js-line-number js-blob-rnum" data-line-number="414"></td> <td id="file-sp_dbpermissions-sql-LC414" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>, @membername = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(CASE WHEN Users.name = &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L415" class="blob-num js-line-number js-blob-rnum" data-line-number="415"></td> <td id="file-sp_dbpermissions-sql-LC415" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE Users.name END<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L416" class="blob-num js-line-number js-blob-rnum" data-line-number="416"></td> <td id="file-sp_dbpermissions-sql-LC416" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS DropScript, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L417" class="blob-num js-line-number js-blob-rnum" data-line-number="417"></td> <td id="file-sp_dbpermissions-sql-LC417" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L418" class="blob-num js-line-number js-blob-rnum" data-line-number="418"></td> <td id="file-sp_dbpermissions-sql-LC418" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Users.is_fixed_role = 0 AND Users.name &lt;&gt; &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L419" class="blob-num js-line-number js-blob-rnum" data-line-number="419"></td> <td id="file-sp_dbpermissions-sql-LC419" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>EXEC sp_addrolemember @rolename = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Roles.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L420" class="blob-num js-line-number js-blob-rnum" data-line-number="420"></td> <td id="file-sp_dbpermissions-sql-LC420" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>, @membername = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(CASE WHEN Users.name = &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L421" class="blob-num js-line-number js-blob-rnum" data-line-number="421"></td> <td id="file-sp_dbpermissions-sql-LC421" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE Users.name END<span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L422" class="blob-num js-line-number js-blob-rnum" data-line-number="422"></td> <td id="file-sp_dbpermissions-sql-LC422" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS AddScript &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L423" class="blob-num js-line-number js-blob-rnum" data-line-number="423"></td> <td id="file-sp_dbpermissions-sql-LC423" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>FROM sys.database_role_members RoleMembers &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L424" class="blob-num js-line-number js-blob-rnum" data-line-number="424"></td> <td id="file-sp_dbpermissions-sql-LC424" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>JOIN sys.database_principals Users &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L425" class="blob-num js-line-number js-blob-rnum" data-line-number="425"></td> <td id="file-sp_dbpermissions-sql-LC425" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON RoleMembers.member_principal_id = Users.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L426" class="blob-num js-line-number js-blob-rnum" data-line-number="426"></td> <td id="file-sp_dbpermissions-sql-LC426" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>JOIN sys.database_principals Roles &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L427" class="blob-num js-line-number js-blob-rnum" data-line-number="427"></td> <td id="file-sp_dbpermissions-sql-LC427" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON RoleMembers.role_principal_id = Roles.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L428" class="blob-num js-line-number js-blob-rnum" data-line-number="428"></td> <td id="file-sp_dbpermissions-sql-LC428" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>WHERE 1=1 &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L429" class="blob-num js-line-number js-blob-rnum" data-line-number="429"></td> <td id="file-sp_dbpermissions-sql-LC429" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L430" class="blob-num js-line-number js-blob-rnum" data-line-number="430"></td> <td id="file-sp_dbpermissions-sql-LC430" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L431" class="blob-num js-line-number js-blob-rnum" data-line-number="431"></td> <td id="file-sp_dbpermissions-sql-LC431" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L432" class="blob-num js-line-number js-blob-rnum" data-line-number="432"></td> <td id="file-sp_dbpermissions-sql-LC432" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span><span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L433" class="blob-num js-line-number js-blob-rnum" data-line-number="433"></td> <td id="file-sp_dbpermissions-sql-LC433" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L434" class="blob-num js-line-number js-blob-rnum" data-line-number="434"></td> <td id="file-sp_dbpermissions-sql-LC434" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Principal&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L435" class="blob-num js-line-number js-blob-rnum" data-line-number="435"></td> <td id="file-sp_dbpermissions-sql-LC435" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L436" class="blob-num js-line-number js-blob-rnum" data-line-number="436"></td> <td id="file-sp_dbpermissions-sql-LC436" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L437" class="blob-num js-line-number js-blob-rnum" data-line-number="437"></td> <td id="file-sp_dbpermissions-sql-LC437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L438" class="blob-num js-line-number js-blob-rnum" data-line-number="438"></td> <td id="file-sp_dbpermissions-sql-LC438" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Roles.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span><span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L439" class="blob-num js-line-number js-blob-rnum" data-line-number="439"></td> <td id="file-sp_dbpermissions-sql-LC439" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L440" class="blob-num js-line-number js-blob-rnum" data-line-number="440"></td> <td id="file-sp_dbpermissions-sql-LC440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Roles.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Role&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L441" class="blob-num js-line-number js-blob-rnum" data-line-number="441"></td> <td id="file-sp_dbpermissions-sql-LC441" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L442" class="blob-num js-line-number js-blob-rnum" data-line-number="442"></td> <td id="file-sp_dbpermissions-sql-LC442" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L443" class="blob-num js-line-number js-blob-rnum" data-line-number="443"></td> <td id="file-sp_dbpermissions-sql-LC443" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L444" class="blob-num js-line-number js-blob-rnum" data-line-number="444"></td> <td id="file-sp_dbpermissions-sql-LC444" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L445" class="blob-num js-line-number js-blob-rnum" data-line-number="445"></td> <td id="file-sp_dbpermissions-sql-LC445" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L446" class="blob-num js-line-number js-blob-rnum" data-line-number="446"></td> <td id="file-sp_dbpermissions-sql-LC446" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L447" class="blob-num js-line-number js-blob-rnum" data-line-number="447"></td> <td id="file-sp_dbpermissions-sql-LC447" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L448" class="blob-num js-line-number js-blob-rnum" data-line-number="448"></td> <td id="file-sp_dbpermissions-sql-LC448" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@LoginName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L449" class="blob-num js-line-number js-blob-rnum" data-line-number="449"></td> <td id="file-sp_dbpermissions-sql-LC449" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L450" class="blob-num js-line-number js-blob-rnum" data-line-number="450"></td> <td id="file-sp_dbpermissions-sql-LC450" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L451" class="blob-num js-line-number js-blob-rnum" data-line-number="451"></td> <td id="file-sp_dbpermissions-sql-LC451" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L452" class="blob-num js-line-number js-blob-rnum" data-line-number="452"></td> <td id="file-sp_dbpermissions-sql-LC452" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.server_principals SrvPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L453" class="blob-num js-line-number js-blob-rnum" data-line-number="453"></td> <td id="file-sp_dbpermissions-sql-LC453" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE Users.sid NOT IN (0x00, 0x01) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L454" class="blob-num js-line-number js-blob-rnum" data-line-number="454"></td> <td id="file-sp_dbpermissions-sql-LC454" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.sid = Users.sid &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L455" class="blob-num js-line-number js-blob-rnum" data-line-number="455"></td> <td id="file-sp_dbpermissions-sql-LC455" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.type NOT IN (&#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L456" class="blob-num js-line-number js-blob-rnum" data-line-number="456"></td> <td id="file-sp_dbpermissions-sql-LC456" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L457" class="blob-num js-line-number js-blob-rnum" data-line-number="457"></td> <td id="file-sp_dbpermissions-sql-LC457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@LoginName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L458" class="blob-num js-line-number js-blob-rnum" data-line-number="458"></td> <td id="file-sp_dbpermissions-sql-LC458" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L459" class="blob-num js-line-number js-blob-rnum" data-line-number="459"></td> <td id="file-sp_dbpermissions-sql-LC459" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @LoginName&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L460" class="blob-num js-line-number js-blob-rnum" data-line-number="460"></td> <td id="file-sp_dbpermissions-sql-LC460" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L461" class="blob-num js-line-number js-blob-rnum" data-line-number="461"></td> <td id="file-sp_dbpermissions-sql-LC461" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L462" class="blob-num js-line-number js-blob-rnum" data-line-number="462"></td> <td id="file-sp_dbpermissions-sql-LC462" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L463" class="blob-num js-line-number js-blob-rnum" data-line-number="463"></td> <td id="file-sp_dbpermissions-sql-LC463" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L464" class="blob-num js-line-number js-blob-rnum" data-line-number="464"></td> <td id="file-sp_dbpermissions-sql-LC464" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@ObjectName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L465" class="blob-num js-line-number js-blob-rnum" data-line-number="465"></td> <td id="file-sp_dbpermissions-sql-LC465" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L466" class="blob-num js-line-number js-blob-rnum" data-line-number="466"></td> <td id="file-sp_dbpermissions-sql-LC466" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L467" class="blob-num js-line-number js-blob-rnum" data-line-number="467"></td> <td id="file-sp_dbpermissions-sql-LC467" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L468" class="blob-num js-line-number js-blob-rnum" data-line-number="468"></td> <td id="file-sp_dbpermissions-sql-LC468" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.all_objects [Objects] &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L469" class="blob-num js-line-number js-blob-rnum" data-line-number="469"></td> <td id="file-sp_dbpermissions-sql-LC469" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> INNER JOIN sys.database_permissions Permission &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L470" class="blob-num js-line-number js-blob-rnum" data-line-number="470"></td> <td id="file-sp_dbpermissions-sql-LC470" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON Permission.major_id = [Objects].object_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L471" class="blob-num js-line-number js-blob-rnum" data-line-number="471"></td> <td id="file-sp_dbpermissions-sql-LC471" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE Permission.major_id = [Objects].object_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L472" class="blob-num js-line-number js-blob-rnum" data-line-number="472"></td> <td id="file-sp_dbpermissions-sql-LC472" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.grantee_principal_id = Users.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L473" class="blob-num js-line-number js-blob-rnum" data-line-number="473"></td> <td id="file-sp_dbpermissions-sql-LC473" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L474" class="blob-num js-line-number js-blob-rnum" data-line-number="474"></td> <td id="file-sp_dbpermissions-sql-LC474" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L475" class="blob-num js-line-number js-blob-rnum" data-line-number="475"></td> <td id="file-sp_dbpermissions-sql-LC475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND [Objects].name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@ObjectName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L476" class="blob-num js-line-number js-blob-rnum" data-line-number="476"></td> <td id="file-sp_dbpermissions-sql-LC476" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L477" class="blob-num js-line-number js-blob-rnum" data-line-number="477"></td> <td id="file-sp_dbpermissions-sql-LC477" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND [Objects].name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @ObjectName&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L478" class="blob-num js-line-number js-blob-rnum" data-line-number="478"></td> <td id="file-sp_dbpermissions-sql-LC478" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L479" class="blob-num js-line-number js-blob-rnum" data-line-number="479"></td> <td id="file-sp_dbpermissions-sql-LC479" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L480" class="blob-num js-line-number js-blob-rnum" data-line-number="480"></td> <td id="file-sp_dbpermissions-sql-LC480" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L481" class="blob-num js-line-number js-blob-rnum" data-line-number="481"></td> <td id="file-sp_dbpermissions-sql-LC481" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L482" class="blob-num js-line-number js-blob-rnum" data-line-number="482"></td> <td id="file-sp_dbpermissions-sql-LC482" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Permission) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L483" class="blob-num js-line-number js-blob-rnum" data-line-number="483"></td> <td id="file-sp_dbpermissions-sql-LC483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L484" class="blob-num js-line-number js-blob-rnum" data-line-number="484"></td> <td id="file-sp_dbpermissions-sql-LC484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L485" class="blob-num js-line-number js-blob-rnum" data-line-number="485"></td> <td id="file-sp_dbpermissions-sql-LC485" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L486" class="blob-num js-line-number js-blob-rnum" data-line-number="486"></td> <td id="file-sp_dbpermissions-sql-LC486" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.database_permissions Permission &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L487" class="blob-num js-line-number js-blob-rnum" data-line-number="487"></td> <td id="file-sp_dbpermissions-sql-LC487" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE Permission.grantee_principal_id = Users.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L488" class="blob-num js-line-number js-blob-rnum" data-line-number="488"></td> <td id="file-sp_dbpermissions-sql-LC488" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L489" class="blob-num js-line-number js-blob-rnum" data-line-number="489"></td> <td id="file-sp_dbpermissions-sql-LC489" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L490" class="blob-num js-line-number js-blob-rnum" data-line-number="490"></td> <td id="file-sp_dbpermissions-sql-LC490" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Permission,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L491" class="blob-num js-line-number js-blob-rnum" data-line-number="491"></td> <td id="file-sp_dbpermissions-sql-LC491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L492" class="blob-num js-line-number js-blob-rnum" data-line-number="492"></td> <td id="file-sp_dbpermissions-sql-LC492" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Permission&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L493" class="blob-num js-line-number js-blob-rnum" data-line-number="493"></td> <td id="file-sp_dbpermissions-sql-LC493" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L494" class="blob-num js-line-number js-blob-rnum" data-line-number="494"></td> <td id="file-sp_dbpermissions-sql-LC494" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L495" class="blob-num js-line-number js-blob-rnum" data-line-number="495"></td> <td id="file-sp_dbpermissions-sql-LC495" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L496" class="blob-num js-line-number js-blob-rnum" data-line-number="496"></td> <td id="file-sp_dbpermissions-sql-LC496" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L497" class="blob-num js-line-number js-blob-rnum" data-line-number="497"></td> <td id="file-sp_dbpermissions-sql-LC497" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L498" class="blob-num js-line-number js-blob-rnum" data-line-number="498"></td> <td id="file-sp_dbpermissions-sql-LC498" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Users.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L499" class="blob-num js-line-number js-blob-rnum" data-line-number="499"></td> <td id="file-sp_dbpermissions-sql-LC499" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND Users.name NOT IN (&#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>INFORMATION_SCHEMA&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>guest&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>sys&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L500" class="blob-num js-line-number js-blob-rnum" data-line-number="500"></td> <td id="file-sp_dbpermissions-sql-LC500" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L501" class="blob-num js-line-number js-blob-rnum" data-line-number="501"></td> <td id="file-sp_dbpermissions-sql-LC501" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L502" class="blob-num js-line-number js-blob-rnum" data-line-number="502"></td> <td id="file-sp_dbpermissions-sql-LC502" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L503" class="blob-num js-line-number js-blob-rnum" data-line-number="503"></td> <td id="file-sp_dbpermissions-sql-LC503" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>-- Database Role Members&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L504" class="blob-num js-line-number js-blob-rnum" data-line-number="504"></td> <td id="file-sp_dbpermissions-sql-LC504" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@sql <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L505" class="blob-num js-line-number js-blob-rnum" data-line-number="505"></td> <td id="file-sp_dbpermissions-sql-LC505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-c"><span class="pl-c">--</span> Spacing before the next print</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L506" class="blob-num js-line-number js-blob-rnum" data-line-number="506"></td> <td id="file-sp_dbpermissions-sql-LC506" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L507" class="blob-num js-line-number js-blob-rnum" data-line-number="507"></td> <td id="file-sp_dbpermissions-sql-LC507" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L508" class="blob-num js-line-number js-blob-rnum" data-line-number="508"></td> <td id="file-sp_dbpermissions-sql-LC508" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L509" class="blob-num js-line-number js-blob-rnum" data-line-number="509"></td> <td id="file-sp_dbpermissions-sql-LC509" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L510" class="blob-num js-line-number js-blob-rnum" data-line-number="510"></td> <td id="file-sp_dbpermissions-sql-LC510" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##DBRoles&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L511" class="blob-num js-line-number js-blob-rnum" data-line-number="511"></td> <td id="file-sp_dbpermissions-sql-LC511" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBRoles</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L512" class="blob-num js-line-number js-blob-rnum" data-line-number="512"></td> <td id="file-sp_dbpermissions-sql-LC512" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L513" class="blob-num js-line-number js-blob-rnum" data-line-number="513"></td> <td id="file-sp_dbpermissions-sql-LC513" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L514" class="blob-num js-line-number js-blob-rnum" data-line-number="514"></td> <td id="file-sp_dbpermissions-sql-LC514" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##DBRoles (</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L515" class="blob-num js-line-number js-blob-rnum" data-line-number="515"></td> <td id="file-sp_dbpermissions-sql-LC515" class="blob-code blob-code-inner js-file-line"> DBName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L516" class="blob-num js-line-number js-blob-rnum" data-line-number="516"></td> <td id="file-sp_dbpermissions-sql-LC516" class="blob-code blob-code-inner js-file-line"> UserPrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L517" class="blob-num js-line-number js-blob-rnum" data-line-number="517"></td> <td id="file-sp_dbpermissions-sql-LC517" class="blob-code blob-code-inner js-file-line"> UserName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L518" class="blob-num js-line-number js-blob-rnum" data-line-number="518"></td> <td id="file-sp_dbpermissions-sql-LC518" class="blob-code blob-code-inner js-file-line"> RoleName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L519" class="blob-num js-line-number js-blob-rnum" data-line-number="519"></td> <td id="file-sp_dbpermissions-sql-LC519" class="blob-code blob-code-inner js-file-line"> DropScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L520" class="blob-num js-line-number js-blob-rnum" data-line-number="520"></td> <td id="file-sp_dbpermissions-sql-LC520" class="blob-code blob-code-inner js-file-line"> AddScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L521" class="blob-num js-line-number js-blob-rnum" data-line-number="521"></td> <td id="file-sp_dbpermissions-sql-LC521" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L522" class="blob-num js-line-number js-blob-rnum" data-line-number="522"></td> <td id="file-sp_dbpermissions-sql-LC522" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L523" class="blob-num js-line-number js-blob-rnum" data-line-number="523"></td> <td id="file-sp_dbpermissions-sql-LC523" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @use <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>INSERT INTO ##DBRoles &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L524" class="blob-num js-line-number js-blob-rnum" data-line-number="524"></td> <td id="file-sp_dbpermissions-sql-LC524" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L525" class="blob-num js-line-number js-blob-rnum" data-line-number="525"></td> <td id="file-sp_dbpermissions-sql-LC525" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L526" class="blob-num js-line-number js-blob-rnum" data-line-number="526"></td> <td id="file-sp_dbpermissions-sql-LC526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L527" class="blob-num js-line-number js-blob-rnum" data-line-number="527"></td> <td id="file-sp_dbpermissions-sql-LC527" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Declare a READ_ONLY cursor to loop through the databases</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L528" class="blob-num js-line-number js-blob-rnum" data-line-number="528"></td> <td id="file-sp_dbpermissions-sql-LC528" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> cur_DBList <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L529" class="blob-num js-line-number js-blob-rnum" data-line-number="529"></td> <td id="file-sp_dbpermissions-sql-LC529" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">READ_ONLY</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L530" class="blob-num js-line-number js-blob-rnum" data-line-number="530"></td> <td id="file-sp_dbpermissions-sql-LC530" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">SELECT</span> <span class="pl-k">name</span> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">databases</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L531" class="blob-num js-line-number js-blob-rnum" data-line-number="531"></td> <td id="file-sp_dbpermissions-sql-LC531" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-k">state</span> <span class="pl-k">IN</span> (<span class="pl-c1">0</span>,<span class="pl-c1">5</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L532" class="blob-num js-line-number js-blob-rnum" data-line-number="532"></td> <td id="file-sp_dbpermissions-sql-LC532" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> source_database_id <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L533" class="blob-num js-line-number js-blob-rnum" data-line-number="533"></td> <td id="file-sp_dbpermissions-sql-LC533" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> <span class="pl-k">name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L534" class="blob-num js-line-number js-blob-rnum" data-line-number="534"></td> <td id="file-sp_dbpermissions-sql-LC534" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L535" class="blob-num js-line-number js-blob-rnum" data-line-number="535"></td> <td id="file-sp_dbpermissions-sql-LC535" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OPEN</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L536" class="blob-num js-line-number js-blob-rnum" data-line-number="536"></td> <td id="file-sp_dbpermissions-sql-LC536" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L537" class="blob-num js-line-number js-blob-rnum" data-line-number="537"></td> <td id="file-sp_dbpermissions-sql-LC537" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L538" class="blob-num js-line-number js-blob-rnum" data-line-number="538"></td> <td id="file-sp_dbpermissions-sql-LC538" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHILE</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L539" class="blob-num js-line-number js-blob-rnum" data-line-number="539"></td> <td id="file-sp_dbpermissions-sql-LC539" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L540" class="blob-num js-line-number js-blob-rnum" data-line-number="540"></td> <td id="file-sp_dbpermissions-sql-LC540" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">2</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L541" class="blob-num js-line-number js-blob-rnum" data-line-number="541"></td> <td id="file-sp_dbpermissions-sql-LC541" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L542" class="blob-num js-line-number js-blob-rnum" data-line-number="542"></td> <td id="file-sp_dbpermissions-sql-LC542" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql2 <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@AllDBNames) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>;&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L543" class="blob-num js-line-number js-blob-rnum" data-line-number="543"></td> <td id="file-sp_dbpermissions-sql-LC543" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql2, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L544" class="blob-num js-line-number js-blob-rnum" data-line-number="544"></td> <td id="file-sp_dbpermissions-sql-LC544" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), @ObjectName sysname, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L545" class="blob-num js-line-number js-blob-rnum" data-line-number="545"></td> <td id="file-sp_dbpermissions-sql-LC545" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @AllDBNames sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L546" class="blob-num js-line-number js-blob-rnum" data-line-number="546"></td> <td id="file-sp_dbpermissions-sql-LC546" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @AllDBNames, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L547" class="blob-num js-line-number js-blob-rnum" data-line-number="547"></td> <td id="file-sp_dbpermissions-sql-LC547" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> PRINT @sql2</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L548" class="blob-num js-line-number js-blob-rnum" data-line-number="548"></td> <td id="file-sp_dbpermissions-sql-LC548" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L549" class="blob-num js-line-number js-blob-rnum" data-line-number="549"></td> <td id="file-sp_dbpermissions-sql-LC549" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L550" class="blob-num js-line-number js-blob-rnum" data-line-number="550"></td> <td id="file-sp_dbpermissions-sql-LC550" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L551" class="blob-num js-line-number js-blob-rnum" data-line-number="551"></td> <td id="file-sp_dbpermissions-sql-LC551" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L552" class="blob-num js-line-number js-blob-rnum" data-line-number="552"></td> <td id="file-sp_dbpermissions-sql-LC552" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CLOSE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L553" class="blob-num js-line-number js-blob-rnum" data-line-number="553"></td> <td id="file-sp_dbpermissions-sql-LC553" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DEALLOCATE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L554" class="blob-num js-line-number js-blob-rnum" data-line-number="554"></td> <td id="file-sp_dbpermissions-sql-LC554" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L555" class="blob-num js-line-number js-blob-rnum" data-line-number="555"></td> <td id="file-sp_dbpermissions-sql-LC555" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L556" class="blob-num js-line-number js-blob-rnum" data-line-number="556"></td> <td id="file-sp_dbpermissions-sql-LC556" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L557" class="blob-num js-line-number js-blob-rnum" data-line-number="557"></td> <td id="file-sp_dbpermissions-sql-LC557" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @ObjectName sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L558" class="blob-num js-line-number js-blob-rnum" data-line-number="558"></td> <td id="file-sp_dbpermissions-sql-LC558" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L559" class="blob-num js-line-number js-blob-rnum" data-line-number="559"></td> <td id="file-sp_dbpermissions-sql-LC559" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L560" class="blob-num js-line-number js-blob-rnum" data-line-number="560"></td> <td id="file-sp_dbpermissions-sql-LC560" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L561" class="blob-num js-line-number js-blob-rnum" data-line-number="561"></td> <td id="file-sp_dbpermissions-sql-LC561" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L562" class="blob-num js-line-number js-blob-rnum" data-line-number="562"></td> <td id="file-sp_dbpermissions-sql-LC562" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Database &amp; object Permissions</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L563" class="blob-num js-line-number js-blob-rnum" data-line-number="563"></td> <td id="file-sp_dbpermissions-sql-LC563" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @ObjectList <span class="pl-k">=</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L564" class="blob-num js-line-number js-blob-rnum" data-line-number="564"></td> <td id="file-sp_dbpermissions-sql-LC564" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>; WITH ObjectList AS (</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L565" class="blob-num js-line-number js-blob-rnum" data-line-number="565"></td> <td id="file-sp_dbpermissions-sql-LC565" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName , </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L566" class="blob-num js-line-number js-blob-rnum" data-line-number="566"></td> <td id="file-sp_dbpermissions-sql-LC566" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L567" class="blob-num js-line-number js-blob-rnum" data-line-number="567"></td> <td id="file-sp_dbpermissions-sql-LC567" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> database_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L568" class="blob-num js-line-number js-blob-rnum" data-line-number="568"></td> <td id="file-sp_dbpermissions-sql-LC568" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>DATABASE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L569" class="blob-num js-line-number js-blob-rnum" data-line-number="569"></td> <td id="file-sp_dbpermissions-sql-LC569" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L570" class="blob-num js-line-number js-blob-rnum" data-line-number="570"></td> <td id="file-sp_dbpermissions-sql-LC570" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM master.sys.databases</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L571" class="blob-num js-line-number js-blob-rnum" data-line-number="571"></td> <td id="file-sp_dbpermissions-sql-LC571" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L572" class="blob-num js-line-number js-blob-rnum" data-line-number="572"></td> <td id="file-sp_dbpermissions-sql-LC572" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT SCHEMA_NAME(sys.all_objects.schema_id) <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS SchemaName,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L573" class="blob-num js-line-number js-blob-rnum" data-line-number="573"></td> <td id="file-sp_dbpermissions-sql-LC573" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L574" class="blob-num js-line-number js-blob-rnum" data-line-number="574"></td> <td id="file-sp_dbpermissions-sql-LC574" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> object_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L575" class="blob-num js-line-number js-blob-rnum" data-line-number="575"></td> <td id="file-sp_dbpermissions-sql-LC575" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>OBJECT_OR_COLUMN&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L576" class="blob-num js-line-number js-blob-rnum" data-line-number="576"></td> <td id="file-sp_dbpermissions-sql-LC576" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>OBJECT&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L577" class="blob-num js-line-number js-blob-rnum" data-line-number="577"></td> <td id="file-sp_dbpermissions-sql-LC577" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.all_objects</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L578" class="blob-num js-line-number js-blob-rnum" data-line-number="578"></td> <td id="file-sp_dbpermissions-sql-LC578" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L579" class="blob-num js-line-number js-blob-rnum" data-line-number="579"></td> <td id="file-sp_dbpermissions-sql-LC579" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L580" class="blob-num js-line-number js-blob-rnum" data-line-number="580"></td> <td id="file-sp_dbpermissions-sql-LC580" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> NULL AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L581" class="blob-num js-line-number js-blob-rnum" data-line-number="581"></td> <td id="file-sp_dbpermissions-sql-LC581" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> schema_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L582" class="blob-num js-line-number js-blob-rnum" data-line-number="582"></td> <td id="file-sp_dbpermissions-sql-LC582" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SCHEMA&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L583" class="blob-num js-line-number js-blob-rnum" data-line-number="583"></td> <td id="file-sp_dbpermissions-sql-LC583" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SCHEMA&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L584" class="blob-num js-line-number js-blob-rnum" data-line-number="584"></td> <td id="file-sp_dbpermissions-sql-LC584" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.schemas</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L585" class="blob-num js-line-number js-blob-rnum" data-line-number="585"></td> <td id="file-sp_dbpermissions-sql-LC585" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L586" class="blob-num js-line-number js-blob-rnum" data-line-number="586"></td> <td id="file-sp_dbpermissions-sql-LC586" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L587" class="blob-num js-line-number js-blob-rnum" data-line-number="587"></td> <td id="file-sp_dbpermissions-sql-LC587" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L588" class="blob-num js-line-number js-blob-rnum" data-line-number="588"></td> <td id="file-sp_dbpermissions-sql-LC588" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> principal_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L589" class="blob-num js-line-number js-blob-rnum" data-line-number="589"></td> <td id="file-sp_dbpermissions-sql-LC589" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>DATABASE_PRINCIPAL&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L590" class="blob-num js-line-number js-blob-rnum" data-line-number="590"></td> <td id="file-sp_dbpermissions-sql-LC590" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE type_desc </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L591" class="blob-num js-line-number js-blob-rnum" data-line-number="591"></td> <td id="file-sp_dbpermissions-sql-LC591" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN <span class="pl-pds">&#39;&#39;</span>APPLICATION_ROLE&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>APPLICATION ROLE&#39;<span class="pl-pds">&#39;</span> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L592" class="blob-num js-line-number js-blob-rnum" data-line-number="592"></td> <td id="file-sp_dbpermissions-sql-LC592" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN <span class="pl-pds">&#39;&#39;</span>DATABASE_ROLE&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>ROLE&#39;<span class="pl-pds">&#39;</span> </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L593" class="blob-num js-line-number js-blob-rnum" data-line-number="593"></td> <td id="file-sp_dbpermissions-sql-LC593" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>USER&#39;<span class="pl-pds">&#39;</span> END AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L594" class="blob-num js-line-number js-blob-rnum" data-line-number="594"></td> <td id="file-sp_dbpermissions-sql-LC594" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.database_principals</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L595" class="blob-num js-line-number js-blob-rnum" data-line-number="595"></td> <td id="file-sp_dbpermissions-sql-LC595" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L596" class="blob-num js-line-number js-blob-rnum" data-line-number="596"></td> <td id="file-sp_dbpermissions-sql-LC596" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT SCHEMA_NAME(schema_id) <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L597" class="blob-num js-line-number js-blob-rnum" data-line-number="597"></td> <td id="file-sp_dbpermissions-sql-LC597" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L598" class="blob-num js-line-number js-blob-rnum" data-line-number="598"></td> <td id="file-sp_dbpermissions-sql-LC598" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> xml_collection_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L599" class="blob-num js-line-number js-blob-rnum" data-line-number="599"></td> <td id="file-sp_dbpermissions-sql-LC599" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>XML_SCHEMA_COLLECTION&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L600" class="blob-num js-line-number js-blob-rnum" data-line-number="600"></td> <td id="file-sp_dbpermissions-sql-LC600" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>XML SCHEMA COLLECTION&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L601" class="blob-num js-line-number js-blob-rnum" data-line-number="601"></td> <td id="file-sp_dbpermissions-sql-LC601" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.xml_schema_collections</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L602" class="blob-num js-line-number js-blob-rnum" data-line-number="602"></td> <td id="file-sp_dbpermissions-sql-LC602" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L603" class="blob-num js-line-number js-blob-rnum" data-line-number="603"></td> <td id="file-sp_dbpermissions-sql-LC603" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L604" class="blob-num js-line-number js-blob-rnum" data-line-number="604"></td> <td id="file-sp_dbpermissions-sql-LC604" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L605" class="blob-num js-line-number js-blob-rnum" data-line-number="605"></td> <td id="file-sp_dbpermissions-sql-LC605" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> message_type_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L606" class="blob-num js-line-number js-blob-rnum" data-line-number="606"></td> <td id="file-sp_dbpermissions-sql-LC606" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>MESSAGE_TYPE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L607" class="blob-num js-line-number js-blob-rnum" data-line-number="607"></td> <td id="file-sp_dbpermissions-sql-LC607" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>MESSAGE TYPE&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L608" class="blob-num js-line-number js-blob-rnum" data-line-number="608"></td> <td id="file-sp_dbpermissions-sql-LC608" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.service_message_types</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L609" class="blob-num js-line-number js-blob-rnum" data-line-number="609"></td> <td id="file-sp_dbpermissions-sql-LC609" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L610" class="blob-num js-line-number js-blob-rnum" data-line-number="610"></td> <td id="file-sp_dbpermissions-sql-LC610" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L611" class="blob-num js-line-number js-blob-rnum" data-line-number="611"></td> <td id="file-sp_dbpermissions-sql-LC611" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L612" class="blob-num js-line-number js-blob-rnum" data-line-number="612"></td> <td id="file-sp_dbpermissions-sql-LC612" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> assembly_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L613" class="blob-num js-line-number js-blob-rnum" data-line-number="613"></td> <td id="file-sp_dbpermissions-sql-LC613" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ASSEMBLY&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L614" class="blob-num js-line-number js-blob-rnum" data-line-number="614"></td> <td id="file-sp_dbpermissions-sql-LC614" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ASSEMBLY&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L615" class="blob-num js-line-number js-blob-rnum" data-line-number="615"></td> <td id="file-sp_dbpermissions-sql-LC615" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.assemblies</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L616" class="blob-num js-line-number js-blob-rnum" data-line-number="616"></td> <td id="file-sp_dbpermissions-sql-LC616" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L617" class="blob-num js-line-number js-blob-rnum" data-line-number="617"></td> <td id="file-sp_dbpermissions-sql-LC617" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L618" class="blob-num js-line-number js-blob-rnum" data-line-number="618"></td> <td id="file-sp_dbpermissions-sql-LC618" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @ObjectList2 <span class="pl-k">=</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L619" class="blob-num js-line-number js-blob-rnum" data-line-number="619"></td> <td id="file-sp_dbpermissions-sql-LC619" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT SCHEMA_NAME(sys.types.schema_id) <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L620" class="blob-num js-line-number js-blob-rnum" data-line-number="620"></td> <td id="file-sp_dbpermissions-sql-LC620" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L621" class="blob-num js-line-number js-blob-rnum" data-line-number="621"></td> <td id="file-sp_dbpermissions-sql-LC621" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> user_type_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L622" class="blob-num js-line-number js-blob-rnum" data-line-number="622"></td> <td id="file-sp_dbpermissions-sql-LC622" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>TYPE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L623" class="blob-num js-line-number js-blob-rnum" data-line-number="623"></td> <td id="file-sp_dbpermissions-sql-LC623" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>TYPE&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L624" class="blob-num js-line-number js-blob-rnum" data-line-number="624"></td> <td id="file-sp_dbpermissions-sql-LC624" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.types</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L625" class="blob-num js-line-number js-blob-rnum" data-line-number="625"></td> <td id="file-sp_dbpermissions-sql-LC625" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L626" class="blob-num js-line-number js-blob-rnum" data-line-number="626"></td> <td id="file-sp_dbpermissions-sql-LC626" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L627" class="blob-num js-line-number js-blob-rnum" data-line-number="627"></td> <td id="file-sp_dbpermissions-sql-LC627" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L628" class="blob-num js-line-number js-blob-rnum" data-line-number="628"></td> <td id="file-sp_dbpermissions-sql-LC628" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> service_contract_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L629" class="blob-num js-line-number js-blob-rnum" data-line-number="629"></td> <td id="file-sp_dbpermissions-sql-LC629" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SERVICE_CONTRACT&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L630" class="blob-num js-line-number js-blob-rnum" data-line-number="630"></td> <td id="file-sp_dbpermissions-sql-LC630" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>CONTRACT&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L631" class="blob-num js-line-number js-blob-rnum" data-line-number="631"></td> <td id="file-sp_dbpermissions-sql-LC631" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.service_contracts</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L632" class="blob-num js-line-number js-blob-rnum" data-line-number="632"></td> <td id="file-sp_dbpermissions-sql-LC632" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L633" class="blob-num js-line-number js-blob-rnum" data-line-number="633"></td> <td id="file-sp_dbpermissions-sql-LC633" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L634" class="blob-num js-line-number js-blob-rnum" data-line-number="634"></td> <td id="file-sp_dbpermissions-sql-LC634" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L635" class="blob-num js-line-number js-blob-rnum" data-line-number="635"></td> <td id="file-sp_dbpermissions-sql-LC635" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> service_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L636" class="blob-num js-line-number js-blob-rnum" data-line-number="636"></td> <td id="file-sp_dbpermissions-sql-LC636" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SERVICE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L637" class="blob-num js-line-number js-blob-rnum" data-line-number="637"></td> <td id="file-sp_dbpermissions-sql-LC637" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SERVICE&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L638" class="blob-num js-line-number js-blob-rnum" data-line-number="638"></td> <td id="file-sp_dbpermissions-sql-LC638" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.services</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L639" class="blob-num js-line-number js-blob-rnum" data-line-number="639"></td> <td id="file-sp_dbpermissions-sql-LC639" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L640" class="blob-num js-line-number js-blob-rnum" data-line-number="640"></td> <td id="file-sp_dbpermissions-sql-LC640" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L641" class="blob-num js-line-number js-blob-rnum" data-line-number="641"></td> <td id="file-sp_dbpermissions-sql-LC641" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L642" class="blob-num js-line-number js-blob-rnum" data-line-number="642"></td> <td id="file-sp_dbpermissions-sql-LC642" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> remote_service_binding_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L643" class="blob-num js-line-number js-blob-rnum" data-line-number="643"></td> <td id="file-sp_dbpermissions-sql-LC643" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>REMOTE_SERVICE_BINDING&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L644" class="blob-num js-line-number js-blob-rnum" data-line-number="644"></td> <td id="file-sp_dbpermissions-sql-LC644" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>REMOTE SERVICE BINDING&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L645" class="blob-num js-line-number js-blob-rnum" data-line-number="645"></td> <td id="file-sp_dbpermissions-sql-LC645" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.remote_service_bindings</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L646" class="blob-num js-line-number js-blob-rnum" data-line-number="646"></td> <td id="file-sp_dbpermissions-sql-LC646" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L647" class="blob-num js-line-number js-blob-rnum" data-line-number="647"></td> <td id="file-sp_dbpermissions-sql-LC647" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L648" class="blob-num js-line-number js-blob-rnum" data-line-number="648"></td> <td id="file-sp_dbpermissions-sql-LC648" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L649" class="blob-num js-line-number js-blob-rnum" data-line-number="649"></td> <td id="file-sp_dbpermissions-sql-LC649" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> route_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L650" class="blob-num js-line-number js-blob-rnum" data-line-number="650"></td> <td id="file-sp_dbpermissions-sql-LC650" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ROUTE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L651" class="blob-num js-line-number js-blob-rnum" data-line-number="651"></td> <td id="file-sp_dbpermissions-sql-LC651" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ROUTE&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L652" class="blob-num js-line-number js-blob-rnum" data-line-number="652"></td> <td id="file-sp_dbpermissions-sql-LC652" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.routes</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L653" class="blob-num js-line-number js-blob-rnum" data-line-number="653"></td> <td id="file-sp_dbpermissions-sql-LC653" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L654" class="blob-num js-line-number js-blob-rnum" data-line-number="654"></td> <td id="file-sp_dbpermissions-sql-LC654" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L655" class="blob-num js-line-number js-blob-rnum" data-line-number="655"></td> <td id="file-sp_dbpermissions-sql-LC655" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L656" class="blob-num js-line-number js-blob-rnum" data-line-number="656"></td> <td id="file-sp_dbpermissions-sql-LC656" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> fulltext_catalog_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L657" class="blob-num js-line-number js-blob-rnum" data-line-number="657"></td> <td id="file-sp_dbpermissions-sql-LC657" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>FULLTEXT_CATALOG&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L658" class="blob-num js-line-number js-blob-rnum" data-line-number="658"></td> <td id="file-sp_dbpermissions-sql-LC658" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>FULLTEXT CATALOG&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L659" class="blob-num js-line-number js-blob-rnum" data-line-number="659"></td> <td id="file-sp_dbpermissions-sql-LC659" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.fulltext_catalogs</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L660" class="blob-num js-line-number js-blob-rnum" data-line-number="660"></td> <td id="file-sp_dbpermissions-sql-LC660" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L661" class="blob-num js-line-number js-blob-rnum" data-line-number="661"></td> <td id="file-sp_dbpermissions-sql-LC661" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L662" class="blob-num js-line-number js-blob-rnum" data-line-number="662"></td> <td id="file-sp_dbpermissions-sql-LC662" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L663" class="blob-num js-line-number js-blob-rnum" data-line-number="663"></td> <td id="file-sp_dbpermissions-sql-LC663" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> symmetric_key_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L664" class="blob-num js-line-number js-blob-rnum" data-line-number="664"></td> <td id="file-sp_dbpermissions-sql-LC664" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SYMMETRIC_KEYS&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L665" class="blob-num js-line-number js-blob-rnum" data-line-number="665"></td> <td id="file-sp_dbpermissions-sql-LC665" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>SYMMETRIC KEY&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L666" class="blob-num js-line-number js-blob-rnum" data-line-number="666"></td> <td id="file-sp_dbpermissions-sql-LC666" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.symmetric_keys</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L667" class="blob-num js-line-number js-blob-rnum" data-line-number="667"></td> <td id="file-sp_dbpermissions-sql-LC667" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L668" class="blob-num js-line-number js-blob-rnum" data-line-number="668"></td> <td id="file-sp_dbpermissions-sql-LC668" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L669" class="blob-num js-line-number js-blob-rnum" data-line-number="669"></td> <td id="file-sp_dbpermissions-sql-LC669" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L670" class="blob-num js-line-number js-blob-rnum" data-line-number="670"></td> <td id="file-sp_dbpermissions-sql-LC670" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> certificate_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L671" class="blob-num js-line-number js-blob-rnum" data-line-number="671"></td> <td id="file-sp_dbpermissions-sql-LC671" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>CERTIFICATE&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L672" class="blob-num js-line-number js-blob-rnum" data-line-number="672"></td> <td id="file-sp_dbpermissions-sql-LC672" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>CERTIFICATE&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L673" class="blob-num js-line-number js-blob-rnum" data-line-number="673"></td> <td id="file-sp_dbpermissions-sql-LC673" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.certificates</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L674" class="blob-num js-line-number js-blob-rnum" data-line-number="674"></td> <td id="file-sp_dbpermissions-sql-LC674" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L675" class="blob-num js-line-number js-blob-rnum" data-line-number="675"></td> <td id="file-sp_dbpermissions-sql-LC675" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> SELECT NULL AS SchemaName, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L676" class="blob-num js-line-number js-blob-rnum" data-line-number="676"></td> <td id="file-sp_dbpermissions-sql-LC676" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> name <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> AS name, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L677" class="blob-num js-line-number js-blob-rnum" data-line-number="677"></td> <td id="file-sp_dbpermissions-sql-LC677" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> asymmetric_key_id AS id, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L678" class="blob-num js-line-number js-blob-rnum" data-line-number="678"></td> <td id="file-sp_dbpermissions-sql-LC678" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ASYMMETRIC_KEY&#39;<span class="pl-pds">&#39;</span> AS class_desc,</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L679" class="blob-num js-line-number js-blob-rnum" data-line-number="679"></td> <td id="file-sp_dbpermissions-sql-LC679" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>ASYMMETRIC KEY&#39;<span class="pl-pds">&#39;</span> AS class </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L680" class="blob-num js-line-number js-blob-rnum" data-line-number="680"></td> <td id="file-sp_dbpermissions-sql-LC680" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.asymmetric_keys </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L681" class="blob-num js-line-number js-blob-rnum" data-line-number="681"></td> <td id="file-sp_dbpermissions-sql-LC681" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ) <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L682" class="blob-num js-line-number js-blob-rnum" data-line-number="682"></td> <td id="file-sp_dbpermissions-sql-LC682" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L683" class="blob-num js-line-number js-blob-rnum" data-line-number="683"></td> <td id="file-sp_dbpermissions-sql-LC683" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L684" class="blob-num js-line-number js-blob-rnum" data-line-number="684"></td> <td id="file-sp_dbpermissions-sql-LC684" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>SELECT &#39;</span> <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@AllDBNames&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AS DBName,&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L685" class="blob-num js-line-number js-blob-rnum" data-line-number="685"></td> <td id="file-sp_dbpermissions-sql-LC685" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> Grantee.principal_id AS GranteePrincipalId, Grantee.name AS GranteeName, Grantor.name AS GrantorName, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L686" class="blob-num js-line-number js-blob-rnum" data-line-number="686"></td> <td id="file-sp_dbpermissions-sql-LC686" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> Permission.class_desc, Permission.permission_name, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L687" class="blob-num js-line-number js-blob-rnum" data-line-number="687"></td> <td id="file-sp_dbpermissions-sql-LC687" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ObjectList.name AS ObjectName, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L688" class="blob-num js-line-number js-blob-rnum" data-line-number="688"></td> <td id="file-sp_dbpermissions-sql-LC688" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ObjectList.SchemaName, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L689" class="blob-num js-line-number js-blob-rnum" data-line-number="689"></td> <td id="file-sp_dbpermissions-sql-LC689" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> Permission.state_desc, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L690" class="blob-num js-line-number js-blob-rnum" data-line-number="690"></td> <td id="file-sp_dbpermissions-sql-LC690" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Grantee.is_fixed_role = 0 AND Grantee.name &lt;&gt; &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L691" class="blob-num js-line-number js-blob-rnum" data-line-number="691"></td> <td id="file-sp_dbpermissions-sql-LC691" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L692" class="blob-num js-line-number js-blob-rnum" data-line-number="692"></td> <td id="file-sp_dbpermissions-sql-LC692" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>REVOKE &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L693" class="blob-num js-line-number js-blob-rnum" data-line-number="693"></td> <td id="file-sp_dbpermissions-sql-LC693" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Permission.[state] = &#39;<span class="pl-pds">&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>GRANT OPTION FOR &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L694" class="blob-num js-line-number js-blob-rnum" data-line-number="694"></td> <td id="file-sp_dbpermissions-sql-LC694" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> + Permission.permission_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L695" class="blob-num js-line-number js-blob-rnum" data-line-number="695"></td> <td id="file-sp_dbpermissions-sql-LC695" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Permission.major_id &lt;&gt; 0 THEN &#39;<span class="pl-pds">&#39;</span> ON &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L696" class="blob-num js-line-number js-blob-rnum" data-line-number="696"></td> <td id="file-sp_dbpermissions-sql-LC696" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ObjectList.class + &#39;<span class="pl-pds">&#39;</span>::&#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L697" class="blob-num js-line-number js-blob-rnum" data-line-number="697"></td> <td id="file-sp_dbpermissions-sql-LC697" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(QUOTENAME(ObjectList.SchemaName),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L698" class="blob-num js-line-number js-blob-rnum" data-line-number="698"></td> <td id="file-sp_dbpermissions-sql-LC698" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN ObjectList.SchemaName + ObjectList.name IS NULL THEN &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>.&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L699" class="blob-num js-line-number js-blob-rnum" data-line-number="699"></td> <td id="file-sp_dbpermissions-sql-LC699" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(QUOTENAME(ObjectList.name),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L700" class="blob-num js-line-number js-blob-rnum" data-line-number="700"></td> <td id="file-sp_dbpermissions-sql-LC700" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> + &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L701" class="blob-num js-line-number js-blob-rnum" data-line-number="701"></td> <td id="file-sp_dbpermissions-sql-LC701" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> FROM &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Grantee.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> END AS RevokeScript, &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L702" class="blob-num js-line-number js-blob-rnum" data-line-number="702"></td> <td id="file-sp_dbpermissions-sql-LC702" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Grantee.is_fixed_role = 0 AND Grantee.name &lt;&gt; &#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span> THEN &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L703" class="blob-num js-line-number js-blob-rnum" data-line-number="703"></td> <td id="file-sp_dbpermissions-sql-LC703" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span>USE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(@AllDBNames) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L704" class="blob-num js-line-number js-blob-rnum" data-line-number="704"></td> <td id="file-sp_dbpermissions-sql-LC704" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Permission.[state] = &#39;<span class="pl-pds">&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>GRANT&#39;<span class="pl-pds">&#39;</span> ELSE Permission.state_desc&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L705" class="blob-num js-line-number js-blob-rnum" data-line-number="705"></td> <td id="file-sp_dbpermissions-sql-LC705" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L706" class="blob-num js-line-number js-blob-rnum" data-line-number="706"></td> <td id="file-sp_dbpermissions-sql-LC706" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> + Permission.permission_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L707" class="blob-num js-line-number js-blob-rnum" data-line-number="707"></td> <td id="file-sp_dbpermissions-sql-LC707" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Permission.major_id &lt;&gt; 0 THEN &#39;<span class="pl-pds">&#39;</span> ON &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L708" class="blob-num js-line-number js-blob-rnum" data-line-number="708"></td> <td id="file-sp_dbpermissions-sql-LC708" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ObjectList.class + &#39;<span class="pl-pds">&#39;</span>::&#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L709" class="blob-num js-line-number js-blob-rnum" data-line-number="709"></td> <td id="file-sp_dbpermissions-sql-LC709" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(QUOTENAME(ObjectList.SchemaName),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L710" class="blob-num js-line-number js-blob-rnum" data-line-number="710"></td> <td id="file-sp_dbpermissions-sql-LC710" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN ObjectList.SchemaName + ObjectList.name IS NULL THEN &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>.&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L711" class="blob-num js-line-number js-blob-rnum" data-line-number="711"></td> <td id="file-sp_dbpermissions-sql-LC711" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(QUOTENAME(ObjectList.name),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L712" class="blob-num js-line-number js-blob-rnum" data-line-number="712"></td> <td id="file-sp_dbpermissions-sql-LC712" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> + &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L713" class="blob-num js-line-number js-blob-rnum" data-line-number="713"></td> <td id="file-sp_dbpermissions-sql-LC713" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> TO &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Grantee.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L714" class="blob-num js-line-number js-blob-rnum" data-line-number="714"></td> <td id="file-sp_dbpermissions-sql-LC714" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> CASE WHEN Permission.[state] = &#39;<span class="pl-pds">&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span> WITH GRANT OPTION &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L715" class="blob-num js-line-number js-blob-rnum" data-line-number="715"></td> <td id="file-sp_dbpermissions-sql-LC715" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> AS &#39;<span class="pl-pds">&#39;</span>+ QUOTENAME(Grantor.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS GrantScript &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L716" class="blob-num js-line-number js-blob-rnum" data-line-number="716"></td> <td id="file-sp_dbpermissions-sql-LC716" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>FROM sys.database_permissions Permission &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L717" class="blob-num js-line-number js-blob-rnum" data-line-number="717"></td> <td id="file-sp_dbpermissions-sql-LC717" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>JOIN sys.database_principals Grantee &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L718" class="blob-num js-line-number js-blob-rnum" data-line-number="718"></td> <td id="file-sp_dbpermissions-sql-LC718" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON Permission.grantee_principal_id = Grantee.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L719" class="blob-num js-line-number js-blob-rnum" data-line-number="719"></td> <td id="file-sp_dbpermissions-sql-LC719" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>JOIN sys.database_principals Grantor &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L720" class="blob-num js-line-number js-blob-rnum" data-line-number="720"></td> <td id="file-sp_dbpermissions-sql-LC720" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON Permission.grantor_principal_id = Grantor.principal_id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L721" class="blob-num js-line-number js-blob-rnum" data-line-number="721"></td> <td id="file-sp_dbpermissions-sql-LC721" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LEFT OUTER JOIN ObjectList &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L722" class="blob-num js-line-number js-blob-rnum" data-line-number="722"></td> <td id="file-sp_dbpermissions-sql-LC722" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON Permission.major_id = ObjectList.id &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L723" class="blob-num js-line-number js-blob-rnum" data-line-number="723"></td> <td id="file-sp_dbpermissions-sql-LC723" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.class_desc = ObjectList.class_desc &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L724" class="blob-num js-line-number js-blob-rnum" data-line-number="724"></td> <td id="file-sp_dbpermissions-sql-LC724" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>WHERE 1=1 &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L725" class="blob-num js-line-number js-blob-rnum" data-line-number="725"></td> <td id="file-sp_dbpermissions-sql-LC725" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L726" class="blob-num js-line-number js-blob-rnum" data-line-number="726"></td> <td id="file-sp_dbpermissions-sql-LC726" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,@Role)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L727" class="blob-num js-line-number js-blob-rnum" data-line-number="727"></td> <td id="file-sp_dbpermissions-sql-LC727" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L728" class="blob-num js-line-number js-blob-rnum" data-line-number="728"></td> <td id="file-sp_dbpermissions-sql-LC728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L729" class="blob-num js-line-number js-blob-rnum" data-line-number="729"></td> <td id="file-sp_dbpermissions-sql-LC729" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L730" class="blob-num js-line-number js-blob-rnum" data-line-number="730"></td> <td id="file-sp_dbpermissions-sql-LC730" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(@Principal,@Role) &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L731" class="blob-num js-line-number js-blob-rnum" data-line-number="731"></td> <td id="file-sp_dbpermissions-sql-LC731" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L732" class="blob-num js-line-number js-blob-rnum" data-line-number="732"></td> <td id="file-sp_dbpermissions-sql-LC732" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L733" class="blob-num js-line-number js-blob-rnum" data-line-number="733"></td> <td id="file-sp_dbpermissions-sql-LC733" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L734" class="blob-num js-line-number js-blob-rnum" data-line-number="734"></td> <td id="file-sp_dbpermissions-sql-LC734" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L735" class="blob-num js-line-number js-blob-rnum" data-line-number="735"></td> <td id="file-sp_dbpermissions-sql-LC735" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L736" class="blob-num js-line-number js-blob-rnum" data-line-number="736"></td> <td id="file-sp_dbpermissions-sql-LC736" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L737" class="blob-num js-line-number js-blob-rnum" data-line-number="737"></td> <td id="file-sp_dbpermissions-sql-LC737" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L738" class="blob-num js-line-number js-blob-rnum" data-line-number="738"></td> <td id="file-sp_dbpermissions-sql-LC738" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@ObjectName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L739" class="blob-num js-line-number js-blob-rnum" data-line-number="739"></td> <td id="file-sp_dbpermissions-sql-LC739" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L740" class="blob-num js-line-number js-blob-rnum" data-line-number="740"></td> <td id="file-sp_dbpermissions-sql-LC740" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND ObjectList.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@ObjectName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L741" class="blob-num js-line-number js-blob-rnum" data-line-number="741"></td> <td id="file-sp_dbpermissions-sql-LC741" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L742" class="blob-num js-line-number js-blob-rnum" data-line-number="742"></td> <td id="file-sp_dbpermissions-sql-LC742" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND ObjectList.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @ObjectName &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L743" class="blob-num js-line-number js-blob-rnum" data-line-number="743"></td> <td id="file-sp_dbpermissions-sql-LC743" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L744" class="blob-num js-line-number js-blob-rnum" data-line-number="744"></td> <td id="file-sp_dbpermissions-sql-LC744" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Permission) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L745" class="blob-num js-line-number js-blob-rnum" data-line-number="745"></td> <td id="file-sp_dbpermissions-sql-LC745" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L746" class="blob-num js-line-number js-blob-rnum" data-line-number="746"></td> <td id="file-sp_dbpermissions-sql-LC746" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Permission,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L747" class="blob-num js-line-number js-blob-rnum" data-line-number="747"></td> <td id="file-sp_dbpermissions-sql-LC747" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L748" class="blob-num js-line-number js-blob-rnum" data-line-number="748"></td> <td id="file-sp_dbpermissions-sql-LC748" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Permission.permission_name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Permission&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L749" class="blob-num js-line-number js-blob-rnum" data-line-number="749"></td> <td id="file-sp_dbpermissions-sql-LC749" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L750" class="blob-num js-line-number js-blob-rnum" data-line-number="750"></td> <td id="file-sp_dbpermissions-sql-LC750" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@LoginName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L751" class="blob-num js-line-number js-blob-rnum" data-line-number="751"></td> <td id="file-sp_dbpermissions-sql-LC751" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L752" class="blob-num js-line-number js-blob-rnum" data-line-number="752"></td> <td id="file-sp_dbpermissions-sql-LC752" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L753" class="blob-num js-line-number js-blob-rnum" data-line-number="753"></td> <td id="file-sp_dbpermissions-sql-LC753" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND EXISTS (SELECT 1 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L754" class="blob-num js-line-number js-blob-rnum" data-line-number="754"></td> <td id="file-sp_dbpermissions-sql-LC754" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> FROM sys.server_principals SrvPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L755" class="blob-num js-line-number js-blob-rnum" data-line-number="755"></td> <td id="file-sp_dbpermissions-sql-LC755" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> WHERE SrvPrincipals.sid = Grantee.sid &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L756" class="blob-num js-line-number js-blob-rnum" data-line-number="756"></td> <td id="file-sp_dbpermissions-sql-LC756" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.sid NOT IN (0x00, 0x01) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L757" class="blob-num js-line-number js-blob-rnum" data-line-number="757"></td> <td id="file-sp_dbpermissions-sql-LC757" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.type NOT IN (&#39;<span class="pl-pds">&#39;</span>R&#39;<span class="pl-pds">&#39;</span>) &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L758" class="blob-num js-line-number js-blob-rnum" data-line-number="758"></td> <td id="file-sp_dbpermissions-sql-LC758" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L759" class="blob-num js-line-number js-blob-rnum" data-line-number="759"></td> <td id="file-sp_dbpermissions-sql-LC759" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@LoginName,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L760" class="blob-num js-line-number js-blob-rnum" data-line-number="760"></td> <td id="file-sp_dbpermissions-sql-LC760" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L761" class="blob-num js-line-number js-blob-rnum" data-line-number="761"></td> <td id="file-sp_dbpermissions-sql-LC761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND SrvPrincipals.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @LoginName&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L762" class="blob-num js-line-number js-blob-rnum" data-line-number="762"></td> <td id="file-sp_dbpermissions-sql-LC762" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L763" class="blob-num js-line-number js-blob-rnum" data-line-number="763"></td> <td id="file-sp_dbpermissions-sql-LC763" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>)&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L764" class="blob-num js-line-number js-blob-rnum" data-line-number="764"></td> <td id="file-sp_dbpermissions-sql-LC764" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L765" class="blob-num js-line-number js-blob-rnum" data-line-number="765"></td> <td id="file-sp_dbpermissions-sql-LC765" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L766" class="blob-num js-line-number js-blob-rnum" data-line-number="766"></td> <td id="file-sp_dbpermissions-sql-LC766" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L767" class="blob-num js-line-number js-blob-rnum" data-line-number="767"></td> <td id="file-sp_dbpermissions-sql-LC767" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L768" class="blob-num js-line-number js-blob-rnum" data-line-number="768"></td> <td id="file-sp_dbpermissions-sql-LC768" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND Grantee.name NOT IN (&#39;<span class="pl-pds">&#39;</span>dbo&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>INFORMATION_SCHEMA&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>guest&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>sys&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L769" class="blob-num js-line-number js-blob-rnum" data-line-number="769"></td> <td id="file-sp_dbpermissions-sql-LC769" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L770" class="blob-num js-line-number js-blob-rnum" data-line-number="770"></td> <td id="file-sp_dbpermissions-sql-LC770" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L771" class="blob-num js-line-number js-blob-rnum" data-line-number="771"></td> <td id="file-sp_dbpermissions-sql-LC771" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L772" class="blob-num js-line-number js-blob-rnum" data-line-number="772"></td> <td id="file-sp_dbpermissions-sql-LC772" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>-- Database &amp; object Permissions&#39;</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L773" class="blob-num js-line-number js-blob-rnum" data-line-number="773"></td> <td id="file-sp_dbpermissions-sql-LC773" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@use <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L774" class="blob-num js-line-number js-blob-rnum" data-line-number="774"></td> <td id="file-sp_dbpermissions-sql-LC774" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@ObjectList <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L775" class="blob-num js-line-number js-blob-rnum" data-line-number="775"></td> <td id="file-sp_dbpermissions-sql-LC775" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@ObjectList2 <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L776" class="blob-num js-line-number js-blob-rnum" data-line-number="776"></td> <td id="file-sp_dbpermissions-sql-LC776" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-c1">CAST</span>(@sql <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>))</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L777" class="blob-num js-line-number js-blob-rnum" data-line-number="777"></td> <td id="file-sp_dbpermissions-sql-LC777" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L778" class="blob-num js-line-number js-blob-rnum" data-line-number="778"></td> <td id="file-sp_dbpermissions-sql-LC778" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L779" class="blob-num js-line-number js-blob-rnum" data-line-number="779"></td> <td id="file-sp_dbpermissions-sql-LC779" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L780" class="blob-num js-line-number js-blob-rnum" data-line-number="780"></td> <td id="file-sp_dbpermissions-sql-LC780" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##DBPermissions&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L781" class="blob-num js-line-number js-blob-rnum" data-line-number="781"></td> <td id="file-sp_dbpermissions-sql-LC781" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBPermissions</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L782" class="blob-num js-line-number js-blob-rnum" data-line-number="782"></td> <td id="file-sp_dbpermissions-sql-LC782" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L783" class="blob-num js-line-number js-blob-rnum" data-line-number="783"></td> <td id="file-sp_dbpermissions-sql-LC783" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L784" class="blob-num js-line-number js-blob-rnum" data-line-number="784"></td> <td id="file-sp_dbpermissions-sql-LC784" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##DBPermissions (</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L785" class="blob-num js-line-number js-blob-rnum" data-line-number="785"></td> <td id="file-sp_dbpermissions-sql-LC785" class="blob-code blob-code-inner js-file-line"> DBName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L786" class="blob-num js-line-number js-blob-rnum" data-line-number="786"></td> <td id="file-sp_dbpermissions-sql-LC786" class="blob-code blob-code-inner js-file-line"> GranteePrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L787" class="blob-num js-line-number js-blob-rnum" data-line-number="787"></td> <td id="file-sp_dbpermissions-sql-LC787" class="blob-code blob-code-inner js-file-line"> GranteeName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L788" class="blob-num js-line-number js-blob-rnum" data-line-number="788"></td> <td id="file-sp_dbpermissions-sql-LC788" class="blob-code blob-code-inner js-file-line"> GrantorName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L789" class="blob-num js-line-number js-blob-rnum" data-line-number="789"></td> <td id="file-sp_dbpermissions-sql-LC789" class="blob-code blob-code-inner js-file-line"> class_desc <span class="pl-k">nvarchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L790" class="blob-num js-line-number js-blob-rnum" data-line-number="790"></td> <td id="file-sp_dbpermissions-sql-LC790" class="blob-code blob-code-inner js-file-line"> permission_name <span class="pl-k">nvarchar</span>(<span class="pl-c1">128</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L791" class="blob-num js-line-number js-blob-rnum" data-line-number="791"></td> <td id="file-sp_dbpermissions-sql-LC791" class="blob-code blob-code-inner js-file-line"> ObjectName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L792" class="blob-num js-line-number js-blob-rnum" data-line-number="792"></td> <td id="file-sp_dbpermissions-sql-LC792" class="blob-code blob-code-inner js-file-line"> SchemaName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L793" class="blob-num js-line-number js-blob-rnum" data-line-number="793"></td> <td id="file-sp_dbpermissions-sql-LC793" class="blob-code blob-code-inner js-file-line"> state_desc <span class="pl-k">nvarchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L794" class="blob-num js-line-number js-blob-rnum" data-line-number="794"></td> <td id="file-sp_dbpermissions-sql-LC794" class="blob-code blob-code-inner js-file-line"> RevokeScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L795" class="blob-num js-line-number js-blob-rnum" data-line-number="795"></td> <td id="file-sp_dbpermissions-sql-LC795" class="blob-code blob-code-inner js-file-line"> GrantScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L796" class="blob-num js-line-number js-blob-rnum" data-line-number="796"></td> <td id="file-sp_dbpermissions-sql-LC796" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L797" class="blob-num js-line-number js-blob-rnum" data-line-number="797"></td> <td id="file-sp_dbpermissions-sql-LC797" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L798" class="blob-num js-line-number js-blob-rnum" data-line-number="798"></td> <td id="file-sp_dbpermissions-sql-LC798" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Add insert statement to @sql</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L799" class="blob-num js-line-number js-blob-rnum" data-line-number="799"></td> <td id="file-sp_dbpermissions-sql-LC799" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @use <span class="pl-k">+</span> @ObjectList <span class="pl-k">+</span> @ObjectList2 <span class="pl-k">+</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L800" class="blob-num js-line-number js-blob-rnum" data-line-number="800"></td> <td id="file-sp_dbpermissions-sql-LC800" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>INSERT INTO ##DBPermissions &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L801" class="blob-num js-line-number js-blob-rnum" data-line-number="801"></td> <td id="file-sp_dbpermissions-sql-LC801" class="blob-code blob-code-inner js-file-line"> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L802" class="blob-num js-line-number js-blob-rnum" data-line-number="802"></td> <td id="file-sp_dbpermissions-sql-LC802" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L803" class="blob-num js-line-number js-blob-rnum" data-line-number="803"></td> <td id="file-sp_dbpermissions-sql-LC803" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DBName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>All&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L804" class="blob-num js-line-number js-blob-rnum" data-line-number="804"></td> <td id="file-sp_dbpermissions-sql-LC804" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L805" class="blob-num js-line-number js-blob-rnum" data-line-number="805"></td> <td id="file-sp_dbpermissions-sql-LC805" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Declare a READ_ONLY cursor to loop through the databases</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L806" class="blob-num js-line-number js-blob-rnum" data-line-number="806"></td> <td id="file-sp_dbpermissions-sql-LC806" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DECLARE</span> cur_DBList <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L807" class="blob-num js-line-number js-blob-rnum" data-line-number="807"></td> <td id="file-sp_dbpermissions-sql-LC807" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">READ_ONLY</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L808" class="blob-num js-line-number js-blob-rnum" data-line-number="808"></td> <td id="file-sp_dbpermissions-sql-LC808" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">SELECT</span> <span class="pl-k">name</span> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">databases</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L809" class="blob-num js-line-number js-blob-rnum" data-line-number="809"></td> <td id="file-sp_dbpermissions-sql-LC809" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> <span class="pl-k">state</span> <span class="pl-k">IN</span> (<span class="pl-c1">0</span>,<span class="pl-c1">5</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L810" class="blob-num js-line-number js-blob-rnum" data-line-number="810"></td> <td id="file-sp_dbpermissions-sql-LC810" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> source_database_id <span class="pl-k">IS</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L811" class="blob-num js-line-number js-blob-rnum" data-line-number="811"></td> <td id="file-sp_dbpermissions-sql-LC811" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> <span class="pl-k">name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L812" class="blob-num js-line-number js-blob-rnum" data-line-number="812"></td> <td id="file-sp_dbpermissions-sql-LC812" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L813" class="blob-num js-line-number js-blob-rnum" data-line-number="813"></td> <td id="file-sp_dbpermissions-sql-LC813" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">OPEN</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L814" class="blob-num js-line-number js-blob-rnum" data-line-number="814"></td> <td id="file-sp_dbpermissions-sql-LC814" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L815" class="blob-num js-line-number js-blob-rnum" data-line-number="815"></td> <td id="file-sp_dbpermissions-sql-LC815" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L816" class="blob-num js-line-number js-blob-rnum" data-line-number="816"></td> <td id="file-sp_dbpermissions-sql-LC816" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHILE</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">1</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L817" class="blob-num js-line-number js-blob-rnum" data-line-number="817"></td> <td id="file-sp_dbpermissions-sql-LC817" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L818" class="blob-num js-line-number js-blob-rnum" data-line-number="818"></td> <td id="file-sp_dbpermissions-sql-LC818" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> (<span class="pl-c1">@@fetch_status</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-k">-</span><span class="pl-c1">2</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L819" class="blob-num js-line-number js-blob-rnum" data-line-number="819"></td> <td id="file-sp_dbpermissions-sql-LC819" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L820" class="blob-num js-line-number js-blob-rnum" data-line-number="820"></td> <td id="file-sp_dbpermissions-sql-LC820" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql2 <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@AllDBNames) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>;&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L821" class="blob-num js-line-number js-blob-rnum" data-line-number="821"></td> <td id="file-sp_dbpermissions-sql-LC821" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql2, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L822" class="blob-num js-line-number js-blob-rnum" data-line-number="822"></td> <td id="file-sp_dbpermissions-sql-LC822" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), @ObjectName sysname, </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L823" class="blob-num js-line-number js-blob-rnum" data-line-number="823"></td> <td id="file-sp_dbpermissions-sql-LC823" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @AllDBNames sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L824" class="blob-num js-line-number js-blob-rnum" data-line-number="824"></td> <td id="file-sp_dbpermissions-sql-LC824" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @AllDBNames, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L825" class="blob-num js-line-number js-blob-rnum" data-line-number="825"></td> <td id="file-sp_dbpermissions-sql-LC825" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> PRINT @sql2</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L826" class="blob-num js-line-number js-blob-rnum" data-line-number="826"></td> <td id="file-sp_dbpermissions-sql-LC826" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L827" class="blob-num js-line-number js-blob-rnum" data-line-number="827"></td> <td id="file-sp_dbpermissions-sql-LC827" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> cur_DBList <span class="pl-k">INTO</span> @AllDBNames</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L828" class="blob-num js-line-number js-blob-rnum" data-line-number="828"></td> <td id="file-sp_dbpermissions-sql-LC828" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L829" class="blob-num js-line-number js-blob-rnum" data-line-number="829"></td> <td id="file-sp_dbpermissions-sql-LC829" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L830" class="blob-num js-line-number js-blob-rnum" data-line-number="830"></td> <td id="file-sp_dbpermissions-sql-LC830" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CLOSE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L831" class="blob-num js-line-number js-blob-rnum" data-line-number="831"></td> <td id="file-sp_dbpermissions-sql-LC831" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DEALLOCATE</span> cur_DBList</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L832" class="blob-num js-line-number js-blob-rnum" data-line-number="832"></td> <td id="file-sp_dbpermissions-sql-LC832" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L833" class="blob-num js-line-number js-blob-rnum" data-line-number="833"></td> <td id="file-sp_dbpermissions-sql-LC833" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L834" class="blob-num js-line-number js-blob-rnum" data-line-number="834"></td> <td id="file-sp_dbpermissions-sql-LC834" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L835" class="blob-num js-line-number js-blob-rnum" data-line-number="835"></td> <td id="file-sp_dbpermissions-sql-LC835" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, N<span class="pl-s"><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30), </span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L836" class="blob-num js-line-number js-blob-rnum" data-line-number="836"></td> <td id="file-sp_dbpermissions-sql-LC836" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> @ObjectName sysname, @Permission sysname, @LoginName sysname<span class="pl-pds">&#39;</span></span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L837" class="blob-num js-line-number js-blob-rnum" data-line-number="837"></td> <td id="file-sp_dbpermissions-sql-LC837" class="blob-code blob-code-inner js-file-line"> @Principal, @Role, @Type, @ObjectName, @Permission, @LoginName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L838" class="blob-num js-line-number js-blob-rnum" data-line-number="838"></td> <td id="file-sp_dbpermissions-sql-LC838" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L839" class="blob-num js-line-number js-blob-rnum" data-line-number="839"></td> <td id="file-sp_dbpermissions-sql-LC839" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L840" class="blob-num js-line-number js-blob-rnum" data-line-number="840"></td> <td id="file-sp_dbpermissions-sql-LC840" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L841" class="blob-num js-line-number js-blob-rnum" data-line-number="841"></td> <td id="file-sp_dbpermissions-sql-LC841" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L842" class="blob-num js-line-number js-blob-rnum" data-line-number="842"></td> <td id="file-sp_dbpermissions-sql-LC842" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L843" class="blob-num js-line-number js-blob-rnum" data-line-number="843"></td> <td id="file-sp_dbpermissions-sql-LC843" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>None&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L844" class="blob-num js-line-number js-blob-rnum" data-line-number="844"></td> <td id="file-sp_dbpermissions-sql-LC844" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L845" class="blob-num js-line-number js-blob-rnum" data-line-number="845"></td> <td id="file-sp_dbpermissions-sql-LC845" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>CreateOnly&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L846" class="blob-num js-line-number js-blob-rnum" data-line-number="846"></td> <td id="file-sp_dbpermissions-sql-LC846" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L847" class="blob-num js-line-number js-blob-rnum" data-line-number="847"></td> <td id="file-sp_dbpermissions-sql-LC847" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> CreateScript <span class="pl-k">FROM</span> ##DBPrincipals <span class="pl-k">WHERE</span> CreateScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L848" class="blob-num js-line-number js-blob-rnum" data-line-number="848"></td> <td id="file-sp_dbpermissions-sql-LC848" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L849" class="blob-num js-line-number js-blob-rnum" data-line-number="849"></td> <td id="file-sp_dbpermissions-sql-LC849" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> AddScript <span class="pl-k">FROM</span> ##DBRoles <span class="pl-k">WHERE</span> AddScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L850" class="blob-num js-line-number js-blob-rnum" data-line-number="850"></td> <td id="file-sp_dbpermissions-sql-LC850" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L851" class="blob-num js-line-number js-blob-rnum" data-line-number="851"></td> <td id="file-sp_dbpermissions-sql-LC851" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> GrantScript <span class="pl-k">FROM</span> ##DBPermissions <span class="pl-k">WHERE</span> GrantScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L852" class="blob-num js-line-number js-blob-rnum" data-line-number="852"></td> <td id="file-sp_dbpermissions-sql-LC852" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L853" class="blob-num js-line-number js-blob-rnum" data-line-number="853"></td> <td id="file-sp_dbpermissions-sql-LC853" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>DropOnly&#39;</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L854" class="blob-num js-line-number js-blob-rnum" data-line-number="854"></td> <td id="file-sp_dbpermissions-sql-LC854" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L855" class="blob-num js-line-number js-blob-rnum" data-line-number="855"></td> <td id="file-sp_dbpermissions-sql-LC855" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript <span class="pl-k">FROM</span> ##DBPrincipals <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L856" class="blob-num js-line-number js-blob-rnum" data-line-number="856"></td> <td id="file-sp_dbpermissions-sql-LC856" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L857" class="blob-num js-line-number js-blob-rnum" data-line-number="857"></td> <td id="file-sp_dbpermissions-sql-LC857" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript <span class="pl-k">FROM</span> ##DBRoles <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L858" class="blob-num js-line-number js-blob-rnum" data-line-number="858"></td> <td id="file-sp_dbpermissions-sql-LC858" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L859" class="blob-num js-line-number js-blob-rnum" data-line-number="859"></td> <td id="file-sp_dbpermissions-sql-LC859" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> RevokeScript <span class="pl-k">FROM</span> ##DBPermissions <span class="pl-k">WHERE</span> RevokeScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L860" class="blob-num js-line-number js-blob-rnum" data-line-number="860"></td> <td id="file-sp_dbpermissions-sql-LC860" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L861" class="blob-num js-line-number js-blob-rnum" data-line-number="861"></td> <td id="file-sp_dbpermissions-sql-LC861" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ScriptOnly&#39;</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L862" class="blob-num js-line-number js-blob-rnum" data-line-number="862"></td> <td id="file-sp_dbpermissions-sql-LC862" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L863" class="blob-num js-line-number js-blob-rnum" data-line-number="863"></td> <td id="file-sp_dbpermissions-sql-LC863" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript, CreateScript <span class="pl-k">FROM</span> ##DBPrincipals <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> CreateScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L864" class="blob-num js-line-number js-blob-rnum" data-line-number="864"></td> <td id="file-sp_dbpermissions-sql-LC864" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L865" class="blob-num js-line-number js-blob-rnum" data-line-number="865"></td> <td id="file-sp_dbpermissions-sql-LC865" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript, AddScript <span class="pl-k">FROM</span> ##DBRoles <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> AddScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L866" class="blob-num js-line-number js-blob-rnum" data-line-number="866"></td> <td id="file-sp_dbpermissions-sql-LC866" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L867" class="blob-num js-line-number js-blob-rnum" data-line-number="867"></td> <td id="file-sp_dbpermissions-sql-LC867" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> RevokeScript, GrantScript <span class="pl-k">FROM</span> ##DBPermissions <span class="pl-k">WHERE</span> RevokeScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> GrantScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L868" class="blob-num js-line-number js-blob-rnum" data-line-number="868"></td> <td id="file-sp_dbpermissions-sql-LC868" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L869" class="blob-num js-line-number js-blob-rnum" data-line-number="869"></td> <td id="file-sp_dbpermissions-sql-LC869" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Report&#39;</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L870" class="blob-num js-line-number js-blob-rnum" data-line-number="870"></td> <td id="file-sp_dbpermissions-sql-LC870" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L871" class="blob-num js-line-number js-blob-rnum" data-line-number="871"></td> <td id="file-sp_dbpermissions-sql-LC871" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, DBPrincipal, SrvPrincipal, <span class="pl-k">type</span>, <span class="pl-k">type_desc</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L872" class="blob-num js-line-number js-blob-rnum" data-line-number="872"></td> <td id="file-sp_dbpermissions-sql-LC872" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">STUFF</span>((<span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">DBRoles</span>.<span class="pl-c1">RoleName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L873" class="blob-num js-line-number js-blob-rnum" data-line-number="873"></td> <td id="file-sp_dbpermissions-sql-LC873" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBRoles</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L874" class="blob-num js-line-number js-blob-rnum" data-line-number="874"></td> <td id="file-sp_dbpermissions-sql-LC874" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> ##<span class="pl-c1">DBPrincipals</span>.<span class="pl-c1">DBName</span> <span class="pl-k">=</span> ##<span class="pl-c1">DBRoles</span>.<span class="pl-c1">DBName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L875" class="blob-num js-line-number js-blob-rnum" data-line-number="875"></td> <td id="file-sp_dbpermissions-sql-LC875" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> ##<span class="pl-c1">DBPrincipals</span>.<span class="pl-c1">DBPrincipalId</span> <span class="pl-k">=</span> ##<span class="pl-c1">DBRoles</span>.<span class="pl-c1">UserPrincipalId</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L876" class="blob-num js-line-number js-blob-rnum" data-line-number="876"></td> <td id="file-sp_dbpermissions-sql-LC876" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> ##<span class="pl-c1">DBRoles</span>.<span class="pl-c1">RoleName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L877" class="blob-num js-line-number js-blob-rnum" data-line-number="877"></td> <td id="file-sp_dbpermissions-sql-LC877" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-k">TYPE</span>).<span class="pl-k">value</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span>,<span class="pl-s"><span class="pl-pds">&#39;</span>VARCHAR(MAX)&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L878" class="blob-num js-line-number js-blob-rnum" data-line-number="878"></td> <td id="file-sp_dbpermissions-sql-LC878" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">AS</span> RoleMembership,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L879" class="blob-num js-line-number js-blob-rnum" data-line-number="879"></td> <td id="file-sp_dbpermissions-sql-LC879" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">STUFF</span>((<span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">state_desc</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">permission_name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> on &#39;</span> <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L880" class="blob-num js-line-number js-blob-rnum" data-line-number="880"></td> <td id="file-sp_dbpermissions-sql-LC880" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">COALESCE</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>OBJECT:&#39;</span><span class="pl-k">+</span>##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">SchemaName</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">ObjectName</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L881" class="blob-num js-line-number js-blob-rnum" data-line-number="881"></td> <td id="file-sp_dbpermissions-sql-LC881" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>SCHEMA:&#39;</span><span class="pl-k">+</span>##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">SchemaName</span>,</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L882" class="blob-num js-line-number js-blob-rnum" data-line-number="882"></td> <td id="file-sp_dbpermissions-sql-LC882" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>DATABASE:&#39;</span><span class="pl-k">+</span>##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">DBName</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L883" class="blob-num js-line-number js-blob-rnum" data-line-number="883"></td> <td id="file-sp_dbpermissions-sql-LC883" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBPermissions</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L884" class="blob-num js-line-number js-blob-rnum" data-line-number="884"></td> <td id="file-sp_dbpermissions-sql-LC884" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> ##<span class="pl-c1">DBPrincipals</span>.<span class="pl-c1">DBName</span> <span class="pl-k">=</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">DBName</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L885" class="blob-num js-line-number js-blob-rnum" data-line-number="885"></td> <td id="file-sp_dbpermissions-sql-LC885" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> ##<span class="pl-c1">DBPrincipals</span>.<span class="pl-c1">DBPrincipalId</span> <span class="pl-k">=</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">GranteePrincipalId</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L886" class="blob-num js-line-number js-blob-rnum" data-line-number="886"></td> <td id="file-sp_dbpermissions-sql-LC886" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">state_desc</span>, <span class="pl-c1">ISNULL</span>(##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">ObjectName</span>, ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">DBName</span>), ##<span class="pl-c1">DBPermissions</span>.<span class="pl-c1">permission_name</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L887" class="blob-num js-line-number js-blob-rnum" data-line-number="887"></td> <td id="file-sp_dbpermissions-sql-LC887" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-k">TYPE</span>).<span class="pl-k">value</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span>,<span class="pl-s"><span class="pl-pds">&#39;</span>VARCHAR(MAX)&#39;</span>)</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L888" class="blob-num js-line-number js-blob-rnum" data-line-number="888"></td> <td id="file-sp_dbpermissions-sql-LC888" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">AS</span> DirectPermissions</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L889" class="blob-num js-line-number js-blob-rnum" data-line-number="889"></td> <td id="file-sp_dbpermissions-sql-LC889" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBPrincipals</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L890" class="blob-num js-line-number js-blob-rnum" data-line-number="890"></td> <td id="file-sp_dbpermissions-sql-LC890" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> DBName, <span class="pl-k">type</span>, DBPrincipal</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L891" class="blob-num js-line-number js-blob-rnum" data-line-number="891"></td> <td id="file-sp_dbpermissions-sql-LC891" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L892" class="blob-num js-line-number js-blob-rnum" data-line-number="892"></td> <td id="file-sp_dbpermissions-sql-LC892" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-c"><span class="pl-c">--</span> &#39;Default&#39; or no match</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L893" class="blob-num js-line-number js-blob-rnum" data-line-number="893"></td> <td id="file-sp_dbpermissions-sql-LC893" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L894" class="blob-num js-line-number js-blob-rnum" data-line-number="894"></td> <td id="file-sp_dbpermissions-sql-LC894" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, DBPrincipal, SrvPrincipal, <span class="pl-k">type</span>, <span class="pl-k">type_desc</span>, default_schema_name, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L895" class="blob-num js-line-number js-blob-rnum" data-line-number="895"></td> <td id="file-sp_dbpermissions-sql-LC895" class="blob-code blob-code-inner js-file-line"> create_date, modify_date, is_fixed_role, RoleAuthorization, <span class="pl-k">sid</span>, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L896" class="blob-num js-line-number js-blob-rnum" data-line-number="896"></td> <td id="file-sp_dbpermissions-sql-LC896" class="blob-code blob-code-inner js-file-line"> DropScript, CreateScript</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L897" class="blob-num js-line-number js-blob-rnum" data-line-number="897"></td> <td id="file-sp_dbpermissions-sql-LC897" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBPrincipals <span class="pl-k">ORDER BY</span> DBName, DBPrincipal</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L898" class="blob-num js-line-number js-blob-rnum" data-line-number="898"></td> <td id="file-sp_dbpermissions-sql-LC898" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Role) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L899" class="blob-num js-line-number js-blob-rnum" data-line-number="899"></td> <td id="file-sp_dbpermissions-sql-LC899" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, UserName, RoleName, DropScript, AddScript </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L900" class="blob-num js-line-number js-blob-rnum" data-line-number="900"></td> <td id="file-sp_dbpermissions-sql-LC900" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBRoles <span class="pl-k">ORDER BY</span> DBName, RoleName, UserName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L901" class="blob-num js-line-number js-blob-rnum" data-line-number="901"></td> <td id="file-sp_dbpermissions-sql-LC901" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L902" class="blob-num js-line-number js-blob-rnum" data-line-number="902"></td> <td id="file-sp_dbpermissions-sql-LC902" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, UserName, RoleName, DropScript, AddScript </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L903" class="blob-num js-line-number js-blob-rnum" data-line-number="903"></td> <td id="file-sp_dbpermissions-sql-LC903" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBRoles <span class="pl-k">ORDER BY</span> DBName, UserName, RoleName</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L904" class="blob-num js-line-number js-blob-rnum" data-line-number="904"></td> <td id="file-sp_dbpermissions-sql-LC904" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L905" class="blob-num js-line-number js-blob-rnum" data-line-number="905"></td> <td id="file-sp_dbpermissions-sql-LC905" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@ObjectName) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L906" class="blob-num js-line-number js-blob-rnum" data-line-number="906"></td> <td id="file-sp_dbpermissions-sql-LC906" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, GranteeName, GrantorName, class_desc, permission_name, ObjectName, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L907" class="blob-num js-line-number js-blob-rnum" data-line-number="907"></td> <td id="file-sp_dbpermissions-sql-LC907" class="blob-code blob-code-inner js-file-line"> SchemaName, state_desc, RevokeScript, GrantScript </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L908" class="blob-num js-line-number js-blob-rnum" data-line-number="908"></td> <td id="file-sp_dbpermissions-sql-LC908" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBPermissions <span class="pl-k">ORDER BY</span> DBName, SchemaName, ObjectName, GranteeName, permission_name</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L909" class="blob-num js-line-number js-blob-rnum" data-line-number="909"></td> <td id="file-sp_dbpermissions-sql-LC909" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L910" class="blob-num js-line-number js-blob-rnum" data-line-number="910"></td> <td id="file-sp_dbpermissions-sql-LC910" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DBName, GranteeName, GrantorName, class_desc, permission_name, ObjectName, </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L911" class="blob-num js-line-number js-blob-rnum" data-line-number="911"></td> <td id="file-sp_dbpermissions-sql-LC911" class="blob-code blob-code-inner js-file-line"> SchemaName, state_desc, RevokeScript, GrantScript </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L912" class="blob-num js-line-number js-blob-rnum" data-line-number="912"></td> <td id="file-sp_dbpermissions-sql-LC912" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##DBPermissions <span class="pl-k">ORDER BY</span> DBName, GranteeName, SchemaName, ObjectName, permission_name</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L913" class="blob-num js-line-number js-blob-rnum" data-line-number="913"></td> <td id="file-sp_dbpermissions-sql-LC913" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L914" class="blob-num js-line-number js-blob-rnum" data-line-number="914"></td> <td id="file-sp_dbpermissions-sql-LC914" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L915" class="blob-num js-line-number js-blob-rnum" data-line-number="915"></td> <td id="file-sp_dbpermissions-sql-LC915" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DropTempTables <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L916" class="blob-num js-line-number js-blob-rnum" data-line-number="916"></td> <td id="file-sp_dbpermissions-sql-LC916" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L917" class="blob-num js-line-number js-blob-rnum" data-line-number="917"></td> <td id="file-sp_dbpermissions-sql-LC917" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBPrincipals</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L918" class="blob-num js-line-number js-blob-rnum" data-line-number="918"></td> <td id="file-sp_dbpermissions-sql-LC918" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBRoles</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L919" class="blob-num js-line-number js-blob-rnum" data-line-number="919"></td> <td id="file-sp_dbpermissions-sql-LC919" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##DBPermissions</td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L920" class="blob-num js-line-number js-blob-rnum" data-line-number="920"></td> <td id="file-sp_dbpermissions-sql-LC920" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L921" class="blob-num js-line-number js-blob-rnum" data-line-number="921"></td> <td id="file-sp_dbpermissions-sql-LC921" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L922" class="blob-num js-line-number js-blob-rnum" data-line-number="922"></td> <td id="file-sp_dbpermissions-sql-LC922" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L923" class="blob-num js-line-number js-blob-rnum" data-line-number="923"></td> <td id="file-sp_dbpermissions-sql-LC923" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_dbpermissions-sql-L924" class="blob-num js-line-number js-blob-rnum" data-line-number="924"></td> <td id="file-sp_dbpermissions-sql-LC924" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> #sp_DBPermissions</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/c5cfa8b230b4281988307a75488e591b 2021-02-18T19:30:40Z 2021-05-05T19:29:30Z sp_SrvPermissions Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/c5cfa8b230b4281988307a75488e591b#file-sp_srvpermissions-sql">sp_SrvPermissions.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sp_srvpermissions-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="sp_SrvPermissions.sql content, created by EitanBlumin on 07:30PM on February 18, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="sp_SrvPermissions.sql"> <tr> <td id="file-sp_srvpermissions-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sp_srvpermissions-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>#sp_SrvPermissions&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">PROCEDURE</span> #sp_SrvPermissions</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sp_srvpermissions-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sp_srvpermissions-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>********************************************************************************************</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sp_srvpermissions-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">sp_SrvPermissions V6.1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sp_srvpermissions-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Kenneth Fisher</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sp_srvpermissions-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sp_srvpermissions-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">http://www.sqlstudies.com</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sp_srvpermissions-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://github.com/sqlstudent144/SQL-Server-Scripts/blob/master/sp_SrvPermissions.sql</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sp_srvpermissions-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sp_srvpermissions-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This stored procedure returns 3 data sets. The first dataset is the list of server</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sp_srvpermissions-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c">principals, the second is role membership, and the third is server level permissions.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sp_srvpermissions-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sp_srvpermissions-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c">The final 2 columns of each query are &quot;Un-Do&quot;/&quot;Do&quot; scripts. For example removing a member</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sp_srvpermissions-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">from a role or adding them to a role. I am fairly confident in the role scripts, however, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sp_srvpermissions-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c">the scripts in the server principals query and server permissions query are works in</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sp_srvpermissions-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c">progress. In particular certificates and keys are not scripted out. Also while the scripts </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sp_srvpermissions-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">have worked flawlessly on the systems I&#39;ve tested them on, these systems are fairly similar </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sp_srvpermissions-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c">when it comes to security so I can&#39;t say that in a more complicated system there won&#39;t be </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sp_srvpermissions-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c">the odd bug.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sp_srvpermissions-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sp_srvpermissions-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Notes on the create script for server principals:</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sp_srvpermissions-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c">1) I have included a hashed version of the password and the sid. This means that when run</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sp_srvpermissions-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> on another server the password and the sid will remain the same. </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sp_srvpermissions-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c">2) In SQL 2005 the create script on the server principals query DOES NOT WORK. This is </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sp_srvpermissions-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> because the conversion of the sid (in varbinary) to character doesn&#39;t appear to work</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sp_srvpermissions-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> as I expected in SQL 2005. It works fine in SQL 2008 and above. If you want to use</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sp_srvpermissions-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> this script in SQL 2005 you can change the CONVERTs in the principal script to</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sp_srvpermissions-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> master.sys.fn_varbintohexstr</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sp_srvpermissions-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sp_srvpermissions-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Standard disclaimer: You use scripts off of the web at your own risk. I fully expect this</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sp_srvpermissions-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> script to work without issue but I&#39;ve been known to be wrong before.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sp_srvpermissions-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sp_srvpermissions-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Parameters:</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sp_srvpermissions-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Principal</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sp_srvpermissions-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then all three queries only pull for that server principal. @Principal</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sp_srvpermissions-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> is a pattern check. The queries check for any row where the passed in value exists.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sp_srvpermissions-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It uses the pattern &#39;%&#39; + @Principal + &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sp_srvpermissions-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Role</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sp_srvpermissions-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then the roles query will pull members of the role. If it is NOT NULL and</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sp_srvpermissions-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Principal is NULL then Server principal and permissions query will pull the principal </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sp_srvpermissions-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> row for the role and the permissions for the role. @Role is a pattern check. The </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sp_srvpermissions-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> queries check for any row where the passed in value exists. It uses the pattern </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sp_srvpermissions-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> &#39;%&#39; + @Role + &#39;%&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sp_srvpermissions-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Type</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-sp_srvpermissions-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then all three queries will only pull principals of that type. </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-sp_srvpermissions-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> S = SQL login</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-sp_srvpermissions-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> U = Windows login</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-sp_srvpermissions-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> G = Windows group</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-sp_srvpermissions-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> R = Server role</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-sp_srvpermissions-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> C = Login mapped to a certificate</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-sp_srvpermissions-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> K = Login mapped to an asymmetric key</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-sp_srvpermissions-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @DBName</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-sp_srvpermissions-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If NOT NULL then only return those principals and information about them where the </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-sp_srvpermissions-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> principal exists within the DB specified.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-sp_srvpermissions-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @UseLikeSearch</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-sp_srvpermissions-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) then the search parameters will use LIKE (and </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-sp_srvpermissions-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> %&#39;s will be added around the @Principal and @Role parameters). </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-sp_srvpermissions-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When set to 0 searchs will use =.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-sp_srvpermissions-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @IncludeMSShipped</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-sp_srvpermissions-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) then all principals will be included. When set </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-sp_srvpermissions-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> to 0 the fixed server roles and SA and Public principals will be excluded.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-sp_srvpermissions-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @DropTempTables</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-sp_srvpermissions-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When this is set to 1 (the default) the temp tables used are dropped. If it&#39;s 0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-sp_srvpermissions-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> then the tempt ables are kept for references after the code has finished.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-sp_srvpermissions-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The temp tables are:</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-sp_srvpermissions-sql-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##SrvPrincipals</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-sp_srvpermissions-sql-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##SrvRoles </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-sp_srvpermissions-sql-LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ##SrvPermissions</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-sp_srvpermissions-sql-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Output</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-sp_srvpermissions-sql-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> What type of output is desired.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-sp_srvpermissions-sql-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Default - Either &#39;Default&#39; or it doesn&#39;t match any of the allowed values then the SP</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-sp_srvpermissions-sql-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> will return the standard 3 outputs.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-sp_srvpermissions-sql-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> None - No output at all. Usually used if you keeping the temp tables to do your own</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-sp_srvpermissions-sql-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> reporting.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-sp_srvpermissions-sql-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> CreateOnly - Only return the create scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-sp_srvpermissions-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DropOnly - Only return the drop scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-sp_srvpermissions-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ScriptsOnly - Return drop and create scripts where they aren&#39;t NULL.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-sp_srvpermissions-sql-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Report - Returns one output with one row per principal and a comma delimited list of</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-sp_srvpermissions-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> roles the principal is a member of and a comma delimited list of the </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-sp_srvpermissions-sql-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> individual permissions they have.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-sp_srvpermissions-sql-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> @Print</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-sp_srvpermissions-sql-LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Defaults to 0, but if a 1 is passed in then the queries are not run but printed</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-sp_srvpermissions-sql-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> out instead. This is primarily for debugging.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-sp_srvpermissions-sql-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-sp_srvpermissions-sql-LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Data is ordered as follows</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-sp_srvpermissions-sql-LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 1st result set: SrvPrincipal</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-sp_srvpermissions-sql-LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 2nd result set: RoleName, LoginName if the parameter @Role is used else</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-sp_srvpermissions-sql-LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LoginName, RoleName</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-sp_srvpermissions-sql-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 3rd result set: GranteeName </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-sp_srvpermissions-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-sp_srvpermissions-sql-LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*********************************************************************************************</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-sp_srvpermissions-sql-LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V2.0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-sp_srvpermissions-sql-LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 8/18/2013 – Create a stub if the SP doesn’t exist, then always do an alter</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-sp_srvpermissions-sql-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 9/04/2013 – Change print option to show values of variables not the </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-sp_srvpermissions-sql-LC95" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- Variable names.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-sp_srvpermissions-sql-LC96" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V3.0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-sp_srvpermissions-sql-LC97" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/5/2013 - Added @Type parameter to pull only principals of a given type.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-sp_srvpermissions-sql-LC98" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/20/2013 - Remove SID in CREATE LOGIN script from v2005 and lower since it requires</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-sp_srvpermissions-sql-LC99" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> a special function to convert from binary to varchar.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-sp_srvpermissions-sql-LC100" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V4.0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-sp_srvpermissions-sql-LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 11/18/2013 - Corrected bug in the order of the parameters for sp_addsrvrolemember</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-sp_srvpermissions-sql-LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and sp_dropsrvrolemember, also added parameter names both.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-sp_srvpermissions-sql-LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 01/09/2014 - Added an ORDER BY to each of the result sets. See above for details.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-sp_srvpermissions-sql-LC104" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V5.0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-sp_srvpermissions-sql-LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 04/27/2014 - Add @DBName parameter</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-sp_srvpermissions-sql-LC106" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V5.5</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-sp_srvpermissions-sql-LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 7/22/2014 - Changed strings to unicode</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-sp_srvpermissions-sql-LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V6.0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-sp_srvpermissions-sql-LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 10/19/2014 - Add @UserLikeSearch and @IncludeMSShipped parameters. </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-sp_srvpermissions-sql-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Move SID towards the end of the first output so the more important </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-sp_srvpermissions-sql-LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- columns are closer to the front.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-sp_srvpermissions-sql-LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Add IF Exists to drop and create principal scripts</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-sp_srvpermissions-sql-LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/25/2017 - Add @DropTempTables to keep the temp tables after the SP is run.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-sp_srvpermissions-sql-LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 03/26/2017 - Add @Output to allow different types of output.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-sp_srvpermissions-sql-LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- V6.1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-sp_srvpermissions-sql-LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 06/13/2018 - Removed scripts for principal IDs under 100 (anecdotally the system IDs)</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-sp_srvpermissions-sql-LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Added SET NOCOUNT ON</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-sp_srvpermissions-sql-LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- 05/28/2019 - Add scripts &amp; mappings for certificate &amp; asymmetric key mapped principals.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-sp_srvpermissions-sql-LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Start cleaning up the dynamic SQL a bit to make it easier to read.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-sp_srvpermissions-sql-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Fix SERVER ROLE scripts</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-sp_srvpermissions-sql-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Add CHECK_POLICY and CHECK_EXPIRATION</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-sp_srvpermissions-sql-LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Add script support for disabled </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-sp_srvpermissions-sql-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c">-- - Add script support for a single credential. Will not support multiple credentials.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-sp_srvpermissions-sql-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c">********************************************************************************************<span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-sp_srvpermissions-sql-LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> #sp_SrvPermissions </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-sp_srvpermissions-sql-LC126" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-sp_srvpermissions-sql-LC127" class="blob-code blob-code-inner js-file-line"> @Principal <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>, </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-sp_srvpermissions-sql-LC128" class="blob-code blob-code-inner js-file-line"> @Role <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>, </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-sp_srvpermissions-sql-LC129" class="blob-code blob-code-inner js-file-line"> @Type <span class="pl-k">nvarchar</span>(<span class="pl-c1">30</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-sp_srvpermissions-sql-LC130" class="blob-code blob-code-inner js-file-line"> @DBName <span class="pl-k">sysname</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-sp_srvpermissions-sql-LC131" class="blob-code blob-code-inner js-file-line"> @UseLikeSearch <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-sp_srvpermissions-sql-LC132" class="blob-code blob-code-inner js-file-line"> @IncludeMSShipped <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-sp_srvpermissions-sql-LC133" class="blob-code blob-code-inner js-file-line"> @DropTempTables <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-sp_srvpermissions-sql-LC134" class="blob-code blob-code-inner js-file-line"> @Output <span class="pl-k">varchar</span>(<span class="pl-c1">30</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Default&#39;</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-sp_srvpermissions-sql-LC135" class="blob-code blob-code-inner js-file-line"> @Print <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-sp_srvpermissions-sql-LC136" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-sp_srvpermissions-sql-LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-sp_srvpermissions-sql-LC138" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-sp_srvpermissions-sql-LC139" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-sp_srvpermissions-sql-LC140" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-sp_srvpermissions-sql-LC141" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">AND</span> <span class="pl-k">NOT</span> <span class="pl-k">EXISTS</span> (<span class="pl-k">SELECT</span> <span class="pl-c1">1</span> <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">databases</span> <span class="pl-k">WHERE</span> <span class="pl-k">name</span> <span class="pl-k">=</span> @DBName)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-sp_srvpermissions-sql-LC142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-sp_srvpermissions-sql-LC143" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RAISERROR</span> (<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%s is not a valid database name.&#39;</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-sp_srvpermissions-sql-LC144" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">16</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-sp_srvpermissions-sql-LC145" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-sp_srvpermissions-sql-LC146" class="blob-code blob-code-inner js-file-line"> @DBName)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-sp_srvpermissions-sql-LC147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RETURN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-sp_srvpermissions-sql-LC148" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-sp_srvpermissions-sql-LC149" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-sp_srvpermissions-sql-LC150" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Collation <span class="pl-k">nvarchar</span>(<span class="pl-c1">50</span>) </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-sp_srvpermissions-sql-LC151" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Collation <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> COLLATE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CAST</span>(<span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>Collation&#39;</span>) <span class="pl-k">AS</span> <span class="pl-k">nvarchar</span>(<span class="pl-c1">50</span>))</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-sp_srvpermissions-sql-LC152" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-sp_srvpermissions-sql-LC153" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Version2005orLower <span class="pl-k">bit</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-sp_srvpermissions-sql-LC154" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @Version2005orLower <span class="pl-k">=</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">PARSENAME</span>(<span class="pl-c1">CAST</span>(<span class="pl-c1">SERVERPROPERTY</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>productversion&#39;</span>) <span class="pl-k">AS</span> <span class="pl-k">VARCHAR</span>(<span class="pl-c1">20</span>)),<span class="pl-c1">4</span>) <span class="pl-k">&lt;</span> <span class="pl-c1">10</span> <span class="pl-k">THEN</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-sp_srvpermissions-sql-LC155" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-c1">0</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-sp_srvpermissions-sql-LC156" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-sp_srvpermissions-sql-LC157" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @sql <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-sp_srvpermissions-sql-LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @LikeOperator <span class="pl-k">nvarchar</span>(<span class="pl-c1">4</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-sp_srvpermissions-sql-LC159" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-sp_srvpermissions-sql-LC160" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @UseLikeSearch <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-sp_srvpermissions-sql-LC161" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @LikeOperator <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>LIKE&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-sp_srvpermissions-sql-LC162" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td> <td id="file-sp_srvpermissions-sql-LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @LikeOperator <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>=&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td> <td id="file-sp_srvpermissions-sql-LC164" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td> <td id="file-sp_srvpermissions-sql-LC165" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @UseLikeSearch <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td> <td id="file-sp_srvpermissions-sql-LC166" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td> <td id="file-sp_srvpermissions-sql-LC167" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td> <td id="file-sp_srvpermissions-sql-LC168" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @Principal <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @Principal <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td> <td id="file-sp_srvpermissions-sql-LC169" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td> <td id="file-sp_srvpermissions-sql-LC170" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td> <td id="file-sp_srvpermissions-sql-LC171" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @Role <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span> <span class="pl-k">+</span> @Role<span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>%&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td> <td id="file-sp_srvpermissions-sql-LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td> <td id="file-sp_srvpermissions-sql-LC173" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td> <td id="file-sp_srvpermissions-sql-LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td> <td id="file-sp_srvpermissions-sql-LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Server Principals</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td> <td id="file-sp_srvpermissions-sql-LC176" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @sql <span class="pl-k">=</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td> <td id="file-sp_srvpermissions-sql-LC177" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>SELECT Logins.principal_id AS SrvPrincipalId, Logins.name AS SrvPrincipal, Logins.type, Logins.type_desc, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td> <td id="file-sp_srvpermissions-sql-LC178" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Logins.is_disabled, Logins.default_database_name, Logins.default_language_name, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td> <td id="file-sp_srvpermissions-sql-LC179" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE sql_logins.is_policy_checked WHEN 1 THEN <span class="pl-pds">&#39;&#39;</span>ON&#39;<span class="pl-pds">&#39;</span> WHEN 0 THEN &#39;<span class="pl-pds">&#39;</span>OFF&#39;<span class="pl-pds">&#39;</span> END AS check_policy, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td> <td id="file-sp_srvpermissions-sql-LC180" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE sql_logins.is_expiration_checked WHEN 1 THEN <span class="pl-pds">&#39;&#39;</span>ON&#39;<span class="pl-pds">&#39;</span> WHEN 0 THEN &#39;<span class="pl-pds">&#39;</span>OFF&#39;<span class="pl-pds">&#39;</span> END AS check_expiration, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td> <td id="file-sp_srvpermissions-sql-LC181" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(Cert.name,aKey.name) AS Cert_or_asymmetric_key,</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td> <td id="file-sp_srvpermissions-sql-LC182" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Logins.sid, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td> <td id="file-sp_srvpermissions-sql-LC183" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td> <td id="file-sp_srvpermissions-sql-LC184" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>IF EXISTS (SELECT * FROM sys.server_principals WHERE name = &#39;<span class="pl-pds">&#39;</span> + QuoteName(Logins.name,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>) &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td> <td id="file-sp_srvpermissions-sql-LC185" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>DROP &#39;<span class="pl-pds">&#39;</span> + CASE Logins.type </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td> <td id="file-sp_srvpermissions-sql-LC186" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN <span class="pl-pds">&#39;&#39;</span>R&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>SERVER ROLE&#39;<span class="pl-pds">&#39;</span> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td> <td id="file-sp_srvpermissions-sql-LC187" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>LOGIN&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td> <td id="file-sp_srvpermissions-sql-LC188" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Logins.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>) END + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> AS DropScript, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td> <td id="file-sp_srvpermissions-sql-LC189" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td> <td id="file-sp_srvpermissions-sql-LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = &#39;<span class="pl-pds">&#39;</span> + QuoteName(Logins.name,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>) &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td> <td id="file-sp_srvpermissions-sql-LC191" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>CREATE &#39;<span class="pl-pds">&#39;</span> + CASE Logins.type </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td> <td id="file-sp_srvpermissions-sql-LC192" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN <span class="pl-pds">&#39;&#39;</span>R&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>SERVER ROLE&#39;<span class="pl-pds">&#39;</span> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td> <td id="file-sp_srvpermissions-sql-LC193" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>LOGIN&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td> <td id="file-sp_srvpermissions-sql-LC194" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Logins.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>) END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td> <td id="file-sp_srvpermissions-sql-LC195" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.type = (<span class="pl-pds">&#39;&#39;</span>S&#39;<span class="pl-pds">&#39;</span>) THEN &#39;<span class="pl-pds">&#39;</span> WITH PASSWORD = &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td> <td id="file-sp_srvpermissions-sql-LC196" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CONVERT(varchar(256), LOGINPROPERTY(Logins.name, <span class="pl-pds">&#39;&#39;</span>PasswordHash&#39;<span class="pl-pds">&#39;</span>),1 ) + &#39;<span class="pl-pds">&#39;</span> HASHED&#39;</span> <span class="pl-k">+</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td> <td id="file-sp_srvpermissions-sql-LC197" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> @Version2005orLower <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td> <td id="file-sp_srvpermissions-sql-LC198" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> SID = &#39;<span class="pl-pds">&#39;</span> + CONVERT(varchar(85), Logins.sid, 1) &#39;</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td> <td id="file-sp_srvpermissions-sql-LC199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> + &#39;</span> <span class="pl-k">END</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td> <td id="file-sp_srvpermissions-sql-LC200" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN Logins.type IN (<span class="pl-pds">&#39;&#39;</span>U&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>G&#39;<span class="pl-pds">&#39;</span>) THEN &#39;<span class="pl-pds">&#39;</span> FROM WINDOWS &#39;<span class="pl-pds">&#39;</span> </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td> <td id="file-sp_srvpermissions-sql-LC201" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN Logins.type = <span class="pl-pds">&#39;&#39;</span>C&#39;<span class="pl-pds">&#39;</span> THEN ISNULL(&#39;<span class="pl-pds">&#39;</span> FROM CERTIFICATE &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Cert.name),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td> <td id="file-sp_srvpermissions-sql-LC202" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN Logins.type = <span class="pl-pds">&#39;&#39;</span>K&#39;<span class="pl-pds">&#39;</span> THEN ISNULL(&#39;<span class="pl-pds">&#39;</span> FROM ASYMMETRIC KEY &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(aKey.name),&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td> <td id="file-sp_srvpermissions-sql-LC203" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td> <td id="file-sp_srvpermissions-sql-LC204" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.type IN (<span class="pl-pds">&#39;&#39;</span>S&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>U&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>G&#39;<span class="pl-pds">&#39;</span>) THEN -- Note: Types, S, U and G are the only ones that have additional options.</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td> <td id="file-sp_srvpermissions-sql-LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.default_database_name IS NOT NULL OR Logins.default_language_name IS NOT NULL THEN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td> <td id="file-sp_srvpermissions-sql-LC206" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.Type = <span class="pl-pds">&#39;&#39;</span>S&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span> WITH &#39;<span class="pl-pds">&#39;</span> END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td> <td id="file-sp_srvpermissions-sql-LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>&#39;<span class="pl-pds">&#39;</span> END +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td> <td id="file-sp_srvpermissions-sql-LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(<span class="pl-pds">&#39;&#39;</span> DEFAULT_DATABASE = &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Logins.default_database_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>), &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td> <td id="file-sp_srvpermissions-sql-LC209" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.default_database_name IS NOT NULL AND Logins.default_language_name IS NOT NULL THEN <span class="pl-pds">&#39;&#39;</span>,&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td> <td id="file-sp_srvpermissions-sql-LC210" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(<span class="pl-pds">&#39;&#39;</span> DEFAULT_LANGUAGE = &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Logins.default_language_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>), &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td> <td id="file-sp_srvpermissions-sql-LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.type = <span class="pl-pds">&#39;&#39;</span>S&#39;<span class="pl-pds">&#39;</span> THEN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td> <td id="file-sp_srvpermissions-sql-LC212" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(<span class="pl-pds">&#39;&#39;</span>, CHECK_EXPIRATION = &#39;<span class="pl-pds">&#39;</span> + CASE WHEN sql_logins.is_expiration_checked = 1 THEN &#39;<span class="pl-pds">&#39;</span>ON&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>OFF&#39;<span class="pl-pds">&#39;</span> END, &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td> <td id="file-sp_srvpermissions-sql-LC213" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(<span class="pl-pds">&#39;&#39;</span>, CHECK_POLICY = &#39;<span class="pl-pds">&#39;</span> + CASE WHEN sql_logins.is_policy_checked = 1 THEN &#39;<span class="pl-pds">&#39;</span>ON&#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>OFF&#39;<span class="pl-pds">&#39;</span> END, &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td> <td id="file-sp_srvpermissions-sql-LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ISNULL(<span class="pl-pds">&#39;&#39;</span>, CREDENTIAL = &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Creds.name), &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td> <td id="file-sp_srvpermissions-sql-LC215" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>&#39;<span class="pl-pds">&#39;</span> END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td> <td id="file-sp_srvpermissions-sql-LC216" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ELSE <span class="pl-pds">&#39;&#39;</span>&#39;<span class="pl-pds">&#39;</span> END +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td> <td id="file-sp_srvpermissions-sql-LC217" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>; &#39;<span class="pl-pds">&#39;</span> +</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td> <td id="file-sp_srvpermissions-sql-LC218" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.is_disabled = 1 THEN <span class="pl-pds">&#39;&#39;</span>ALTER LOGIN &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Logins.name) + &#39;<span class="pl-pds">&#39;</span> DISABLE; &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td> <td id="file-sp_srvpermissions-sql-LC219" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> AS CreateScript </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td> <td id="file-sp_srvpermissions-sql-LC220" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.server_principals Logins </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td> <td id="file-sp_srvpermissions-sql-LC221" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> LEFT OUTER JOIN sys.certificates Cert</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td> <td id="file-sp_srvpermissions-sql-LC222" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Logins.sid = Cert.sid</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td> <td id="file-sp_srvpermissions-sql-LC223" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> LEFT OUTER JOIN sys.asymmetric_keys aKey</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td> <td id="file-sp_srvpermissions-sql-LC224" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Logins.sid = aKey.sid</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td> <td id="file-sp_srvpermissions-sql-LC225" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> LEFT OUTER JOIN sys.sql_logins</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td> <td id="file-sp_srvpermissions-sql-LC226" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Logins.sid = sql_logins.sid</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td> <td id="file-sp_srvpermissions-sql-LC227" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> LEFT OUTER JOIN sys.server_principal_credentials LoginCreds</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td> <td id="file-sp_srvpermissions-sql-LC228" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Logins.principal_id = LoginCreds.principal_id</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td> <td id="file-sp_srvpermissions-sql-LC229" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> LEFT OUTER JOIN sys.credentials Creds</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td> <td id="file-sp_srvpermissions-sql-LC230" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON LoginCreds.credential_id = Creds.credential_id</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td> <td id="file-sp_srvpermissions-sql-LC231" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE 1=1 <span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td> <td id="file-sp_srvpermissions-sql-LC232" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td> <td id="file-sp_srvpermissions-sql-LC233" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,@Role)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td> <td id="file-sp_srvpermissions-sql-LC234" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td> <td id="file-sp_srvpermissions-sql-LC235" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)) </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td> <td id="file-sp_srvpermissions-sql-LC236" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td> <td id="file-sp_srvpermissions-sql-LC237" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(@Principal,@Role) &#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td> <td id="file-sp_srvpermissions-sql-LC238" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td> <td id="file-sp_srvpermissions-sql-LC239" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td> <td id="file-sp_srvpermissions-sql-LC240" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td> <td id="file-sp_srvpermissions-sql-LC241" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td> <td id="file-sp_srvpermissions-sql-LC242" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td> <td id="file-sp_srvpermissions-sql-LC243" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td> <td id="file-sp_srvpermissions-sql-LC244" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td> <td id="file-sp_srvpermissions-sql-LC245" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td> <td id="file-sp_srvpermissions-sql-LC246" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.SID IN (SELECT SID FROM [&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>].sys.database_principals </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td> <td id="file-sp_srvpermissions-sql-LC247" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE type IN (<span class="pl-pds">&#39;&#39;</span>G&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>S&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>U&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span>))&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td> <td id="file-sp_srvpermissions-sql-LC248" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td> <td id="file-sp_srvpermissions-sql-LC249" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td> <td id="file-sp_srvpermissions-sql-LC250" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td> <td id="file-sp_srvpermissions-sql-LC251" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND Logins.name NOT IN (&#39;<span class="pl-pds">&#39;</span>sa&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td> <td id="file-sp_srvpermissions-sql-LC252" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td> <td id="file-sp_srvpermissions-sql-LC253" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td> <td id="file-sp_srvpermissions-sql-LC254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>-- Server Principals&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td> <td id="file-sp_srvpermissions-sql-LC255" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td> <td id="file-sp_srvpermissions-sql-LC256" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td> <td id="file-sp_srvpermissions-sql-LC257" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##SrvPrincipals&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td> <td id="file-sp_srvpermissions-sql-LC258" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvPrincipals</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td> <td id="file-sp_srvpermissions-sql-LC259" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td> <td id="file-sp_srvpermissions-sql-LC260" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td> <td id="file-sp_srvpermissions-sql-LC261" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##SrvPrincipals (</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td> <td id="file-sp_srvpermissions-sql-LC262" class="blob-code blob-code-inner js-file-line"> SrvPrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td> <td id="file-sp_srvpermissions-sql-LC263" class="blob-code blob-code-inner js-file-line"> SrvPrincipal <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td> <td id="file-sp_srvpermissions-sql-LC264" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">type</span> <span class="pl-k">char</span>(<span class="pl-c1">1</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td> <td id="file-sp_srvpermissions-sql-LC265" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">type_desc</span> <span class="pl-k">nchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td> <td id="file-sp_srvpermissions-sql-LC266" class="blob-code blob-code-inner js-file-line"> is_disabled <span class="pl-k">bit</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td> <td id="file-sp_srvpermissions-sql-LC267" class="blob-code blob-code-inner js-file-line"> default_database_name <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td> <td id="file-sp_srvpermissions-sql-LC268" class="blob-code blob-code-inner js-file-line"> default_language_name <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td> <td id="file-sp_srvpermissions-sql-LC269" class="blob-code blob-code-inner js-file-line"> [check_policy] <span class="pl-k">char</span>(<span class="pl-c1">3</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td> <td id="file-sp_srvpermissions-sql-LC270" class="blob-code blob-code-inner js-file-line"> [check_expiration] <span class="pl-k">char</span>(<span class="pl-c1">3</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td> <td id="file-sp_srvpermissions-sql-LC271" class="blob-code blob-code-inner js-file-line"> Cert_or_asymmetric_key <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td> <td id="file-sp_srvpermissions-sql-LC272" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">sid</span> <span class="pl-k">varbinary</span>(<span class="pl-c1">85</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td> <td id="file-sp_srvpermissions-sql-LC273" class="blob-code blob-code-inner js-file-line"> DropScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td> <td id="file-sp_srvpermissions-sql-LC274" class="blob-code blob-code-inner js-file-line"> CreateScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td> <td id="file-sp_srvpermissions-sql-LC275" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L276" class="blob-num js-line-number js-blob-rnum" data-line-number="276"></td> <td id="file-sp_srvpermissions-sql-LC276" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L277" class="blob-num js-line-number js-blob-rnum" data-line-number="277"></td> <td id="file-sp_srvpermissions-sql-LC277" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>INSERT INTO ##SrvPrincipals &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L278" class="blob-num js-line-number js-blob-rnum" data-line-number="278"></td> <td id="file-sp_srvpermissions-sql-LC278" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L279" class="blob-num js-line-number js-blob-rnum" data-line-number="279"></td> <td id="file-sp_srvpermissions-sql-LC279" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type varchar(30)&#39;</span>, @Principal, @Role, @Type</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L280" class="blob-num js-line-number js-blob-rnum" data-line-number="280"></td> <td id="file-sp_srvpermissions-sql-LC280" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L281" class="blob-num js-line-number js-blob-rnum" data-line-number="281"></td> <td id="file-sp_srvpermissions-sql-LC281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L282" class="blob-num js-line-number js-blob-rnum" data-line-number="282"></td> <td id="file-sp_srvpermissions-sql-LC282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Server level roles</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L283" class="blob-num js-line-number js-blob-rnum" data-line-number="283"></td> <td id="file-sp_srvpermissions-sql-LC283" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @sql <span class="pl-k">=</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L284" class="blob-num js-line-number js-blob-rnum" data-line-number="284"></td> <td id="file-sp_srvpermissions-sql-LC284" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>SELECT Logins.principal_id AS LoginPrincipalId, Logins.name AS LoginName, Roles.name AS RoleName, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L285" class="blob-num js-line-number js-blob-rnum" data-line-number="285"></td> <td id="file-sp_srvpermissions-sql-LC285" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L286" class="blob-num js-line-number js-blob-rnum" data-line-number="286"></td> <td id="file-sp_srvpermissions-sql-LC286" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>EXEC sp_dropsrvrolemember @loginame = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Logins.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L287" class="blob-num js-line-number js-blob-rnum" data-line-number="287"></td> <td id="file-sp_srvpermissions-sql-LC287" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>, @rolename = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Roles.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L288" class="blob-num js-line-number js-blob-rnum" data-line-number="288"></td> <td id="file-sp_srvpermissions-sql-LC288" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS DropScript, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L289" class="blob-num js-line-number js-blob-rnum" data-line-number="289"></td> <td id="file-sp_srvpermissions-sql-LC289" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Logins.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L290" class="blob-num js-line-number js-blob-rnum" data-line-number="290"></td> <td id="file-sp_srvpermissions-sql-LC290" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>EXEC sp_addsrvrolemember @loginame = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Logins.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L291" class="blob-num js-line-number js-blob-rnum" data-line-number="291"></td> <td id="file-sp_srvpermissions-sql-LC291" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>)+&#39;<span class="pl-pds">&#39;</span>, @rolename = &#39;<span class="pl-pds">&#39;</span>+QUOTENAME(Roles.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L292" class="blob-num js-line-number js-blob-rnum" data-line-number="292"></td> <td id="file-sp_srvpermissions-sql-LC292" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS AddScript </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L293" class="blob-num js-line-number js-blob-rnum" data-line-number="293"></td> <td id="file-sp_srvpermissions-sql-LC293" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.server_role_members RoleMembers </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L294" class="blob-num js-line-number js-blob-rnum" data-line-number="294"></td> <td id="file-sp_srvpermissions-sql-LC294" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> JOIN sys.server_principals Logins </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L295" class="blob-num js-line-number js-blob-rnum" data-line-number="295"></td> <td id="file-sp_srvpermissions-sql-LC295" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON RoleMembers.member_principal_id = Logins.principal_id </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L296" class="blob-num js-line-number js-blob-rnum" data-line-number="296"></td> <td id="file-sp_srvpermissions-sql-LC296" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> JOIN sys.server_principals Roles </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L297" class="blob-num js-line-number js-blob-rnum" data-line-number="297"></td> <td id="file-sp_srvpermissions-sql-LC297" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON RoleMembers.role_principal_id = Roles.principal_id </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L298" class="blob-num js-line-number js-blob-rnum" data-line-number="298"></td> <td id="file-sp_srvpermissions-sql-LC298" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE 1=1 <span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L299" class="blob-num js-line-number js-blob-rnum" data-line-number="299"></td> <td id="file-sp_srvpermissions-sql-LC299" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L300" class="blob-num js-line-number js-blob-rnum" data-line-number="300"></td> <td id="file-sp_srvpermissions-sql-LC300" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L301" class="blob-num js-line-number js-blob-rnum" data-line-number="301"></td> <td id="file-sp_srvpermissions-sql-LC301" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L302" class="blob-num js-line-number js-blob-rnum" data-line-number="302"></td> <td id="file-sp_srvpermissions-sql-LC302" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span><span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L303" class="blob-num js-line-number js-blob-rnum" data-line-number="303"></td> <td id="file-sp_srvpermissions-sql-LC303" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L304" class="blob-num js-line-number js-blob-rnum" data-line-number="304"></td> <td id="file-sp_srvpermissions-sql-LC304" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Principal&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L305" class="blob-num js-line-number js-blob-rnum" data-line-number="305"></td> <td id="file-sp_srvpermissions-sql-LC305" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L306" class="blob-num js-line-number js-blob-rnum" data-line-number="306"></td> <td id="file-sp_srvpermissions-sql-LC306" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L307" class="blob-num js-line-number js-blob-rnum" data-line-number="307"></td> <td id="file-sp_srvpermissions-sql-LC307" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L308" class="blob-num js-line-number js-blob-rnum" data-line-number="308"></td> <td id="file-sp_srvpermissions-sql-LC308" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Roles.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span><span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L309" class="blob-num js-line-number js-blob-rnum" data-line-number="309"></td> <td id="file-sp_srvpermissions-sql-LC309" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L310" class="blob-num js-line-number js-blob-rnum" data-line-number="310"></td> <td id="file-sp_srvpermissions-sql-LC310" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Roles.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Role&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L311" class="blob-num js-line-number js-blob-rnum" data-line-number="311"></td> <td id="file-sp_srvpermissions-sql-LC311" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L312" class="blob-num js-line-number js-blob-rnum" data-line-number="312"></td> <td id="file-sp_srvpermissions-sql-LC312" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L313" class="blob-num js-line-number js-blob-rnum" data-line-number="313"></td> <td id="file-sp_srvpermissions-sql-LC313" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L314" class="blob-num js-line-number js-blob-rnum" data-line-number="314"></td> <td id="file-sp_srvpermissions-sql-LC314" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L315" class="blob-num js-line-number js-blob-rnum" data-line-number="315"></td> <td id="file-sp_srvpermissions-sql-LC315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L316" class="blob-num js-line-number js-blob-rnum" data-line-number="316"></td> <td id="file-sp_srvpermissions-sql-LC316" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L317" class="blob-num js-line-number js-blob-rnum" data-line-number="317"></td> <td id="file-sp_srvpermissions-sql-LC317" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L318" class="blob-num js-line-number js-blob-rnum" data-line-number="318"></td> <td id="file-sp_srvpermissions-sql-LC318" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L319" class="blob-num js-line-number js-blob-rnum" data-line-number="319"></td> <td id="file-sp_srvpermissions-sql-LC319" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.SID IN (SELECT SID FROM [&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>].sys.database_principals </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L320" class="blob-num js-line-number js-blob-rnum" data-line-number="320"></td> <td id="file-sp_srvpermissions-sql-LC320" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE type IN (<span class="pl-pds">&#39;&#39;</span>G&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>S&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>U&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span>))&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L321" class="blob-num js-line-number js-blob-rnum" data-line-number="321"></td> <td id="file-sp_srvpermissions-sql-LC321" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L322" class="blob-num js-line-number js-blob-rnum" data-line-number="322"></td> <td id="file-sp_srvpermissions-sql-LC322" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L323" class="blob-num js-line-number js-blob-rnum" data-line-number="323"></td> <td id="file-sp_srvpermissions-sql-LC323" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Logins.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L324" class="blob-num js-line-number js-blob-rnum" data-line-number="324"></td> <td id="file-sp_srvpermissions-sql-LC324" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND Logins.name NOT IN (&#39;<span class="pl-pds">&#39;</span>sa&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L325" class="blob-num js-line-number js-blob-rnum" data-line-number="325"></td> <td id="file-sp_srvpermissions-sql-LC325" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L326" class="blob-num js-line-number js-blob-rnum" data-line-number="326"></td> <td id="file-sp_srvpermissions-sql-LC326" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L327" class="blob-num js-line-number js-blob-rnum" data-line-number="327"></td> <td id="file-sp_srvpermissions-sql-LC327" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>-- Server Role Members&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L328" class="blob-num js-line-number js-blob-rnum" data-line-number="328"></td> <td id="file-sp_srvpermissions-sql-LC328" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L329" class="blob-num js-line-number js-blob-rnum" data-line-number="329"></td> <td id="file-sp_srvpermissions-sql-LC329" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L330" class="blob-num js-line-number js-blob-rnum" data-line-number="330"></td> <td id="file-sp_srvpermissions-sql-LC330" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##SrvRoles&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L331" class="blob-num js-line-number js-blob-rnum" data-line-number="331"></td> <td id="file-sp_srvpermissions-sql-LC331" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvRoles</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L332" class="blob-num js-line-number js-blob-rnum" data-line-number="332"></td> <td id="file-sp_srvpermissions-sql-LC332" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L333" class="blob-num js-line-number js-blob-rnum" data-line-number="333"></td> <td id="file-sp_srvpermissions-sql-LC333" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L334" class="blob-num js-line-number js-blob-rnum" data-line-number="334"></td> <td id="file-sp_srvpermissions-sql-LC334" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##SrvRoles (</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L335" class="blob-num js-line-number js-blob-rnum" data-line-number="335"></td> <td id="file-sp_srvpermissions-sql-LC335" class="blob-code blob-code-inner js-file-line"> LoginPrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L336" class="blob-num js-line-number js-blob-rnum" data-line-number="336"></td> <td id="file-sp_srvpermissions-sql-LC336" class="blob-code blob-code-inner js-file-line"> LoginName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L337" class="blob-num js-line-number js-blob-rnum" data-line-number="337"></td> <td id="file-sp_srvpermissions-sql-LC337" class="blob-code blob-code-inner js-file-line"> RoleName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L338" class="blob-num js-line-number js-blob-rnum" data-line-number="338"></td> <td id="file-sp_srvpermissions-sql-LC338" class="blob-code blob-code-inner js-file-line"> DropScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L339" class="blob-num js-line-number js-blob-rnum" data-line-number="339"></td> <td id="file-sp_srvpermissions-sql-LC339" class="blob-code blob-code-inner js-file-line"> AddScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L340" class="blob-num js-line-number js-blob-rnum" data-line-number="340"></td> <td id="file-sp_srvpermissions-sql-LC340" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L341" class="blob-num js-line-number js-blob-rnum" data-line-number="341"></td> <td id="file-sp_srvpermissions-sql-LC341" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L342" class="blob-num js-line-number js-blob-rnum" data-line-number="342"></td> <td id="file-sp_srvpermissions-sql-LC342" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>INSERT INTO ##SrvRoles &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L343" class="blob-num js-line-number js-blob-rnum" data-line-number="343"></td> <td id="file-sp_srvpermissions-sql-LC343" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L344" class="blob-num js-line-number js-blob-rnum" data-line-number="344"></td> <td id="file-sp_srvpermissions-sql-LC344" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30)&#39;</span>, @Principal, @Role, @Type</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L345" class="blob-num js-line-number js-blob-rnum" data-line-number="345"></td> <td id="file-sp_srvpermissions-sql-LC345" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L346" class="blob-num js-line-number js-blob-rnum" data-line-number="346"></td> <td id="file-sp_srvpermissions-sql-LC346" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L347" class="blob-num js-line-number js-blob-rnum" data-line-number="347"></td> <td id="file-sp_srvpermissions-sql-LC347" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>=========================================================================</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L348" class="blob-num js-line-number js-blob-rnum" data-line-number="348"></td> <td id="file-sp_srvpermissions-sql-LC348" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Server Permissions</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L349" class="blob-num js-line-number js-blob-rnum" data-line-number="349"></td> <td id="file-sp_srvpermissions-sql-LC349" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @sql <span class="pl-k">=</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L350" class="blob-num js-line-number js-blob-rnum" data-line-number="350"></td> <td id="file-sp_srvpermissions-sql-LC350" class="blob-code blob-code-inner js-file-line"> N<span class="pl-s"><span class="pl-pds">&#39;</span>SELECT Grantee.principal_id AS GranteePrincipalId, Grantee.name AS GranteeName, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L351" class="blob-num js-line-number js-blob-rnum" data-line-number="351"></td> <td id="file-sp_srvpermissions-sql-LC351" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Grantor.name AS GrantorName, Permission.class_desc, Permission.permission_name, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L352" class="blob-num js-line-number js-blob-rnum" data-line-number="352"></td> <td id="file-sp_srvpermissions-sql-LC352" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Permission.state_desc, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L353" class="blob-num js-line-number js-blob-rnum" data-line-number="353"></td> <td id="file-sp_srvpermissions-sql-LC353" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Grantee.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L354" class="blob-num js-line-number js-blob-rnum" data-line-number="354"></td> <td id="file-sp_srvpermissions-sql-LC354" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span>REVOKE &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L355" class="blob-num js-line-number js-blob-rnum" data-line-number="355"></td> <td id="file-sp_srvpermissions-sql-LC355" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Permission.class_desc = <span class="pl-pds">&#39;&#39;</span>ENDPOINT&#39;<span class="pl-pds">&#39;</span> THEN NULL </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L356" class="blob-num js-line-number js-blob-rnum" data-line-number="356"></td> <td id="file-sp_srvpermissions-sql-LC356" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN Permission.[state] = <span class="pl-pds">&#39;&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>GRANT OPTION FOR &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L357" class="blob-num js-line-number js-blob-rnum" data-line-number="357"></td> <td id="file-sp_srvpermissions-sql-LC357" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> &#39;<span class="pl-pds">&#39;</span> + Permission.permission_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L358" class="blob-num js-line-number js-blob-rnum" data-line-number="358"></td> <td id="file-sp_srvpermissions-sql-LC358" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> FROM &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Grantee.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>; &#39;<span class="pl-pds">&#39;</span> END AS RevokeScript, </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L359" class="blob-num js-line-number js-blob-rnum" data-line-number="359"></td> <td id="file-sp_srvpermissions-sql-LC359" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Grantee.principal_id &lt; 100 THEN NULL ELSE </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L360" class="blob-num js-line-number js-blob-rnum" data-line-number="360"></td> <td id="file-sp_srvpermissions-sql-LC360" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Permission.class_desc = <span class="pl-pds">&#39;&#39;</span>ENDPOINT&#39;<span class="pl-pds">&#39;</span> THEN NULL </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L361" class="blob-num js-line-number js-blob-rnum" data-line-number="361"></td> <td id="file-sp_srvpermissions-sql-LC361" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHEN Permission.[state] = <span class="pl-pds">&#39;&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span>GRANT&#39;<span class="pl-pds">&#39;</span> ELSE Permission.state_desc&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L362" class="blob-num js-line-number js-blob-rnum" data-line-number="362"></td> <td id="file-sp_srvpermissions-sql-LC362" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L363" class="blob-num js-line-number js-blob-rnum" data-line-number="363"></td> <td id="file-sp_srvpermissions-sql-LC363" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> &#39;<span class="pl-pds">&#39;</span> + Permission.permission_name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L364" class="blob-num js-line-number js-blob-rnum" data-line-number="364"></td> <td id="file-sp_srvpermissions-sql-LC364" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> TO &#39;<span class="pl-pds">&#39;</span> + QUOTENAME(Grantee.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span> &#39;<span class="pl-pds">&#39;</span> + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L365" class="blob-num js-line-number js-blob-rnum" data-line-number="365"></td> <td id="file-sp_srvpermissions-sql-LC365" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> CASE WHEN Permission.[state] = <span class="pl-pds">&#39;&#39;</span>W&#39;<span class="pl-pds">&#39;</span> THEN &#39;<span class="pl-pds">&#39;</span> WITH GRANT OPTION &#39;<span class="pl-pds">&#39;</span> ELSE &#39;<span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span> END + </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L366" class="blob-num js-line-number js-blob-rnum" data-line-number="366"></td> <td id="file-sp_srvpermissions-sql-LC366" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;&#39;</span> AS &#39;<span class="pl-pds">&#39;</span>+ QUOTENAME(Grantor.name&#39;</span> <span class="pl-k">+</span> @Collation <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>) + &#39;<span class="pl-pds">&#39;</span>;&#39;<span class="pl-pds">&#39;</span> END AS GrantScript </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L367" class="blob-num js-line-number js-blob-rnum" data-line-number="367"></td> <td id="file-sp_srvpermissions-sql-LC367" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM sys.server_permissions Permission </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L368" class="blob-num js-line-number js-blob-rnum" data-line-number="368"></td> <td id="file-sp_srvpermissions-sql-LC368" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> JOIN sys.server_principals Grantee </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L369" class="blob-num js-line-number js-blob-rnum" data-line-number="369"></td> <td id="file-sp_srvpermissions-sql-LC369" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Permission.grantee_principal_id = Grantee.principal_id </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L370" class="blob-num js-line-number js-blob-rnum" data-line-number="370"></td> <td id="file-sp_srvpermissions-sql-LC370" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> JOIN sys.server_principals Grantor </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L371" class="blob-num js-line-number js-blob-rnum" data-line-number="371"></td> <td id="file-sp_srvpermissions-sql-LC371" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> ON Permission.grantor_principal_id = Grantor.principal_id </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L372" class="blob-num js-line-number js-blob-rnum" data-line-number="372"></td> <td id="file-sp_srvpermissions-sql-LC372" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE 1=1 <span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L373" class="blob-num js-line-number js-blob-rnum" data-line-number="373"></td> <td id="file-sp_srvpermissions-sql-LC373" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L374" class="blob-num js-line-number js-blob-rnum" data-line-number="374"></td> <td id="file-sp_srvpermissions-sql-LC374" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(<span class="pl-c1">ISNULL</span>(@Principal,@Role)) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L375" class="blob-num js-line-number js-blob-rnum" data-line-number="375"></td> <td id="file-sp_srvpermissions-sql-LC375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L376" class="blob-num js-line-number js-blob-rnum" data-line-number="376"></td> <td id="file-sp_srvpermissions-sql-LC376" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">ISNULL</span>(<span class="pl-k">+</span><span class="pl-c1">QUOTENAME</span>(@Principal,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-c1">QUOTENAME</span>(@Role,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)) </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L377" class="blob-num js-line-number js-blob-rnum" data-line-number="377"></td> <td id="file-sp_srvpermissions-sql-LC377" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L378" class="blob-num js-line-number js-blob-rnum" data-line-number="378"></td> <td id="file-sp_srvpermissions-sql-LC378" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.name &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ISNULL(@Principal,@Role) &#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L379" class="blob-num js-line-number js-blob-rnum" data-line-number="379"></td> <td id="file-sp_srvpermissions-sql-LC379" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L380" class="blob-num js-line-number js-blob-rnum" data-line-number="380"></td> <td id="file-sp_srvpermissions-sql-LC380" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Type) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L381" class="blob-num js-line-number js-blob-rnum" data-line-number="381"></td> <td id="file-sp_srvpermissions-sql-LC381" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L382" class="blob-num js-line-number js-blob-rnum" data-line-number="382"></td> <td id="file-sp_srvpermissions-sql-LC382" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@Type,<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L383" class="blob-num js-line-number js-blob-rnum" data-line-number="383"></td> <td id="file-sp_srvpermissions-sql-LC383" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L384" class="blob-num js-line-number js-blob-rnum" data-line-number="384"></td> <td id="file-sp_srvpermissions-sql-LC384" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.type &#39;</span> <span class="pl-k">+</span> @LikeOperator <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> @Type&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L385" class="blob-num js-line-number js-blob-rnum" data-line-number="385"></td> <td id="file-sp_srvpermissions-sql-LC385" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L386" class="blob-num js-line-number js-blob-rnum" data-line-number="386"></td> <td id="file-sp_srvpermissions-sql-LC386" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @DBName <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L387" class="blob-num js-line-number js-blob-rnum" data-line-number="387"></td> <td id="file-sp_srvpermissions-sql-LC387" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.SID IN (SELECT SID FROM [&#39;</span> <span class="pl-k">+</span> @DBName <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span>].sys.database_principals </span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L388" class="blob-num js-line-number js-blob-rnum" data-line-number="388"></td> <td id="file-sp_srvpermissions-sql-LC388" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE type IN (<span class="pl-pds">&#39;&#39;</span>G&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>S&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>U&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>K&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>C&#39;<span class="pl-pds">&#39;</span>))&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L389" class="blob-num js-line-number js-blob-rnum" data-line-number="389"></td> <td id="file-sp_srvpermissions-sql-LC389" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L390" class="blob-num js-line-number js-blob-rnum" data-line-number="390"></td> <td id="file-sp_srvpermissions-sql-LC390" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @IncludeMSShipped <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L391" class="blob-num js-line-number js-blob-rnum" data-line-number="391"></td> <td id="file-sp_srvpermissions-sql-LC391" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> AND Grantee.is_fixed_role = 0 &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L392" class="blob-num js-line-number js-blob-rnum" data-line-number="392"></td> <td id="file-sp_srvpermissions-sql-LC392" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">&#39;</span> AND Grantee.name NOT IN (&#39;<span class="pl-pds">&#39;</span>sa&#39;<span class="pl-pds">&#39;</span>,&#39;<span class="pl-pds">&#39;</span>public&#39;<span class="pl-pds">&#39;</span>) &#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L393" class="blob-num js-line-number js-blob-rnum" data-line-number="393"></td> <td id="file-sp_srvpermissions-sql-LC393" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L394" class="blob-num js-line-number js-blob-rnum" data-line-number="394"></td> <td id="file-sp_srvpermissions-sql-LC394" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L395" class="blob-num js-line-number js-blob-rnum" data-line-number="395"></td> <td id="file-sp_srvpermissions-sql-LC395" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>-- Server Permissions&#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L396" class="blob-num js-line-number js-blob-rnum" data-line-number="396"></td> <td id="file-sp_srvpermissions-sql-LC396" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L397" class="blob-num js-line-number js-blob-rnum" data-line-number="397"></td> <td id="file-sp_srvpermissions-sql-LC397" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L398" class="blob-num js-line-number js-blob-rnum" data-line-number="398"></td> <td id="file-sp_srvpermissions-sql-LC398" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">object_id</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..##SrvPermissions&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L399" class="blob-num js-line-number js-blob-rnum" data-line-number="399"></td> <td id="file-sp_srvpermissions-sql-LC399" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvPermissions</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L400" class="blob-num js-line-number js-blob-rnum" data-line-number="400"></td> <td id="file-sp_srvpermissions-sql-LC400" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L401" class="blob-num js-line-number js-blob-rnum" data-line-number="401"></td> <td id="file-sp_srvpermissions-sql-LC401" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Create temp table to store the data in</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L402" class="blob-num js-line-number js-blob-rnum" data-line-number="402"></td> <td id="file-sp_srvpermissions-sql-LC402" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> ##SrvPermissions (</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L403" class="blob-num js-line-number js-blob-rnum" data-line-number="403"></td> <td id="file-sp_srvpermissions-sql-LC403" class="blob-code blob-code-inner js-file-line"> GranteePrincipalId <span class="pl-k">int</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L404" class="blob-num js-line-number js-blob-rnum" data-line-number="404"></td> <td id="file-sp_srvpermissions-sql-LC404" class="blob-code blob-code-inner js-file-line"> GranteeName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L405" class="blob-num js-line-number js-blob-rnum" data-line-number="405"></td> <td id="file-sp_srvpermissions-sql-LC405" class="blob-code blob-code-inner js-file-line"> GrantorName <span class="pl-k">sysname</span> <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L406" class="blob-num js-line-number js-blob-rnum" data-line-number="406"></td> <td id="file-sp_srvpermissions-sql-LC406" class="blob-code blob-code-inner js-file-line"> class_desc <span class="pl-k">nvarchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L407" class="blob-num js-line-number js-blob-rnum" data-line-number="407"></td> <td id="file-sp_srvpermissions-sql-LC407" class="blob-code blob-code-inner js-file-line"> permission_name <span class="pl-k">nvarchar</span>(<span class="pl-c1">128</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L408" class="blob-num js-line-number js-blob-rnum" data-line-number="408"></td> <td id="file-sp_srvpermissions-sql-LC408" class="blob-code blob-code-inner js-file-line"> state_desc <span class="pl-k">nvarchar</span>(<span class="pl-c1">60</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L409" class="blob-num js-line-number js-blob-rnum" data-line-number="409"></td> <td id="file-sp_srvpermissions-sql-LC409" class="blob-code blob-code-inner js-file-line"> RevokeScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span>,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L410" class="blob-num js-line-number js-blob-rnum" data-line-number="410"></td> <td id="file-sp_srvpermissions-sql-LC410" class="blob-code blob-code-inner js-file-line"> GrantScript <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L411" class="blob-num js-line-number js-blob-rnum" data-line-number="411"></td> <td id="file-sp_srvpermissions-sql-LC411" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L412" class="blob-num js-line-number js-blob-rnum" data-line-number="412"></td> <td id="file-sp_srvpermissions-sql-LC412" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L413" class="blob-num js-line-number js-blob-rnum" data-line-number="413"></td> <td id="file-sp_srvpermissions-sql-LC413" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Add insert statement to @sql</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L414" class="blob-num js-line-number js-blob-rnum" data-line-number="414"></td> <td id="file-sp_srvpermissions-sql-LC414" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @sql <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>INSERT INTO ##SrvPermissions &#39;</span> <span class="pl-k">+</span> <span class="pl-k">NCHAR</span>(<span class="pl-c1">13</span>) <span class="pl-k">+</span> @sql</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L415" class="blob-num js-line-number js-blob-rnum" data-line-number="415"></td> <td id="file-sp_srvpermissions-sql-LC415" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L416" class="blob-num js-line-number js-blob-rnum" data-line-number="416"></td> <td id="file-sp_srvpermissions-sql-LC416" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> sp_executesql @sql, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@Principal sysname, @Role sysname, @Type nvarchar(30)&#39;</span>, @Principal, @Role, @Type</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L417" class="blob-num js-line-number js-blob-rnum" data-line-number="417"></td> <td id="file-sp_srvpermissions-sql-LC417" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L418" class="blob-num js-line-number js-blob-rnum" data-line-number="418"></td> <td id="file-sp_srvpermissions-sql-LC418" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L419" class="blob-num js-line-number js-blob-rnum" data-line-number="419"></td> <td id="file-sp_srvpermissions-sql-LC419" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> @Print <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L420" class="blob-num js-line-number js-blob-rnum" data-line-number="420"></td> <td id="file-sp_srvpermissions-sql-LC420" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L421" class="blob-num js-line-number js-blob-rnum" data-line-number="421"></td> <td id="file-sp_srvpermissions-sql-LC421" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L422" class="blob-num js-line-number js-blob-rnum" data-line-number="422"></td> <td id="file-sp_srvpermissions-sql-LC422" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>None&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L423" class="blob-num js-line-number js-blob-rnum" data-line-number="423"></td> <td id="file-sp_srvpermissions-sql-LC423" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L424" class="blob-num js-line-number js-blob-rnum" data-line-number="424"></td> <td id="file-sp_srvpermissions-sql-LC424" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>CreateOnly&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L425" class="blob-num js-line-number js-blob-rnum" data-line-number="425"></td> <td id="file-sp_srvpermissions-sql-LC425" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L426" class="blob-num js-line-number js-blob-rnum" data-line-number="426"></td> <td id="file-sp_srvpermissions-sql-LC426" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> CreateScript <span class="pl-k">FROM</span> ##SrvPrincipals <span class="pl-k">WHERE</span> CreateScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L427" class="blob-num js-line-number js-blob-rnum" data-line-number="427"></td> <td id="file-sp_srvpermissions-sql-LC427" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L428" class="blob-num js-line-number js-blob-rnum" data-line-number="428"></td> <td id="file-sp_srvpermissions-sql-LC428" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> AddScript <span class="pl-k">FROM</span> ##SrvRoles <span class="pl-k">WHERE</span> AddScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L429" class="blob-num js-line-number js-blob-rnum" data-line-number="429"></td> <td id="file-sp_srvpermissions-sql-LC429" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L430" class="blob-num js-line-number js-blob-rnum" data-line-number="430"></td> <td id="file-sp_srvpermissions-sql-LC430" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> GrantScript <span class="pl-k">FROM</span> ##SrvPermissions <span class="pl-k">WHERE</span> GrantScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L431" class="blob-num js-line-number js-blob-rnum" data-line-number="431"></td> <td id="file-sp_srvpermissions-sql-LC431" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L432" class="blob-num js-line-number js-blob-rnum" data-line-number="432"></td> <td id="file-sp_srvpermissions-sql-LC432" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>DropOnly&#39;</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L433" class="blob-num js-line-number js-blob-rnum" data-line-number="433"></td> <td id="file-sp_srvpermissions-sql-LC433" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L434" class="blob-num js-line-number js-blob-rnum" data-line-number="434"></td> <td id="file-sp_srvpermissions-sql-LC434" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript <span class="pl-k">FROM</span> ##SrvPrincipals <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L435" class="blob-num js-line-number js-blob-rnum" data-line-number="435"></td> <td id="file-sp_srvpermissions-sql-LC435" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L436" class="blob-num js-line-number js-blob-rnum" data-line-number="436"></td> <td id="file-sp_srvpermissions-sql-LC436" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript <span class="pl-k">FROM</span> ##SrvRoles <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L437" class="blob-num js-line-number js-blob-rnum" data-line-number="437"></td> <td id="file-sp_srvpermissions-sql-LC437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L438" class="blob-num js-line-number js-blob-rnum" data-line-number="438"></td> <td id="file-sp_srvpermissions-sql-LC438" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> RevokeScript <span class="pl-k">FROM</span> ##SrvPermissions <span class="pl-k">WHERE</span> RevokeScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L439" class="blob-num js-line-number js-blob-rnum" data-line-number="439"></td> <td id="file-sp_srvpermissions-sql-LC439" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L440" class="blob-num js-line-number js-blob-rnum" data-line-number="440"></td> <td id="file-sp_srvpermissions-sql-LC440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ScriptOnly&#39;</span> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L441" class="blob-num js-line-number js-blob-rnum" data-line-number="441"></td> <td id="file-sp_srvpermissions-sql-LC441" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L442" class="blob-num js-line-number js-blob-rnum" data-line-number="442"></td> <td id="file-sp_srvpermissions-sql-LC442" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript, CreateScript <span class="pl-k">FROM</span> ##SrvPrincipals <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> CreateScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L443" class="blob-num js-line-number js-blob-rnum" data-line-number="443"></td> <td id="file-sp_srvpermissions-sql-LC443" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L444" class="blob-num js-line-number js-blob-rnum" data-line-number="444"></td> <td id="file-sp_srvpermissions-sql-LC444" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> DropScript, AddScript <span class="pl-k">FROM</span> ##SrvRoles <span class="pl-k">WHERE</span> DropScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> AddScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L445" class="blob-num js-line-number js-blob-rnum" data-line-number="445"></td> <td id="file-sp_srvpermissions-sql-LC445" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L446" class="blob-num js-line-number js-blob-rnum" data-line-number="446"></td> <td id="file-sp_srvpermissions-sql-LC446" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> RevokeScript, GrantScript <span class="pl-k">FROM</span> ##SrvPermissions <span class="pl-k">WHERE</span> RevokeScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> GrantScript <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L447" class="blob-num js-line-number js-blob-rnum" data-line-number="447"></td> <td id="file-sp_srvpermissions-sql-LC447" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L448" class="blob-num js-line-number js-blob-rnum" data-line-number="448"></td> <td id="file-sp_srvpermissions-sql-LC448" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-k">IF</span> @Output <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>Report&#39;</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L449" class="blob-num js-line-number js-blob-rnum" data-line-number="449"></td> <td id="file-sp_srvpermissions-sql-LC449" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L450" class="blob-num js-line-number js-blob-rnum" data-line-number="450"></td> <td id="file-sp_srvpermissions-sql-LC450" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> SrvPrincipal, <span class="pl-k">type</span>, <span class="pl-k">type_desc</span>, is_disabled,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L451" class="blob-num js-line-number js-blob-rnum" data-line-number="451"></td> <td id="file-sp_srvpermissions-sql-LC451" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">STUFF</span>((<span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">SrvRoles</span>.<span class="pl-c1">RoleName</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L452" class="blob-num js-line-number js-blob-rnum" data-line-number="452"></td> <td id="file-sp_srvpermissions-sql-LC452" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##SrvRoles</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L453" class="blob-num js-line-number js-blob-rnum" data-line-number="453"></td> <td id="file-sp_srvpermissions-sql-LC453" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> ##<span class="pl-c1">SrvPrincipals</span>.<span class="pl-c1">SrvPrincipalId</span> <span class="pl-k">=</span> ##<span class="pl-c1">SrvRoles</span>.<span class="pl-c1">LoginPrincipalId</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L454" class="blob-num js-line-number js-blob-rnum" data-line-number="454"></td> <td id="file-sp_srvpermissions-sql-LC454" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> ##<span class="pl-c1">SrvRoles</span>.<span class="pl-c1">RoleName</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L455" class="blob-num js-line-number js-blob-rnum" data-line-number="455"></td> <td id="file-sp_srvpermissions-sql-LC455" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-k">TYPE</span>).<span class="pl-k">value</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span>,<span class="pl-s"><span class="pl-pds">&#39;</span>VARCHAR(MAX)&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L456" class="blob-num js-line-number js-blob-rnum" data-line-number="456"></td> <td id="file-sp_srvpermissions-sql-LC456" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">AS</span> RoleMembership,</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L457" class="blob-num js-line-number js-blob-rnum" data-line-number="457"></td> <td id="file-sp_srvpermissions-sql-LC457" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">STUFF</span>((<span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">SrvPermissions</span>.<span class="pl-c1">state_desc</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span> ##<span class="pl-c1">SrvPermissions</span>.<span class="pl-c1">permission_name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span> &#39;</span> <span class="pl-k">+</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L458" class="blob-num js-line-number js-blob-rnum" data-line-number="458"></td> <td id="file-sp_srvpermissions-sql-LC458" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> class_desc <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>SERVER&#39;</span> <span class="pl-k">THEN</span> class_desc <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L459" class="blob-num js-line-number js-blob-rnum" data-line-number="459"></td> <td id="file-sp_srvpermissions-sql-LC459" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> (<span class="pl-k">SELECT DISTINCT</span> <span class="pl-k">*</span> <span class="pl-k">FROM</span> ##SrvPermissions) ##SrvPermissions</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L460" class="blob-num js-line-number js-blob-rnum" data-line-number="460"></td> <td id="file-sp_srvpermissions-sql-LC460" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span> ##<span class="pl-c1">SrvPrincipals</span>.<span class="pl-c1">SrvPrincipalId</span> <span class="pl-k">=</span> ##<span class="pl-c1">SrvPermissions</span>.<span class="pl-c1">GranteePrincipalId</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L461" class="blob-num js-line-number js-blob-rnum" data-line-number="461"></td> <td id="file-sp_srvpermissions-sql-LC461" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> ##<span class="pl-c1">SrvPermissions</span>.<span class="pl-c1">state_desc</span>, ##<span class="pl-c1">SrvPermissions</span>.<span class="pl-c1">permission_name</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L462" class="blob-num js-line-number js-blob-rnum" data-line-number="462"></td> <td id="file-sp_srvpermissions-sql-LC462" class="blob-code blob-code-inner js-file-line"> FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),<span class="pl-k">TYPE</span>).<span class="pl-k">value</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span>,<span class="pl-s"><span class="pl-pds">&#39;</span>VARCHAR(MAX)&#39;</span>)</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L463" class="blob-num js-line-number js-blob-rnum" data-line-number="463"></td> <td id="file-sp_srvpermissions-sql-LC463" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>) <span class="pl-k">AS</span> DirectPermissions</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L464" class="blob-num js-line-number js-blob-rnum" data-line-number="464"></td> <td id="file-sp_srvpermissions-sql-LC464" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##SrvPrincipals</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L465" class="blob-num js-line-number js-blob-rnum" data-line-number="465"></td> <td id="file-sp_srvpermissions-sql-LC465" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ORDER BY</span> SrvPrincipal</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L466" class="blob-num js-line-number js-blob-rnum" data-line-number="466"></td> <td id="file-sp_srvpermissions-sql-LC466" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L467" class="blob-num js-line-number js-blob-rnum" data-line-number="467"></td> <td id="file-sp_srvpermissions-sql-LC467" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span> <span class="pl-c"><span class="pl-c">--</span> &#39;Default&#39; or no match</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L468" class="blob-num js-line-number js-blob-rnum" data-line-number="468"></td> <td id="file-sp_srvpermissions-sql-LC468" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L469" class="blob-num js-line-number js-blob-rnum" data-line-number="469"></td> <td id="file-sp_srvpermissions-sql-LC469" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> SrvPrincipal, <span class="pl-k">type</span>, <span class="pl-k">type_desc</span>, is_disabled, default_database_name, </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L470" class="blob-num js-line-number js-blob-rnum" data-line-number="470"></td> <td id="file-sp_srvpermissions-sql-LC470" class="blob-code blob-code-inner js-file-line"> default_language_name, [check_policy], [check_expiration], Cert_or_asymmetric_key, </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L471" class="blob-num js-line-number js-blob-rnum" data-line-number="471"></td> <td id="file-sp_srvpermissions-sql-LC471" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">sid</span>, DropScript, CreateScript </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L472" class="blob-num js-line-number js-blob-rnum" data-line-number="472"></td> <td id="file-sp_srvpermissions-sql-LC472" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##SrvPrincipals <span class="pl-k">ORDER BY</span> SrvPrincipal</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L473" class="blob-num js-line-number js-blob-rnum" data-line-number="473"></td> <td id="file-sp_srvpermissions-sql-LC473" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">LEN</span>(@Role) <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L474" class="blob-num js-line-number js-blob-rnum" data-line-number="474"></td> <td id="file-sp_srvpermissions-sql-LC474" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> LoginName, RoleName, DropScript, AddScript <span class="pl-k">FROM</span> ##SrvRoles <span class="pl-k">ORDER BY</span> RoleName, LoginName</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L475" class="blob-num js-line-number js-blob-rnum" data-line-number="475"></td> <td id="file-sp_srvpermissions-sql-LC475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L476" class="blob-num js-line-number js-blob-rnum" data-line-number="476"></td> <td id="file-sp_srvpermissions-sql-LC476" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> LoginName, RoleName, DropScript, AddScript <span class="pl-k">FROM</span> ##SrvRoles <span class="pl-k">ORDER BY</span> LoginName, RoleName</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L477" class="blob-num js-line-number js-blob-rnum" data-line-number="477"></td> <td id="file-sp_srvpermissions-sql-LC477" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> GranteeName, GrantorName, class_desc, permission_name, state_desc, RevokeScript, GrantScript </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L478" class="blob-num js-line-number js-blob-rnum" data-line-number="478"></td> <td id="file-sp_srvpermissions-sql-LC478" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> ##SrvPermissions <span class="pl-k">ORDER BY</span> GranteeName</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L479" class="blob-num js-line-number js-blob-rnum" data-line-number="479"></td> <td id="file-sp_srvpermissions-sql-LC479" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L480" class="blob-num js-line-number js-blob-rnum" data-line-number="480"></td> <td id="file-sp_srvpermissions-sql-LC480" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L481" class="blob-num js-line-number js-blob-rnum" data-line-number="481"></td> <td id="file-sp_srvpermissions-sql-LC481" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> @DropTempTables <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L482" class="blob-num js-line-number js-blob-rnum" data-line-number="482"></td> <td id="file-sp_srvpermissions-sql-LC482" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L483" class="blob-num js-line-number js-blob-rnum" data-line-number="483"></td> <td id="file-sp_srvpermissions-sql-LC483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvPrincipals</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L484" class="blob-num js-line-number js-blob-rnum" data-line-number="484"></td> <td id="file-sp_srvpermissions-sql-LC484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvRoles</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L485" class="blob-num js-line-number js-blob-rnum" data-line-number="485"></td> <td id="file-sp_srvpermissions-sql-LC485" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> ##SrvPermissions</td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L486" class="blob-num js-line-number js-blob-rnum" data-line-number="486"></td> <td id="file-sp_srvpermissions-sql-LC486" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L487" class="blob-num js-line-number js-blob-rnum" data-line-number="487"></td> <td id="file-sp_srvpermissions-sql-LC487" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L488" class="blob-num js-line-number js-blob-rnum" data-line-number="488"></td> <td id="file-sp_srvpermissions-sql-LC488" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L489" class="blob-num js-line-number js-blob-rnum" data-line-number="489"></td> <td id="file-sp_srvpermissions-sql-LC489" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sp_srvpermissions-sql-L490" class="blob-num js-line-number js-blob-rnum" data-line-number="490"></td> <td id="file-sp_srvpermissions-sql-LC490" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> #sp_SrvPermissions</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/332b4bc4924464fa25047604b8cebe1d 2021-02-17T16:22:29Z 2022-08-29T10:05:22Z The simplest possible alternative to sp_MSforeachdb Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/332b4bc4924464fa25047604b8cebe1d#file-simplest_alternative_to_sp_msforeachdb-sql">simplest_alternative_to_sp_MSforeachdb.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-simplest_alternative_to_sp_msforeachdb-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="simplest_alternative_to_sp_MSforeachdb.sql content, created by EitanBlumin on 04:22PM on February 17, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="simplest_alternative_to_sp_MSforeachdb.sql"> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin | https://eitanblumin.com | https://madeiradata.com</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Description:</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This is the simplest possible alternative to sp_MSforeachdb which is not too great.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Instructions:</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">1. Replace the contents of the @Command variable with the command you want to run INSIDE each database.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">2. Replace the contents of the @Parameters variable with the parameters you want the command to receive.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c">3. Add parameters as needed, given @p1 as an example.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">4. Change the database filter predicates in the cursor declaration, as needed.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Remarks:</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- The command will be run within the context of each online database in the SQL Server instance.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- This version does NOT support the &quot;?&quot; replacer character.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- Instead, you can use DB_NAME() to get the name of the current database context.</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC18" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span>, <span class="pl-k">XACT_ABORT</span>, <span class="pl-k">ARITHABORT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC20" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Command <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>PRINT DB_NAME() + N&#39;<span class="pl-pds">&#39;</span>: &#39;<span class="pl-pds">&#39;</span> + @p1&#39;</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Parameters <span class="pl-k">nvarchar</span>(<span class="pl-c1">max</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@p1 nvarchar(100)&#39;</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @p1 <span class="pl-k">nvarchar</span>(<span class="pl-c1">100</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>I am @p1&#39;</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC24" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @CurrDB <span class="pl-k">sysname</span>, @spExecuteSQL <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>)</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC26" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> DBs <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC29" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> [name]</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">databases</span> <span class="pl-k">WITH</span> (<span class="pl-k">NOLOCK</span>)</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-k">state</span> <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-c"><span class="pl-c">/*</span> online only <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> HAS_DBACCESS([name]) <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-c"><span class="pl-c">/*</span> accessible only <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> database_id <span class="pl-k">&gt;</span> <span class="pl-c1">4</span> <span class="pl-k">AND</span> is_distributor <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-c"><span class="pl-c">/*</span> ignore system databases <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">DATABASEPROPERTYEX</span>([name], <span class="pl-s"><span class="pl-pds">&#39;</span>Updateability&#39;</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>READ_WRITE&#39;</span> <span class="pl-c"><span class="pl-c">/*</span> writeable only <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC36" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> DBs</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC41" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> DBs <span class="pl-k">INTO</span> @CurrDB;</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC43" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC44" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SET</span> @spExecuteSQL <span class="pl-k">=</span> <span class="pl-c1">QUOTENAME</span>(@CurrDB) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>..sp_executesql&#39;</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC45" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> @spExecuteSQL @Command, @Parameters, @p1 <span class="pl-c"><span class="pl-c">/*</span> add or remove parameters here as needed <span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC47" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WITH</span> <span class="pl-k">RECOMPILE</span>; <span class="pl-c"><span class="pl-c">--</span> use RECOMPILE to avoid storing in plan cache for each DB</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC49" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> DBs;</td> </tr> <tr> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-simplest_alternative_to_sp_msforeachdb-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> DBs;</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/df6d86fb017b137d0f66d134a642a5f5 2021-01-20T07:22:02Z 2021-11-16T08:48:38Z Script to configure load balancer listener IP and name for a domain-independent Availability Group in a Windows Workgroup Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/df6d86fb017b137d0f66d134a642a5f5#file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1">Configure load balancer IP and name for a domain-independent AG.ps1</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-powershell " style="overflow: auto" tabindex="0" role="region" aria-label="Configure load balancer IP and name for a domain-independent AG.ps1 content, created by EitanBlumin on 07:22AM on January 20, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Configure load balancer IP and name for a domain-independent AG.ps1"> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">&lt;#</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">SYNOPSIS</span></span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Script to configure load balancer listener IP and name for a domain-independent Availability Group in a Windows Workgroup</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Date: 2021-01-20</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">DESCRIPTION</span></span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c">This script is adapted from the scripts provided in the following resources:</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/sql-server-workgroup-cluster-fcm-errors/ba-p/371387</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://docs.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/availability-group-load-balancer-portal-configure#configure-the-cluster-to-use-the-load-balancer-ip-address</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c"><span class="pl-c1">.</span><span class="pl-k">LINK</span></span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c">See Microsoft Docs issue #69173: https://github.com/MicrosoftDocs/azure-docs/issues/69173</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#&gt;</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$ListenerName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;MyListenerName&gt;<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$IPResourceName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;MyIPResourceName&gt;<span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span> the IP Address resource name</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$ListenerILBIP</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;n.n.n.n&gt;<span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span> the IP Address of the Internal Load Balancer (ILB). This is the static IP address for the load balancer you configured in the Azure portal.</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC21" class="blob-code blob-code-inner js-file-line">[<span class="pl-k">int</span>]<span class="pl-smi">$ListenerProbePort</span> <span class="pl-k">=</span> <span class="pl-k">&lt;</span>nnnnn<span class="pl-k">&gt;</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$ListenerSubnet</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>255.255.255.255<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$ClusterAGRole</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;MyClusterRoleName&gt;<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$ClusterNetworkName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;MyClusterNetworkName&gt;<span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">#</span> the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC25" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Import-Module</span> FailoverClusters <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Add-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$IPResourceName</span> <span class="pl-k">-</span>ResourceType <span class="pl-s"><span class="pl-pds">&quot;</span>IP Address<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>Group <span class="pl-smi">$ClusterAGRole</span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Get-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$IPResourceName</span> <span class="pl-k">|</span> <span class="pl-c1">Set-ClusterParameter</span> <span class="pl-k">-</span>Multiple <span class="pl-k">@</span>{<span class="pl-s"><span class="pl-pds">&quot;</span>Address<span class="pl-pds">&quot;</span></span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$ListenerILBIP</span><span class="pl-pds">&quot;</span></span>;<span class="pl-s"><span class="pl-pds">&quot;</span>ProbePort<span class="pl-pds">&quot;</span></span><span class="pl-k">=</span><span class="pl-smi">$ListenerProbePort</span>;<span class="pl-s"><span class="pl-pds">&quot;</span>SubnetMask<span class="pl-pds">&quot;</span></span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$ListenerSubnet</span><span class="pl-pds">&quot;</span></span>;<span class="pl-s"><span class="pl-pds">&quot;</span>Network<span class="pl-pds">&quot;</span></span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$ClusterNetworkName</span><span class="pl-pds">&quot;</span></span>;<span class="pl-s"><span class="pl-pds">&quot;</span>EnableDhcp<span class="pl-pds">&quot;</span></span><span class="pl-k">=</span><span class="pl-c1">0</span>}</td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC30" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Add-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$ListenerName</span> <span class="pl-k">-</span>Group <span class="pl-smi">$ClusterAGRole</span> <span class="pl-k">-</span>ResourceType <span class="pl-s"><span class="pl-pds">&quot;</span>Network Name<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Get-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$ListenerName</span> <span class="pl-k">|</span> <span class="pl-c1">Set-ClusterParameter</span> <span class="pl-k">-</span>Multiple <span class="pl-k">@</span>{<span class="pl-s"><span class="pl-pds">&quot;</span>DnsName<span class="pl-pds">&quot;</span></span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$ListenerName</span><span class="pl-pds">&quot;</span></span>;<span class="pl-s"><span class="pl-pds">&quot;</span>RegisterAllProvidersIP<span class="pl-pds">&quot;</span></span> <span class="pl-k">=</span> <span class="pl-c1">1</span>} </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Set-ClusterResourceDependency</span> <span class="pl-k">-</span>Resource <span class="pl-smi">$ListenerName</span> <span class="pl-k">-</span>Dependency <span class="pl-s"><span class="pl-pds">&quot;</span>[<span class="pl-smi">$IPResourceName</span>]<span class="pl-pds">&quot;</span></span> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Start-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$ListenerName</span> <span class="pl-k">-</span>Verbose </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC35" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Stop-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$ClusterAGRole</span> <span class="pl-k">-</span>Verbose </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Set-ClusterResourceDependency</span> <span class="pl-k">-</span>Resource <span class="pl-smi">$ClusterAGRole</span> <span class="pl-k">-</span>Dependency <span class="pl-s"><span class="pl-pds">&quot;</span>[<span class="pl-smi">$ListenerName</span>]<span class="pl-pds">&quot;</span></span> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-configure-load-balancer-ip-and-name-for-a-domain-independent-ag-ps1-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Start-ClusterResource</span> <span class="pl-k">-</span>Name <span class="pl-smi">$ClusterAGRole</span> <span class="pl-k">-</span>Verbose </td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/31a6d886d3da5c17605201ea91ee454d 2021-01-14T14:38:39Z 2021-01-14T14:38:39Z Relocate AG Database Files.ps1 Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/31a6d886d3da5c17605201ea91ee454d#file-relocate-ag-database-files-ps1">Relocate AG Database Files.ps1</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-relocate-ag-database-files-ps1" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-powershell " style="overflow: auto" tabindex="0" role="region" aria-label="Relocate AG Database Files.ps1 content, created by EitanBlumin on 02:38PM on January 14, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Relocate AG Database Files.ps1"> <tr> <td id="file-relocate-ag-database-files-ps1-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-relocate-ag-database-files-ps1-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>############# Setup ##############</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-relocate-ag-database-files-ps1-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-relocate-ag-database-files-ps1-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$AGName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-relocate-ag-database-files-ps1-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$AGPrimary</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-relocate-ag-database-files-ps1-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$AGSecondary</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-relocate-ag-database-files-ps1-LC6" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-relocate-ag-database-files-ps1-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> This allows you to process just a subset of databases using the name (wildcards are possible)</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-relocate-ag-database-files-ps1-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$DBNamePattern</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>AdventureW*<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-relocate-ag-database-files-ps1-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-relocate-ag-database-files-ps1-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$TargetFolder</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>K:\Data\<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-relocate-ag-database-files-ps1-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$DBDataFolder</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>D:\Data\<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-relocate-ag-database-files-ps1-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$DBLogFolder</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>L:\LOG\<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-relocate-ag-database-files-ps1-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$Sourcefolder</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>L:\LOG\<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-relocate-ag-database-files-ps1-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$LogFilePattern</span> <span class="pl-k">=</span> <span class="pl-smi">$DBNamePattern</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.ldf<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-relocate-ag-database-files-ps1-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$DataFilePattern</span> <span class="pl-k">=</span> <span class="pl-smi">$DBNamePattern</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.mdf<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-relocate-ag-database-files-ps1-LC16" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-relocate-ag-database-files-ps1-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Yes, this is in a console and doing console output stuff..... if this is made into a &quot;real&quot; function this would be removed</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-relocate-ag-database-files-ps1-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Clear-Host</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-relocate-ag-database-files-ps1-LC19" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-relocate-ag-database-files-ps1-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span>############# Work actually begins here ##############</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-relocate-ag-database-files-ps1-LC21" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-relocate-ag-database-files-ps1-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> We build a list of databases using the folder location, because we only want to move databases that are actually on the old storage. The filenames are also the names of the databases.</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-relocate-ag-database-files-ps1-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbs</span> <span class="pl-k">=</span> (<span class="pl-c1">Get-ChildItem</span> <span class="pl-k">-</span>Path <span class="pl-smi">$SourceFolder</span><span class="pl-k">*</span> <span class="pl-k">-</span>Include <span class="pl-smi">$LogFilePattern</span> ).BaseName</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-relocate-ag-database-files-ps1-LC24" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-relocate-ag-database-files-ps1-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Tons of colourful output, because I like it when it runs for hours and I see something happening</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-relocate-ag-database-files-ps1-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Beginning move of files for &#39;<span class="pl-smi">$DBNamePattern</span>&#39; databases on <span class="pl-smi">$AGSecondary</span> (<span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$dbs<span class="pl-smi">.Count</span></span><span class="pl-pse">)</span> databases) <span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Green</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-relocate-ag-database-files-ps1-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-relocate-ag-database-files-ps1-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Make sure the TargetFolder is there (using robocopy to copy folder permissions, becuase I don&#39;t know a concise way to do this in PoSh)</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-relocate-ag-database-files-ps1-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> (<span class="pl-k">!</span>(<span class="pl-c1">Test-Path</span> <span class="pl-k">-</span>PathType Container <span class="pl-k">-</span>Path <span class="pl-smi">$TargetFolder</span>)) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-relocate-ag-database-files-ps1-LC30" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-relocate-ag-database-files-ps1-LC31" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$Targetfolder</span> missing, creating folder with correct permissions<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Yellow</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-relocate-ag-database-files-ps1-LC32" class="blob-code blob-code-inner js-file-line"> robocopy <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$DBDataFolder</span><span class="pl-pds">&quot;</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$TargetFolder</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">/</span>e <span class="pl-k">/</span>copyall <span class="pl-k">/</span>xf <span class="pl-k">*</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-relocate-ag-database-files-ps1-LC33" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-relocate-ag-database-files-ps1-LC34" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-relocate-ag-database-files-ps1-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Make sure AGSecondary can be read from (normally turned off, but we need to read from it for the move)</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-relocate-ag-database-files-ps1-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Turning on readable secondary for AG &#39;<span class="pl-smi">$AGName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-relocate-ag-database-files-ps1-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Set-DbaAgReplica</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGPrimary</span> <span class="pl-k">-</span>AvailabilityGroup <span class="pl-smi">$AGname</span> <span class="pl-k">-</span>ConnectionModeInSecondaryRole Yes <span class="pl-k">-</span>Replica <span class="pl-smi">$AGSecondary</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-relocate-ag-database-files-ps1-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-relocate-ag-database-files-ps1-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">foreach</span> (<span class="pl-smi">$DatabaseName</span> <span class="pl-k">in</span> <span class="pl-smi">$dbs</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-relocate-ag-database-files-ps1-LC40" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-relocate-ag-database-files-ps1-LC41" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Begin Database File Relocation for <span class="pl-smi">$DatabaseName</span> in AG &#39;<span class="pl-smi">$AGName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-relocate-ag-database-files-ps1-LC42" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-relocate-ag-database-files-ps1-LC43" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Read the locations of the Data and Log files on the secondary to see if we have to move anything</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-relocate-ag-database-files-ps1-LC44" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$DatabaseFiles</span> <span class="pl-k">=</span> <span class="pl-c1">Get-DbaDbFile</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>Database <span class="pl-smi">$DatabaseName</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-relocate-ag-database-files-ps1-LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$DatabaseLogFile</span> <span class="pl-k">=</span> <span class="pl-c1">Get-DbaDbFile</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>Database <span class="pl-smi">$DatabaseName</span> <span class="pl-k">|</span> <span class="pl-c1">Where-Object</span> TypeDescription <span class="pl-k">-EQ</span> <span class="pl-s"><span class="pl-pds">&quot;</span>LOG<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-relocate-ag-database-files-ps1-LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$SourceFolder</span> <span class="pl-k">=</span> <span class="pl-smi">$DatabaseLogFile<span class="pl-smi">.PhysicalName.Substring</span></span>(<span class="pl-c1">0</span><span class="pl-k">,</span> (<span class="pl-smi">$DatabaseLogFile<span class="pl-smi">.PhysicalName.LastIndexOf</span></span>(<span class="pl-s"><span class="pl-pds">&#39;</span>\<span class="pl-pds">&#39;</span></span>) <span class="pl-k">+</span> <span class="pl-c1">1</span>))</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-relocate-ag-database-files-ps1-LC47" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-relocate-ag-database-files-ps1-LC48" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Do we have work to do?</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-relocate-ag-database-files-ps1-LC49" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$SourceFolder</span> <span class="pl-k">-ne</span> <span class="pl-smi">$TargetFolder</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-relocate-ag-database-files-ps1-LC50" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-relocate-ag-database-files-ps1-LC51" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Pause the AG for this DB </span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-relocate-ag-database-files-ps1-LC52" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Pausing data movement in AG &#39;<span class="pl-smi">$AGName</span>&#39; for <span class="pl-smi">$DatabaseName</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-relocate-ag-database-files-ps1-LC53" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Suspend-DbaAgDbDataMovement</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>AvailabilityGroup <span class="pl-smi">$AGName</span> <span class="pl-k">-</span>Database <span class="pl-smi">$DatabaseName</span> <span class="pl-k">-</span>Confirm:<span class="pl-c1">$false</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-relocate-ag-database-files-ps1-LC54" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-relocate-ag-database-files-ps1-LC55" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Remove the DB from the AG on the secondary so we can modify file paths</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-relocate-ag-database-files-ps1-LC56" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> I know, &quot;SET HADR OFF&quot; scared me too, but it doesn&#39;t break the AG, I promise!</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-relocate-ag-database-files-ps1-LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> This might be replaced by Remove-DbaAgReplica, but not sure about that</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-relocate-ag-database-files-ps1-LC58" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Removing database <span class="pl-smi">$DatabaseName</span> from AG &#39;<span class="pl-smi">$AGName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-relocate-ag-database-files-ps1-LC59" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-DbaQuery</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>Database master <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET HADR OFF;<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-relocate-ag-database-files-ps1-LC60" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-relocate-ag-database-files-ps1-LC61" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Update the metadata for the database file locations</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-relocate-ag-database-files-ps1-LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Updating Database Metadata for <span class="pl-smi">$DatabaseName</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-relocate-ag-database-files-ps1-LC63" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">foreach</span> (<span class="pl-smi">$DatabaseFile</span> <span class="pl-k">in</span> <span class="pl-smi">$DatabaseFiles</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-relocate-ag-database-files-ps1-LC64" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$OldLocation</span> <span class="pl-k">=</span> <span class="pl-smi">$DatabaseFile<span class="pl-smi">.PhysicalName</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-relocate-ag-database-files-ps1-LC65" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-relocate-ag-database-files-ps1-LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$NewLocation</span> <span class="pl-k">=</span> (<span class="pl-c1">Join-Path</span> <span class="pl-smi">$TargetFolder</span> (<span class="pl-smi">$DatabaseFile<span class="pl-smi">.PhysicalName</span></span> <span class="pl-k">-replace</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.*\\<span class="pl-pds">&#39;</span></span>))</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-relocate-ag-database-files-ps1-LC67" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-relocate-ag-database-files-ps1-LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$OldLocation</span> <span class="pl-k">-ne</span> <span class="pl-smi">$NewLocation</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-relocate-ag-database-files-ps1-LC69" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-DbaQuery</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>Database master <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] MODIFY FILE (NAME = <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$DatabaseFile<span class="pl-smi">.LogicalName</span></span><span class="pl-pse">)</span>, FILENAME = &#39;<span class="pl-smi">$NewLocation</span>&#39;);<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-relocate-ag-database-files-ps1-LC70" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-relocate-ag-database-files-ps1-LC71" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-relocate-ag-database-files-ps1-LC72" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-relocate-ag-database-files-ps1-LC73" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-relocate-ag-database-files-ps1-LC74" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-relocate-ag-database-files-ps1-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Offline the SQL Server (to release the file locks in the filesystem)</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-relocate-ag-database-files-ps1-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Taking <span class="pl-smi">$AGSecondary</span> offline<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-relocate-ag-database-files-ps1-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Stop-DbaService</span> <span class="pl-smi">$AGSecondary</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-relocate-ag-database-files-ps1-LC78" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-relocate-ag-database-files-ps1-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Move the data files to the new location</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-relocate-ag-database-files-ps1-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dbdatafiles</span> <span class="pl-k">=</span> <span class="pl-c1">Get-ChildItem</span> <span class="pl-k">-</span>Path <span class="pl-smi">$DBDataFolder</span><span class="pl-k">*</span> <span class="pl-k">-</span>Include <span class="pl-smi">$DataFilePattern</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-relocate-ag-database-files-ps1-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-k">foreach</span> (<span class="pl-smi">$file</span> <span class="pl-k">in</span> <span class="pl-smi">$dbdatafiles</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-relocate-ag-database-files-ps1-LC82" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-relocate-ag-database-files-ps1-LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Moving <span class="pl-smi">$file</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-relocate-ag-database-files-ps1-LC84" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-relocate-ag-database-files-ps1-LC85" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$OldLocation</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-smi">$DBDataFolder</span> <span class="pl-smi">$file<span class="pl-smi">.Name</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-relocate-ag-database-files-ps1-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$NewLocation</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-smi">$TargetFolder</span> <span class="pl-smi">$file<span class="pl-smi">.Name</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-relocate-ag-database-files-ps1-LC87" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-relocate-ag-database-files-ps1-LC88" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$OldLocation</span> <span class="pl-k">-ne</span> <span class="pl-smi">$NewLocation</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-relocate-ag-database-files-ps1-LC89" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Move-Item</span> <span class="pl-k">-</span>Path <span class="pl-smi">$OldLocation</span> <span class="pl-k">-</span>Destination <span class="pl-smi">$NewLocation</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-relocate-ag-database-files-ps1-LC90" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-relocate-ag-database-files-ps1-LC91" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-relocate-ag-database-files-ps1-LC92" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-relocate-ag-database-files-ps1-LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Move the log files to the new location</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-relocate-ag-database-files-ps1-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-smi">$dblogfiles</span> <span class="pl-k">=</span> <span class="pl-c1">Get-ChildItem</span> <span class="pl-k">-</span>Path <span class="pl-smi">$DBLogFolder</span><span class="pl-k">*</span> <span class="pl-k">-</span>Include <span class="pl-smi">$LogFilePattern</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-relocate-ag-database-files-ps1-LC95" class="blob-code blob-code-inner js-file-line"><span class="pl-k">foreach</span> (<span class="pl-smi">$file</span> <span class="pl-k">in</span> <span class="pl-smi">$dblogfiles</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-relocate-ag-database-files-ps1-LC96" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-relocate-ag-database-files-ps1-LC97" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Moving <span class="pl-smi">$file</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-relocate-ag-database-files-ps1-LC98" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-relocate-ag-database-files-ps1-LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$OldLocation</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-smi">$DBLogFolder</span> <span class="pl-smi">$file<span class="pl-smi">.Name</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-relocate-ag-database-files-ps1-LC100" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">$NewLocation</span> <span class="pl-k">=</span> <span class="pl-c1">Join-Path</span> <span class="pl-smi">$TargetFolder</span> <span class="pl-smi">$file<span class="pl-smi">.Name</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-relocate-ag-database-files-ps1-LC101" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-relocate-ag-database-files-ps1-LC102" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">$OldLocation</span> <span class="pl-k">-ne</span> <span class="pl-smi">$NewLocation</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-relocate-ag-database-files-ps1-LC103" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Move-Item</span> <span class="pl-k">-</span>Path <span class="pl-smi">$OldLocation</span> <span class="pl-k">-</span>Destination <span class="pl-smi">$NewLocation</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-relocate-ag-database-files-ps1-LC104" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-relocate-ag-database-files-ps1-LC105" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-relocate-ag-database-files-ps1-LC106" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-relocate-ag-database-files-ps1-LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Start SQL Server again</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-relocate-ag-database-files-ps1-LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Start-DbaService</span> <span class="pl-smi">$AGSecondary</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-relocate-ag-database-files-ps1-LC109" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-relocate-ag-database-files-ps1-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Give SQL Server a moment to start up / recover the databases</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-relocate-ag-database-files-ps1-LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Start-Sleep</span> <span class="pl-c1">10</span> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-relocate-ag-database-files-ps1-LC112" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-relocate-ag-database-files-ps1-LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Add the databases back into the availability group</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-relocate-ag-database-files-ps1-LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-k">foreach</span> (<span class="pl-smi">$DatabaseName</span> <span class="pl-k">in</span> <span class="pl-smi">$dbs</span>) {</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-relocate-ag-database-files-ps1-LC115" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-relocate-ag-database-files-ps1-LC116" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Bringing <span class="pl-smi">$DatabaseName</span> back into Availability Group <span class="pl-smi">$AGName</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-relocate-ag-database-files-ps1-LC117" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Invoke-DbaQuery</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGSecondary</span> <span class="pl-k">-</span>Database master <span class="pl-k">-</span>Query <span class="pl-s"><span class="pl-pds">&quot;</span>ALTER DATABASE [<span class="pl-smi">$DatabaseName</span>] SET HADR AVAILABILITY GROUP = [<span class="pl-smi">$AGName</span>];<span class="pl-pds">&quot;</span></span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-relocate-ag-database-files-ps1-LC118" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-relocate-ag-database-files-ps1-LC119" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-relocate-ag-database-files-ps1-LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Turning off readable secondary for AG &#39;<span class="pl-smi">$AGName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Blue</td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-relocate-ag-database-files-ps1-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Set-DbaAgReplica</span> <span class="pl-k">-</span>SqlInstance <span class="pl-smi">$AGPrimary</span> <span class="pl-k">-</span>AvailabilityGroup <span class="pl-smi">$AGname</span> <span class="pl-k">-</span>ConnectionModeInSecondaryRole No <span class="pl-k">-</span>Replica <span class="pl-smi">$AGSecondary</span> <span class="pl-k">|</span> <span class="pl-c1">Out-Null</span></td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-relocate-ag-database-files-ps1-LC122" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-relocate-ag-database-files-ps1-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-relocate-ag-database-files-ps1-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">Write-Host</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Completed move of database files for <span class="pl-smi">$DatabaseName</span> on AG &#39;<span class="pl-smi">$AGName</span>&#39;<span class="pl-pds">&quot;</span></span> <span class="pl-k">-</span>ForegroundColor Green</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/7691a8cd0464cf10febf58b5c68b20b5 2021-01-11T19:59:34Z 2021-11-16T08:49:20Z Script to run in the SentryOne database to get CPU utilization min/max/avg/6σ for all targets Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/7691a8cd0464cf10febf58b5c68b20b5#file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql">SentryOne_CPU_Utilization_Stats_for_all_Sql_Server_Targets.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="SentryOne_CPU_Utilization_Stats_for_all_Sql_Server_Targets.sql content, created by EitanBlumin on 07:59PM on January 11, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="SentryOne_CPU_Utilization_Stats_for_all_Sql_Server_Targets.sql"> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">USE</span> SentryOne</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC4" class="blob-code blob-code-inner js-file-line"> @SiteName <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC5" class="blob-code blob-code-inner js-file-line">,@SqlServerName <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>) <span class="pl-k">=</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC6" class="blob-code blob-code-inner js-file-line">,@End_date <span class="pl-k">DATETIME</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC7" class="blob-code blob-code-inner js-file-line">,@Start_date <span class="pl-k">DATETIME</span> <span class="pl-k">=</span> <span class="pl-k">NULL</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC8" class="blob-code blob-code-inner js-file-line">,@CounterID <span class="pl-k">SMALLINT</span> <span class="pl-k">=</span> <span class="pl-c1">1858</span> <span class="pl-c"><span class="pl-c">--</span> CPU %</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC9" class="blob-code blob-code-inner js-file-line">,@DefaultDaysBack <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">90</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @End_date <span class="pl-k">=</span> <span class="pl-c1">ISNULL</span>(@End_date, <span class="pl-c1">CONVERT</span>(<span class="pl-k">date</span>, <span class="pl-c1">GETDATE</span>()))</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Start_date <span class="pl-k">=</span> <span class="pl-c1">ISNULL</span>(@Start_date, @End_date <span class="pl-k">-</span> @DefaultDaysBack)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC15" class="blob-code blob-code-inner js-file-line"> @DeviceID <span class="pl-k">smallint</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC16" class="blob-code blob-code-inner js-file-line"> , @ConnectionID <span class="pl-k">smallint</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC17" class="blob-code blob-code-inner js-file-line"> , @StartTimestamp <span class="pl-k">int</span> <span class="pl-k">=</span> [SentryOne].[dbo].[fnConvertDateTimeToTimestamp](@Start_date)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC18" class="blob-code blob-code-inner js-file-line"> , @EndTimestamp <span class="pl-k">int</span> <span class="pl-k">=</span> [SentryOne].[dbo].[fnConvertDateTimeToTimestamp](@End_date)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC19" class="blob-code blob-code-inner js-file-line"> , @RangeSizeMinutes <span class="pl-k">int</span> <span class="pl-k">=</span> <span class="pl-c1">DATEDIFF</span>(minute, @Start_date, @End_date)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC20" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @AggPerf <span class="pl-k">AS</span> <span class="pl-k">TABLE</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC22" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC23" class="blob-code blob-code-inner js-file-line"> [AvgVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC24" class="blob-code blob-code-inner js-file-line"> [MinVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC25" class="blob-code blob-code-inner js-file-line"> [MaxVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC26" class="blob-code blob-code-inner js-file-line"> [STD] <span class="pl-k">FLOAT</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC27" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC28" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @Result <span class="pl-k">AS</span> <span class="pl-k">TABLE</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC30" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC31" class="blob-code blob-code-inner js-file-line"> [SiteName] <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>),</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC32" class="blob-code blob-code-inner js-file-line"> [SqlServerName] <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>),</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC33" class="blob-code blob-code-inner js-file-line"> [AvgVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC34" class="blob-code blob-code-inner js-file-line"> [MinVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC35" class="blob-code blob-code-inner js-file-line"> [MaxVal] <span class="pl-k">FLOAT</span>,</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC36" class="blob-code blob-code-inner js-file-line"> [STD] <span class="pl-k">FLOAT</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC37" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> SqlServers <span class="pl-k">CURSOR</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LOCAL</span> <span class="pl-k">FAST_FORWARD</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC41" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">d</span>.<span class="pl-c1">ObjectName</span>, <span class="pl-c1">s</span>.<span class="pl-c1">Name</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> Device <span class="pl-k">AS</span> d</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-k">Site</span> <span class="pl-k">AS</span> s <span class="pl-k">ON</span> <span class="pl-c1">d</span>.<span class="pl-c1">SiteID</span> <span class="pl-k">=</span> <span class="pl-c1">s</span>.<span class="pl-c1">ID</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">d</span>.<span class="pl-c1">ID</span> <span class="pl-k">IN</span> (<span class="pl-k">SELECT</span> DeviceID <span class="pl-k">FROM</span> vwSqlServer)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@SiteName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">s</span>.<span class="pl-c1">Name</span> <span class="pl-k">=</span> @SiteName)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@SqlServerName <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">d</span>.<span class="pl-c1">ObjectName</span> <span class="pl-k">=</span> @SqlServerName)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC48" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OPEN</span> SqlServers</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC50" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHILE</span> <span class="pl-c1">1</span><span class="pl-k">=</span><span class="pl-c1">1</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC53" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC54" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FETCH</span> <span class="pl-k">NEXT</span> <span class="pl-k">FROM</span> SqlServers <span class="pl-k">INTO</span> @SqlServerName, @SiteName</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC55" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">IF</span> <span class="pl-c1">@@FETCH_STATUS</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">0</span> <span class="pl-k">BREAK</span>;</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC56" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> @ConnectionID <span class="pl-k">=</span> <span class="pl-c1">c</span>.<span class="pl-c1">ID</span>, @DeviceID <span class="pl-k">=</span> <span class="pl-c1">d</span>.<span class="pl-c1">ID</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC58" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">Device</span> <span class="pl-k">AS</span> d</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC59" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INNER JOIN</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">EventSourceConnection</span> <span class="pl-k">AS</span> c</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC60" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ON</span> <span class="pl-c1">d</span>.<span class="pl-c1">ID</span> <span class="pl-k">=</span> <span class="pl-c1">c</span>.<span class="pl-c1">DeviceID</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC61" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INNER JOIN</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">EventSourceConnectionType</span> <span class="pl-k">AS</span> ect</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ON</span> <span class="pl-c1">c</span>.<span class="pl-c1">EventSourceConnectionTypeID</span> <span class="pl-k">=</span> <span class="pl-c1">ect</span>.<span class="pl-c1">ObjectID</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC63" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INNER JOIN</span> dbo.[Site] <span class="pl-k">AS</span> s</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC64" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">ON</span> <span class="pl-c1">d</span>.<span class="pl-c1">SiteID</span> <span class="pl-k">=</span> <span class="pl-c1">s</span>.<span class="pl-c1">ID</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC65" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">WHERE</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">s</span>.<span class="pl-c1">Name</span> <span class="pl-k">=</span> @SiteName</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> <span class="pl-c1">ect</span>.<span class="pl-c1">Name</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>SQL Server&#39;</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC68" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">AND</span> @SqlServerName <span class="pl-k">IN</span> (<span class="pl-c1">d</span>.<span class="pl-c1">HostName</span>, <span class="pl-c1">d</span>.<span class="pl-c1">ObjectName</span>, <span class="pl-c1">d</span>.<span class="pl-c1">FriendlyName</span>, <span class="pl-c1">c</span>.<span class="pl-c1">ServerName</span>, <span class="pl-c1">c</span>.<span class="pl-c1">ObjectName</span>, <span class="pl-c1">c</span>.<span class="pl-c1">FriendlyName</span>)</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC69" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC70" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">--</span> Processor time:</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC71" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @AggPerf</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC72" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">EXEC</span> [dbo].[GetCounterBaselineDataAggregateForDeviceByTimestamp] @DeviceID, @CounterID, @StartTimestamp, @EndTimestamp, @RangeSizeMinutes</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC73" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">INSERT</span> <span class="pl-k">INTO</span> @Result</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC75" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">SELECT</span> @SiteName <span class="pl-k">AS</span> SiteName, @SqlServerName <span class="pl-k">AS</span> SqlServerName, <span class="pl-k">*</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC76" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">FROM</span> @AggPerf</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC77" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC78" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">DELETE</span> @AggPerf;</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC79" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC81" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CLOSE</span> SqlServers</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DEALLOCATE</span> SqlServers;</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC84" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">c</span>.<span class="pl-c1">CounterName</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC87" class="blob-code blob-code-inner js-file-line">, ag.<span class="pl-k">*</span></td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC88" class="blob-code blob-code-inner js-file-line">, SixSigmaMax <span class="pl-k">=</span> (<span class="pl-k">SELECT</span> <span class="pl-c1">MIN</span>(Val) <span class="pl-k">FROM</span> (<span class="pl-k">VALUES</span>(<span class="pl-c1">ag</span>.<span class="pl-c1">AvgVal</span> <span class="pl-k">+</span> <span class="pl-c1">ag</span>.<span class="pl-c1">STD</span> <span class="pl-k">*</span> <span class="pl-c1">6</span>),(<span class="pl-c1">ag</span>.<span class="pl-c1">MaxVal</span>)) <span class="pl-k">AS</span> a(Val))</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> @Result <span class="pl-k">AS</span> ag</td> </tr> <tr> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-sentryone_cpu_utilization_stats_for_all_sql_server_targets-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">dbo</span>.<span class="pl-c1">PerformanceAnalysisCounter</span> <span class="pl-k">AS</span> c <span class="pl-k">ON</span> <span class="pl-c1">c</span>.<span class="pl-c1">ID</span> <span class="pl-k">=</span> @CounterID</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/2c7badd7cb26aac36293c44cd1572017 2021-01-07T16:07:34Z 2022-03-20T17:19:06Z T-SQL script to retrieve the hierarchy tree for a given table, based on foreign key references. Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/2c7badd7cb26aac36293c44cd1572017#file-foreign_key_hierarchy_tree-sql">Foreign_Key_Hierarchy_Tree.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-foreign_key_hierarchy_tree-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Foreign_Key_Hierarchy_Tree.sql content, created by EitanBlumin on 04:07PM on January 07, 2021." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Foreign_Key_Hierarchy_Tree.sql"> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Retrieve Foreign Key Hierarchy Tree</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">===================================</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin | https://eitanblumin.com | https://madeiradata.com</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Date: 2021-01-07</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Description:</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Retrieve the hierarchy tree for a given table,</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">based on foreign key references.</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Use this script to map out your entity relational structure,</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">see which foreign keys are dependent on a given table,</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c">their names, and various constraint properties.</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Arguments:</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c">===========</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c">@TableName - Table name used as the initial &quot;point of entry&quot;. Hierarchy tree will extend from this &quot;root&quot; table.</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c">@MaxLevel - Used for avoiding exaggerated recursion depth.</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c">@AvoidInfiniteRecurse - Uses the hierarchyid data type to avoid infinite recursion loop.</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c">===================================</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC21" class="blob-code blob-code-inner js-file-line"> @TableName <span class="pl-k">SYSNAME</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>dbo.Catalog&#39;</span>,</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC22" class="blob-code blob-code-inner js-file-line"> @MaxLevel <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">100</span>,</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC23" class="blob-code blob-code-inner js-file-line"> @AvoidInfiniteRecurse <span class="pl-k">BIT</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC24" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WITH</span> Tree</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC28" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">1</span> <span class="pl-k">AS</span> lvl, fk.[name], fk.[object_id], fk.[parent_object_id], fk.[referenced_object_id]</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC30" class="blob-code blob-code-inner js-file-line">, <span class="pl-c1">fk</span>.<span class="pl-c1">delete_referential_action</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">update_referential_action</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC31" class="blob-code blob-code-inner js-file-line">, <span class="pl-c1">fk</span>.<span class="pl-c1">is_not_trusted</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">is_disabled</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">is_not_for_replication</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC32" class="blob-code blob-code-inner js-file-line">, hid <span class="pl-k">=</span> <span class="pl-c1">CAST</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>/&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>, fk.[referenced_object_id]) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>/&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>, fk.[parent_object_id]) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>/&#39;</span> <span class="pl-k">AS</span> <span class="pl-k">hierarchyid</span>)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">foreign_keys</span> <span class="pl-k">AS</span> fk</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">fk</span>.<span class="pl-c1">referenced_object_id</span> <span class="pl-k">=</span> <span class="pl-c1">OBJECT_ID</span>(@TableName)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC35" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC37" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">lvl</span> <span class="pl-k">+</span> <span class="pl-c1">1</span> <span class="pl-k">AS</span> lvl, fk.[name], fk.[object_id], fk.[parent_object_id], fk.[referenced_object_id]</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC39" class="blob-code blob-code-inner js-file-line">, <span class="pl-c1">fk</span>.<span class="pl-c1">delete_referential_action</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">update_referential_action</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC40" class="blob-code blob-code-inner js-file-line">, <span class="pl-c1">fk</span>.<span class="pl-c1">is_not_trusted</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">is_disabled</span>, <span class="pl-c1">fk</span>.<span class="pl-c1">is_not_for_replication</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC41" class="blob-code blob-code-inner js-file-line">, hid <span class="pl-k">=</span> <span class="pl-c1">CAST</span>(<span class="pl-c1">Tree</span>.<span class="pl-c1">hid</span>.ToString() <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>, fk.[parent_object_id]) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>/&#39;</span> <span class="pl-k">AS</span> <span class="pl-k">hierarchyid</span>)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">foreign_keys</span> <span class="pl-k">AS</span> fk</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> Tree <span class="pl-k">ON</span> <span class="pl-c1">fk</span>.<span class="pl-c1">referenced_object_id</span> <span class="pl-k">=</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">parent_object_id</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">parent_object_id</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">referenced_object_id</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@AvoidInfiniteRecurse <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-k">OR</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">hid</span>.ToString() <span class="pl-k">NOT</span> <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>%/&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">CONVERT</span>(<span class="pl-k">varchar</span>,fk.[parent_object_id]) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>/%&#39;</span>)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> (@MaxLevel <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">Tree</span>.<span class="pl-c1">lvl</span> <span class="pl-k">&lt;</span> @MaxLevel)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC47" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC49" class="blob-code blob-code-inner js-file-line"> lvl <span class="pl-k">=</span> <span class="pl-c1">MIN</span>(lvl)</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC50" class="blob-code blob-code-inner js-file-line">, foreign_key_name <span class="pl-k">=</span> [name]</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC51" class="blob-code blob-code-inner js-file-line">, table_name <span class="pl-k">=</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_SCHEMA_NAME</span>(parent_object_id)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_NAME</span>(parent_object_id))</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC52" class="blob-code blob-code-inner js-file-line">, referenced_table_name <span class="pl-k">=</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_SCHEMA_NAME</span>(referenced_object_id)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">OBJECT_NAME</span>(referenced_object_id))</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC53" class="blob-code blob-code-inner js-file-line">, on_delete_action <span class="pl-k">=</span> delete_referential_action</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC54" class="blob-code blob-code-inner js-file-line">, on_update_action <span class="pl-k">=</span> update_referential_action</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC55" class="blob-code blob-code-inner js-file-line">, is_not_trusted</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC56" class="blob-code blob-code-inner js-file-line">, is_disabled</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC57" class="blob-code blob-code-inner js-file-line">, is_not_for_replication</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> Tree</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GROUP BY</span></td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC60" class="blob-code blob-code-inner js-file-line"> [name]</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC61" class="blob-code blob-code-inner js-file-line">, parent_object_id, referenced_object_id</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC62" class="blob-code blob-code-inner js-file-line">, delete_referential_action, update_referential_action</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC63" class="blob-code blob-code-inner js-file-line">, is_not_trusted, is_disabled, is_not_for_replication</td> </tr> <tr> <td id="file-foreign_key_hierarchy_tree-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-foreign_key_hierarchy_tree-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/f64b1429b6cf45d93fb16c9c55f4afcb 2020-12-26T17:01:29Z 2020-12-26T17:01:29Z Generic script to delete time based data in batches Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/f64b1429b6cf45d93fb16c9c55f4afcb#file-delete_batches_from_table_by_datetime_column-sql">Delete_Batches_From_Table_By_DateTime_Column.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-delete_batches_from_table_by_datetime_column-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Delete_Batches_From_Table_By_DateTime_Column.sql content, created by EitanBlumin on 05:01PM on December 26, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Delete_Batches_From_Table_By_DateTime_Column.sql"> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC2" class="blob-code blob-code-inner js-file-line"> @DatabaseName <span class="pl-k">SYSNAME</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>MyDB&#39;</span>,</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC3" class="blob-code blob-code-inner js-file-line"> @TableName <span class="pl-k">SYSNAME</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>MyTable&#39;</span>,</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC4" class="blob-code blob-code-inner js-file-line"> @DateTimeColumnName <span class="pl-k">SYSNAME</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>MyColumn&#39;</span>,</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC5" class="blob-code blob-code-inner js-file-line"> @ThresholdDateTime <span class="pl-k">DATETIME</span> <span class="pl-k">=</span> <span class="pl-c1">DATEADD</span>(<span class="pl-c1">DAY</span>, <span class="pl-k">-</span><span class="pl-c1">14</span>, <span class="pl-c1">GETDATE</span>()),</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC6" class="blob-code blob-code-inner js-file-line"> @BatchSize <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">10000</span>,</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC7" class="blob-code blob-code-inner js-file-line"> @SleepBetweenBatches <span class="pl-k">VARCHAR</span>(<span class="pl-c1">17</span>) <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>00:00:00.6&#39;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC8" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @CMD <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>), @Executor <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">1000</span>);</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @DatabaseName <span class="pl-k">=</span> <span class="pl-c1">ISNULL</span>(@DatabaseName, <span class="pl-c1">DB_NAME</span>());</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">DB_ID</span>(@DatabaseName) <span class="pl-k">IS</span> <span class="pl-k">NULL</span> <span class="pl-k">OR</span> <span class="pl-c1">DATABASEPROPERTYEX</span>(@DatabaseName, <span class="pl-s"><span class="pl-pds">&#39;</span>Updateability&#39;</span>) <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>READ_WRITE&#39;</span> <span class="pl-k">OR</span> <span class="pl-c1">DATABASEPROPERTYEX</span>(@DatabaseName, <span class="pl-s"><span class="pl-pds">&#39;</span>Status&#39;</span>) <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>ONLINE&#39;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC15" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">RAISERROR</span>(<span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Database &quot;%s&quot; is not found or not accessible or not writeable.&#39;</span>, <span class="pl-c1">16</span>, <span class="pl-c1">1</span>, @DatabaseName);</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ELSE</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">BEGIN</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @CMD <span class="pl-k">=</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-s">IF NOT EXISTS (SELECT NULL FROM sys.columns WHERE object_id = OBJECT_ID(@TableName) AND [name] = @ColumnName)</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> RAISERROR(N<span class="pl-pds">&#39;&#39;</span>Column &quot;%s&quot; was not found for table &quot;%s&quot;!&#39;<span class="pl-pds">&#39;</span>,16,1, @ColumnName, @TableName);</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s">ELSE</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-s">BEGIN</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-s">WHILE 1=1</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-s">BEGIN</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> DELETE TOP (@BatchSize)</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> FROM <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @TableName <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WHERE <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> @DateTimeColumnName <span class="pl-k">+</span> N<span class="pl-s"><span class="pl-pds">&#39;</span> &lt; @ThresholdDateTime</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> IF @@ROWCOUNT = 0</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> BREAK;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> IF @SleepBetweenBatches IS NOT NULL</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> WAITFOR DELAY @SleepBetweenBatches;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s">END</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s">END<span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC36" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @Executor <span class="pl-k">=</span> <span class="pl-c1">QUOTENAME</span>(@DatabaseName) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>..sp_executesql&#39;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Database: &#39;</span> <span class="pl-k">+</span> @DatabaseName</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">PRINT</span> @CMD;</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC41" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span> @Executor @CMD</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC43" class="blob-code blob-code-inner js-file-line"> , <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@TableName SYSNAME, @ColumnName SYSNAME, @BatchSize INT, @ThresholdDateTime DATETIME, @SleepBetweenBatches VARCHAR(17)&#39;</span></td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC44" class="blob-code blob-code-inner js-file-line"> , @TableName, @DateTimeColumnName,@BatchSize, @ThresholdDateTime, @SleepBetweenBatches</td> </tr> <tr> <td id="file-delete_batches_from_table_by_datetime_column-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-delete_batches_from_table_by_datetime_column-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">END</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/07d4c10d5cc50fb21171323bb6817c62 2020-12-25T04:39:58Z 2020-12-25T04:52:08Z R stored procedure to load Excel files, by Matteo Lorini Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/07d4c10d5cc50fb21171323bb6817c62#file-r_myreadxcelproc-sql">R_myReadXcelProc.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-r_myreadxcelproc-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="R_myReadXcelProc.sql content, created by EitanBlumin on 04:39AM on December 25, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="R_myReadXcelProc.sql"> <tr> <td id="file-r_myreadxcelproc-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-r_myreadxcelproc-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">ANSI_NULLS</span> <span class="pl-k">ON</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-r_myreadxcelproc-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-r_myreadxcelproc-sql-LC3" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-r_myreadxcelproc-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">QUOTED_IDENTIFIER</span> <span class="pl-k">ON</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-r_myreadxcelproc-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-r_myreadxcelproc-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-r_myreadxcelproc-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Based on sample by Matteo Lorini:</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-r_myreadxcelproc-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://www.mssqltips.com/sqlservertip/6622/stored-procedure-in-sql-server-with-r-code/</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-r_myreadxcelproc-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-r_myreadxcelproc-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c">The readxl package needs to be installed first:</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-r_myreadxcelproc-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c">https://www.mssqltips.com/sqlservertip/4982/installing-external-r-packages-to-use-with-sql-server-2017/</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-r_myreadxcelproc-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-r_myreadxcelproc-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">PROCEDURE</span> [dbo].[R_myReadXcelProc]</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-r_myreadxcelproc-sql-LC14" class="blob-code blob-code-inner js-file-line"> @parallel_outer <span class="pl-k">bit</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-r_myreadxcelproc-sql-LC15" class="blob-code blob-code-inner js-file-line"> @srcFileName_outer <span class="pl-k">varchar</span>(<span class="pl-c1">max</span>),</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-r_myreadxcelproc-sql-LC16" class="blob-code blob-code-inner js-file-line"> @xlsxRows_outer <span class="pl-k">float</span> <span class="pl-k">output</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-r_myreadxcelproc-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AS</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-r_myreadxcelproc-sql-LC18" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span> <span class="pl-k">TRY</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-r_myreadxcelproc-sql-LC19" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">exec</span> sp_execute_external_script</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-r_myreadxcelproc-sql-LC20" class="blob-code blob-code-inner js-file-line"> @language <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>R&#39;</span>,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-r_myreadxcelproc-sql-LC21" class="blob-code blob-code-inner js-file-line"> @script <span class="pl-k">=</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-r_myreadxcelproc-sql-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> myReadXcelFunc &lt;- function (srcFileName)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-r_myreadxcelproc-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> {</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-r_myreadxcelproc-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> library(readxl)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-r_myreadxcelproc-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> myFile &lt;- read_xlsx(srcFileName)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-r_myreadxcelproc-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> numRows &lt;- nrow(myFile)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-r_myreadxcelproc-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> myFileDF &lt;- data.frame(myFile)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-r_myreadxcelproc-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> retList &lt;- list(xlsxFile = myFileDF, xlsxRows = numRows)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-r_myreadxcelproc-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> return(retList)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-r_myreadxcelproc-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> }</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-r_myreadxcelproc-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> result &lt;- myReadXcelFunc(srcFileName = srcFileName)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-r_myreadxcelproc-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> if (is.list(result)) {</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-r_myreadxcelproc-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> OutputDataSet &lt;- result$xlsxFile</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-r_myreadxcelproc-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> xlsxRows &lt;- result$xlsxRows</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-r_myreadxcelproc-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> } else stop(&quot;the R function must return a list&quot;)</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-r_myreadxcelproc-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> <span class="pl-pds">&#39;</span></span>,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-r_myreadxcelproc-sql-LC37" class="blob-code blob-code-inner js-file-line"> @parallel <span class="pl-k">=</span> @parallel_outer,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-r_myreadxcelproc-sql-LC38" class="blob-code blob-code-inner js-file-line"> @params <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>@srcFileName varchar(max), @xlsxRows float output&#39;</span>,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-r_myreadxcelproc-sql-LC39" class="blob-code blob-code-inner js-file-line"> @srcFileName <span class="pl-k">=</span> @srcFileName_outer,</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-r_myreadxcelproc-sql-LC40" class="blob-code blob-code-inner js-file-line"> @xlsxRows <span class="pl-k">=</span> @xlsxRows_outer <span class="pl-k">output</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-r_myreadxcelproc-sql-LC41" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> <span class="pl-k">TRY</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-r_myreadxcelproc-sql-LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">BEGIN</span> <span class="pl-k">CATCH</span></td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-r_myreadxcelproc-sql-LC43" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">THROW</span>;</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-r_myreadxcelproc-sql-LC44" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">END</span> <span class="pl-k">CATCH</span>;</td> </tr> <tr> <td id="file-r_myreadxcelproc-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-r_myreadxcelproc-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GO</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/c20697d9ff918ffbe42b11f72790abc5 2020-12-08T12:38:41Z 2020-12-24T12:05:55Z T-SQL script to read the contents of a SQLDump file's txt file Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/c20697d9ff918ffbe42b11f72790abc5#file-sqldump_file_examine-sql">SQLDump_File_Examine.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-sqldump_file_examine-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="SQLDump_File_Examine.sql content, created by EitanBlumin on 12:38PM on December 08, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="SQLDump_File_Examine.sql"> <tr> <td id="file-sqldump_file_examine-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-sqldump_file_examine-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-sqldump_file_examine-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Read contents of a SQLDump file&#39;s txt file</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-sqldump_file_examine-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c">=============================================</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-sqldump_file_examine-sql-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Author: Eitan Blumin | https://www.madeiradata.com</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-sqldump_file_examine-sql-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Date: 2020-12-08</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-sqldump_file_examine-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-sqldump_file_examine-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span>, <span class="pl-k">ARITHABORT</span>, <span class="pl-k">XACT_ABORT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-sqldump_file_examine-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @FilePath <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">4000</span>), @CMD <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>)</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-sqldump_file_examine-sql-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-sqldump_file_examine-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Use below to read the contents of latest memory dump file (mdmp) generated by the current instance:</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-sqldump_file_examine-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @FilePath <span class="pl-k">=</span> (<span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> <span class="pl-c1">1</span> <span class="pl-c1">REPLACE</span>([filename], <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>.mdmp&#39;</span>, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>.txt&#39;</span>) <span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">dm_server_memory_dumps</span> <span class="pl-k">ORDER BY</span> creation_time <span class="pl-k">DESC</span>)</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-sqldump_file_examine-sql-LC12" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-sqldump_file_examine-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span> Use below to read the contents of an explicitely specified txt file:</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-sqldump_file_examine-sql-LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>SET @FilePath = N&#39;C:\temp\SQLDump0001.txt&#39;</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-sqldump_file_examine-sql-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-sqldump_file_examine-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..#Bulk&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> #Bulk;</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-sqldump_file_examine-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-k">CREATE</span> <span class="pl-k">TABLE</span> #Bulk(Content <span class="pl-k">NVARCHAR</span>(<span class="pl-c1">MAX</span>));</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-sqldump_file_examine-sql-LC18" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-sqldump_file_examine-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> @CMD <span class="pl-k">=</span> N<span class="pl-s"><span class="pl-pds">&#39;</span></span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-sqldump_file_examine-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s">BULK INSERT #Bulk</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-sqldump_file_examine-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s">FROM <span class="pl-pds">&#39;</span></span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(@FilePath, <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>&#39;<span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-sqldump_file_examine-sql-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-sqldump_file_examine-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">EXEC</span>(@CMD);</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-sqldump_file_examine-sql-LC24" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-sqldump_file_examine-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ALTER</span> <span class="pl-k">TABLE</span> #Bulk <span class="pl-k">ADD</span> ID <span class="pl-k">INT</span> <span class="pl-k">IDENTITY</span>(<span class="pl-c1">1</span>,<span class="pl-c1">1</span>);</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-sqldump_file_examine-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @FromID <span class="pl-k">INT</span>, @ToID <span class="pl-k">INT</span>;</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-sqldump_file_examine-sql-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-sqldump_file_examine-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> @FromID <span class="pl-k">=</span> <span class="pl-c1">MIN</span>(ID), @ToID <span class="pl-k">=</span> <span class="pl-c1">MAX</span>(ID)</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-sqldump_file_examine-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> (</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-sqldump_file_examine-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-k">TOP</span> <span class="pl-c1">2</span> ID</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-sqldump_file_examine-sql-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> #Bulk</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-sqldump_file_examine-sql-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> Content <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>* **************%&#39;</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-sqldump_file_examine-sql-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-k">OR</span> Content <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>*%MODULE%BASE%END%SIZE%&#39;</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-sqldump_file_examine-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> ID <span class="pl-k">ASC</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-sqldump_file_examine-sql-LC35" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">AS</span> q</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-sqldump_file_examine-sql-LC36" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-sqldump_file_examine-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> Content <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>Source: &#39;</span> <span class="pl-k">+</span> @FilePath</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-sqldump_file_examine-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">UNION ALL</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-sqldump_file_examine-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> Content</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-sqldump_file_examine-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> #Bulk</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-sqldump_file_examine-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> Content <span class="pl-k">LIKE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>* %&#39;</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-sqldump_file_examine-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">LTRIM</span>(Content) <span class="pl-k">&lt;&gt;</span> <span class="pl-s"><span class="pl-pds">&#39;</span>*&#39;</span></td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-sqldump_file_examine-sql-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> ID <span class="pl-k">&gt;</span> @FromID</td> </tr> <tr> <td id="file-sqldump_file_examine-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-sqldump_file_examine-sql-LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> ID <span class="pl-k">&lt;</span> @ToID</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/cd1f17d271c08c2010cbf411f51ea35d 2020-12-07T14:58:05Z 2021-02-03T14:46:01Z Template Powershell script with built-in transcript log management Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/cd1f17d271c08c2010cbf411f51ea35d#file-powershell_template_with_transcript-ps1">Powershell_Template_with_Transcript.ps1</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-powershell_template_with_transcript-ps1" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-powershell " style="overflow: auto" tabindex="0" role="region" aria-label="Powershell_Template_with_Transcript.ps1 content, created by EitanBlumin on 02:58PM on December 07, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Powershell_Template_with_Transcript.ps1"> <tr> <td id="file-powershell_template_with_transcript-ps1-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-powershell_template_with_transcript-ps1-LC1" class="blob-code blob-code-inner js-file-line"># when creating a scheduled task to run such scripts, use the following structure example:</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-powershell_template_with_transcript-ps1-LC2" class="blob-code blob-code-inner js-file-line"># powershell.exe -NoProfile -ExecutionPolicy Bypass -File &quot;C:\Madeira\Powershell_Template_with_Transcript.ps1&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-powershell_template_with_transcript-ps1-LC3" class="blob-code blob-code-inner js-file-line">Param</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-powershell_template_with_transcript-ps1-LC4" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-powershell_template_with_transcript-ps1-LC5" class="blob-code blob-code-inner js-file-line">[string]$logFileFolderPath = &quot;C:\Madeira\log&quot;,</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-powershell_template_with_transcript-ps1-LC6" class="blob-code blob-code-inner js-file-line">[string]$logFilePrefix = &quot;my_ps_script_&quot;,</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-powershell_template_with_transcript-ps1-LC7" class="blob-code blob-code-inner js-file-line">[string]$logFileDateFormat = &quot;yyyyMMdd_HHmmss&quot;,</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-powershell_template_with_transcript-ps1-LC8" class="blob-code blob-code-inner js-file-line">[int]$logFileRetentionDays = 30</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-powershell_template_with_transcript-ps1-LC9" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-powershell_template_with_transcript-ps1-LC10" class="blob-code blob-code-inner js-file-line">Process {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-powershell_template_with_transcript-ps1-LC11" class="blob-code blob-code-inner js-file-line">#region initialization</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-powershell_template_with_transcript-ps1-LC12" class="blob-code blob-code-inner js-file-line">function Get-TimeStamp {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-powershell_template_with_transcript-ps1-LC13" class="blob-code blob-code-inner js-file-line"> Param(</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-powershell_template_with_transcript-ps1-LC14" class="blob-code blob-code-inner js-file-line"> [switch]$NoWrap,</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-powershell_template_with_transcript-ps1-LC15" class="blob-code blob-code-inner js-file-line"> [switch]$Utc</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-powershell_template_with_transcript-ps1-LC16" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-powershell_template_with_transcript-ps1-LC17" class="blob-code blob-code-inner js-file-line"> $dt = Get-Date</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-powershell_template_with_transcript-ps1-LC18" class="blob-code blob-code-inner js-file-line"> if ($Utc -eq $true) {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-powershell_template_with_transcript-ps1-LC19" class="blob-code blob-code-inner js-file-line"> $dt = $dt.ToUniversalTime()</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-powershell_template_with_transcript-ps1-LC20" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-powershell_template_with_transcript-ps1-LC21" class="blob-code blob-code-inner js-file-line"> $str = &quot;{0:MM/dd/yy} {0:HH:mm:ss}&quot; -f $dt</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-powershell_template_with_transcript-ps1-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-powershell_template_with_transcript-ps1-LC23" class="blob-code blob-code-inner js-file-line"> if ($NoWrap -ne $true) {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-powershell_template_with_transcript-ps1-LC24" class="blob-code blob-code-inner js-file-line"> $str = &quot;[$str]&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-powershell_template_with_transcript-ps1-LC25" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-powershell_template_with_transcript-ps1-LC26" class="blob-code blob-code-inner js-file-line"> return $str</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-powershell_template_with_transcript-ps1-LC27" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-powershell_template_with_transcript-ps1-LC28" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-powershell_template_with_transcript-ps1-LC29" class="blob-code blob-code-inner js-file-line">if ($logFileFolderPath -ne &quot;&quot;)</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-powershell_template_with_transcript-ps1-LC30" class="blob-code blob-code-inner js-file-line">{</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-powershell_template_with_transcript-ps1-LC31" class="blob-code blob-code-inner js-file-line"> if (!(Test-Path -PathType Container -Path $logFileFolderPath)) {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-powershell_template_with_transcript-ps1-LC32" class="blob-code blob-code-inner js-file-line"> Write-Output &quot;$(Get-TimeStamp) Creating directory $logFileFolderPath&quot; | Out-Null</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-powershell_template_with_transcript-ps1-LC33" class="blob-code blob-code-inner js-file-line"> New-Item -ItemType Directory -Force -Path $logFileFolderPath | Out-Null</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-powershell_template_with_transcript-ps1-LC34" class="blob-code blob-code-inner js-file-line"> } else {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-powershell_template_with_transcript-ps1-LC35" class="blob-code blob-code-inner js-file-line"> $DatetoDelete = $(Get-Date).AddDays(-$logFileRetentionDays)</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-powershell_template_with_transcript-ps1-LC36" class="blob-code blob-code-inner js-file-line"> Get-ChildItem $logFileFolderPath | Where-Object { $_.Name -like &quot;*$logFilePrefix*&quot; -and $_.LastWriteTime -lt $DatetoDelete } | Remove-Item | Out-Null</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-powershell_template_with_transcript-ps1-LC37" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-powershell_template_with_transcript-ps1-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-powershell_template_with_transcript-ps1-LC39" class="blob-code blob-code-inner js-file-line"> $logFilePath = $logFileFolderPath + &quot;\$logFilePrefix&quot; + (Get-Date -Format $logFileDateFormat) + &quot;.LOG&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-powershell_template_with_transcript-ps1-LC40" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-powershell_template_with_transcript-ps1-LC41" class="blob-code blob-code-inner js-file-line"> # attempt to start the transcript log, but don&#39;t fail the script if unsuccessful:</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-powershell_template_with_transcript-ps1-LC42" class="blob-code blob-code-inner js-file-line"> try </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-powershell_template_with_transcript-ps1-LC43" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-powershell_template_with_transcript-ps1-LC44" class="blob-code blob-code-inner js-file-line"> Start-Transcript -Path $logFilePath -Append</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-powershell_template_with_transcript-ps1-LC45" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-powershell_template_with_transcript-ps1-LC46" class="blob-code blob-code-inner js-file-line"> catch [Exception]</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-powershell_template_with_transcript-ps1-LC47" class="blob-code blob-code-inner js-file-line"> {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-powershell_template_with_transcript-ps1-LC48" class="blob-code blob-code-inner js-file-line"> Write-Warning &quot;$(Get-TimeStamp) Unable to start Transcript: $($_.Exception.Message)&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-powershell_template_with_transcript-ps1-LC49" class="blob-code blob-code-inner js-file-line"> $logFileFolderPath = &quot;&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-powershell_template_with_transcript-ps1-LC50" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-powershell_template_with_transcript-ps1-LC51" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-powershell_template_with_transcript-ps1-LC52" class="blob-code blob-code-inner js-file-line">#endregion initialization</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-powershell_template_with_transcript-ps1-LC53" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-powershell_template_with_transcript-ps1-LC54" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-powershell_template_with_transcript-ps1-LC55" class="blob-code blob-code-inner js-file-line">#region install-modules</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-powershell_template_with_transcript-ps1-LC56" class="blob-code blob-code-inner js-file-line"># replace the array below with any modules that your script depends on.</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-powershell_template_with_transcript-ps1-LC57" class="blob-code blob-code-inner js-file-line"># you can remove this region if your script doesn&#39;t need importing any modules.</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-powershell_template_with_transcript-ps1-LC58" class="blob-code blob-code-inner js-file-line">$modules = @(&quot;PSFramework&quot;, &quot;PSModuleDevelopment&quot;, &quot;dbatools&quot;)</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-powershell_template_with_transcript-ps1-LC59" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-powershell_template_with_transcript-ps1-LC60" class="blob-code blob-code-inner js-file-line">foreach ($module in $modules) {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-powershell_template_with_transcript-ps1-LC61" class="blob-code blob-code-inner js-file-line"> if (Get-Module -ListAvailable -Name $module) {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-powershell_template_with_transcript-ps1-LC62" class="blob-code blob-code-inner js-file-line"> Write-Verbose &quot;$(Get-TimeStamp) $module already installed&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-powershell_template_with_transcript-ps1-LC63" class="blob-code blob-code-inner js-file-line"> } </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-powershell_template_with_transcript-ps1-LC64" class="blob-code blob-code-inner js-file-line"> else {</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-powershell_template_with_transcript-ps1-LC65" class="blob-code blob-code-inner js-file-line"> Write-Information &quot;$(Get-TimeStamp) Installing $module&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-powershell_template_with_transcript-ps1-LC66" class="blob-code blob-code-inner js-file-line"> Install-Module $module -Force -SkipPublisherCheck -Scope CurrentUser -ErrorAction Stop | Out-Null</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-powershell_template_with_transcript-ps1-LC67" class="blob-code blob-code-inner js-file-line"> Import-Module $module -Force -Scope Local | Out-Null</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-powershell_template_with_transcript-ps1-LC68" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-powershell_template_with_transcript-ps1-LC69" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-powershell_template_with_transcript-ps1-LC70" class="blob-code blob-code-inner js-file-line">#endregion install-modules</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-powershell_template_with_transcript-ps1-LC71" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-powershell_template_with_transcript-ps1-LC72" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-powershell_template_with_transcript-ps1-LC73" class="blob-code blob-code-inner js-file-line">#region main</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-powershell_template_with_transcript-ps1-LC74" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-powershell_template_with_transcript-ps1-LC75" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-powershell_template_with_transcript-ps1-LC76" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-powershell_template_with_transcript-ps1-LC77" class="blob-code blob-code-inner js-file-line"># TODO: Replace this code with your actual script body:</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-powershell_template_with_transcript-ps1-LC78" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-powershell_template_with_transcript-ps1-LC79" class="blob-code blob-code-inner js-file-line">Write-Output &quot;$(Get-TimeStamp) Example output message. Check out the timestamp on this bad boy.&quot;</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-powershell_template_with_transcript-ps1-LC80" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-powershell_template_with_transcript-ps1-LC81" class="blob-code blob-code-inner js-file-line"># When using Invoke-Sqlcmd, be sure to add parameters -OutputSqlErrors $true -Verbose to capture all output. For example:</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-powershell_template_with_transcript-ps1-LC82" class="blob-code blob-code-inner js-file-line">Invoke-Sqlcmd -Server &quot;.&quot; -Database &quot;master&quot; -Query &quot;PRINT &#39;This is the output of a SQL command, generated by: &#39; + PROGRAM_NAME() + &#39; on server &#39; + @@SERVERNAME&quot; -QueryTimeout 0 -OutputSqlErrors $true -Verbose</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-powershell_template_with_transcript-ps1-LC83" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-powershell_template_with_transcript-ps1-LC84" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-powershell_template_with_transcript-ps1-LC85" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-powershell_template_with_transcript-ps1-LC86" class="blob-code blob-code-inner js-file-line">#endregion main</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-powershell_template_with_transcript-ps1-LC87" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-powershell_template_with_transcript-ps1-LC88" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-powershell_template_with_transcript-ps1-LC89" class="blob-code blob-code-inner js-file-line">#region finalization</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-powershell_template_with_transcript-ps1-LC90" class="blob-code blob-code-inner js-file-line">if ($logFileFolderPath -ne &quot;&quot;) { Stop-Transcript }</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-powershell_template_with_transcript-ps1-LC91" class="blob-code blob-code-inner js-file-line">#endregion finalization</td> </tr> <tr> <td id="file-powershell_template_with_transcript-ps1-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-powershell_template_with_transcript-ps1-LC92" class="blob-code blob-code-inner js-file-line">}</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/c9b4336ed89daf22cd406c9ce974f023 2020-12-06T17:15:12Z 2021-11-16T08:49:57Z T-SQL script to find redundant indexes within the current database, also outputs index usage stats and drop commands Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/c9b4336ed89daf22cd406c9ce974f023#file-redundant_indexes-sql">Redundant_Indexes.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-redundant_indexes-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Redundant_Indexes.sql content, created by EitanBlumin on 05:15PM on December 06, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Redundant_Indexes.sql"> <tr> <td id="file-redundant_indexes-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-redundant_indexes-sql-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SET</span> <span class="pl-k">NOCOUNT</span> <span class="pl-k">ON</span>;</td> </tr> <tr> <td id="file-redundant_indexes-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-redundant_indexes-sql-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DECLARE</span> @MinimumRowsInTable <span class="pl-k">INT</span> <span class="pl-k">=</span> <span class="pl-c1">200000</span>;</td> </tr> <tr> <td id="file-redundant_indexes-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-redundant_indexes-sql-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">IF</span> <span class="pl-c1">OBJECT_ID</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>tempdb..#FindOnThisDB&#39;</span>) <span class="pl-k">IS</span> <span class="pl-k">NOT</span> <span class="pl-k">NULL</span> <span class="pl-k">DROP</span> <span class="pl-k">TABLE</span> #FindOnThisDB;</td> </tr> <tr> <td id="file-redundant_indexes-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-redundant_indexes-sql-LC4" class="blob-code blob-code-inner js-file-line">;<span class="pl-k">WITH</span> Indexes <span class="pl-k">AS</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-redundant_indexes-sql-LC5" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-redundant_indexes-sql-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">select</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-redundant_indexes-sql-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.<span class="pl-c1">schema_id</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-redundant_indexes-sql-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.table_o_id,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-redundant_indexes-sql-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.key_column_list,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-redundant_indexes-sql-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.include_column_list,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-redundant_indexes-sql-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.is_unique,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-redundant_indexes-sql-LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-k">sets</span>.index_number</td> </tr> <tr> <td id="file-redundant_indexes-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-redundant_indexes-sql-LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-k">from</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-redundant_indexes-sql-LC14" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-redundant_indexes-sql-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-redundant_indexes-sql-LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">SCHEMA_DATA</span>.<span class="pl-c1">schema_id</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-redundant_indexes-sql-LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">TABLE_DATA</span>.<span class="pl-c1">object_id</span> <span class="pl-k">as</span> table_o_id,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-redundant_indexes-sql-LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">object_id</span> <span class="pl-k">as</span> index_o_id,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-redundant_indexes-sql-LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">index_id</span> <span class="pl-k">as</span> index_number,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-redundant_indexes-sql-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">is_unique</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-redundant_indexes-sql-LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">name</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-redundant_indexes-sql-LC22" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-redundant_indexes-sql-LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">cast</span>(<span class="pl-c1">keyCol</span>.<span class="pl-c1">column_id</span> <span class="pl-k">as</span> <span class="pl-k">varchar</span>) <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_descending_key</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span>d&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span>a&#39;</span> <span class="pl-k">END</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>{&#39;</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-redundant_indexes-sql-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">tables</span> <span class="pl-k">AS</span> T</td> </tr> <tr> <td id="file-redundant_indexes-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-redundant_indexes-sql-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span> idx <span class="pl-k">ON</span> <span class="pl-c1">T</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">idx</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-redundant_indexes-sql-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyCol <span class="pl-k">ON</span> <span class="pl-c1">idx</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">idx</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-redundant_indexes-sql-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">idx</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-redundant_indexes-sql-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">idx</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-redundant_indexes-sql-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-redundant_indexes-sql-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">key_ordinal</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-redundant_indexes-sql-LC31" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-redundant_indexes-sql-LC32" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">AS</span> key_column_list ,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-redundant_indexes-sql-LC33" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-redundant_indexes-sql-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">cast</span>(<span class="pl-c1">keyColINC</span>.<span class="pl-c1">column_id</span> <span class="pl-k">as</span> <span class="pl-k">varchar</span>), <span class="pl-s"><span class="pl-pds">&#39;</span>{&#39;</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-redundant_indexes-sql-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">tables</span> <span class="pl-k">AS</span> T</td> </tr> <tr> <td id="file-redundant_indexes-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-redundant_indexes-sql-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span> idxINC <span class="pl-k">ON</span> <span class="pl-c1">T</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">idxINC</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-redundant_indexes-sql-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyColINC <span class="pl-k">ON</span> <span class="pl-c1">idxINC</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyColINC</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">idxINC</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyColINC</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-redundant_indexes-sql-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-redundant_indexes-sql-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">idxINC</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-redundant_indexes-sql-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">idxINC</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-redundant_indexes-sql-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyColINC</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-redundant_indexes-sql-LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyColINC</span>.<span class="pl-c1">column_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-redundant_indexes-sql-LC43" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-redundant_indexes-sql-LC44" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">AS</span> include_column_list</td> </tr> <tr> <td id="file-redundant_indexes-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-redundant_indexes-sql-LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span> INDEX_DATA</td> </tr> <tr> <td id="file-redundant_indexes-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-redundant_indexes-sql-LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">tables</span> TABLE_DATA <span class="pl-k">ON</span> <span class="pl-c1">TABLE_DATA</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-redundant_indexes-sql-LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">schemas</span> SCHEMA_DATA <span class="pl-k">ON</span> <span class="pl-c1">SCHEMA_DATA</span>.<span class="pl-c1">schema_id</span> <span class="pl-k">=</span> <span class="pl-c1">TABLE_DATA</span>.<span class="pl-c1">schema_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-redundant_indexes-sql-LC48" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-redundant_indexes-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-redundant_indexes-sql-LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">TABLE_DATA</span>.<span class="pl-c1">is_ms_shipped</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-redundant_indexes-sql-LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-k">and</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">is_disabled</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-redundant_indexes-sql-LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">INDEX_DATA</span>.<span class="pl-c1">data_space_id</span> <span class="pl-k">&gt;</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-redundant_indexes-sql-LC52" class="blob-code blob-code-inner js-file-line">) <span class="pl-k">AS</span> <span class="pl-k">sets</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-redundant_indexes-sql-LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LEFT JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">partitions</span> p</td> </tr> <tr> <td id="file-redundant_indexes-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-redundant_indexes-sql-LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-k">sets</span>.table_o_id <span class="pl-k">=</span> <span class="pl-c1">p</span>.<span class="pl-c1">OBJECT_ID</span> <span class="pl-k">AND</span> <span class="pl-k">sets</span>.index_number <span class="pl-k">=</span> <span class="pl-c1">p</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-redundant_indexes-sql-LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-k">where</span> key_column_list <span class="pl-k">is</span> <span class="pl-k">not</span> <span class="pl-k">null</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-redundant_indexes-sql-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-k">GROUP BY</span> <span class="pl-k">sets</span>.<span class="pl-c1">schema_id</span>, <span class="pl-k">sets</span>.table_o_id, <span class="pl-k">sets</span>.index_number, <span class="pl-k">sets</span>.is_unique, <span class="pl-k">sets</span>.key_column_list, <span class="pl-k">sets</span>.include_column_list</td> </tr> <tr> <td id="file-redundant_indexes-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-redundant_indexes-sql-LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-k">HAVING</span> <span class="pl-c1">sum</span>(<span class="pl-c1">p</span>.<span class="pl-c1">rows</span>) <span class="pl-k">&gt;=</span> @MinimumRowsInTable</td> </tr> <tr> <td id="file-redundant_indexes-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-redundant_indexes-sql-LC58" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-redundant_indexes-sql-LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-redundant_indexes-sql-LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-k">DISTINCT</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-redundant_indexes-sql-LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">schema_id</span> <span class="pl-k">as</span> <span class="pl-c1">schema_id</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-redundant_indexes-sql-LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">table_o_id</span> <span class="pl-k">as</span> table_object_id,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-redundant_indexes-sql-LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">index_number</span> <span class="pl-k">as</span> redundant_index_id ,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-redundant_indexes-sql-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE2</span>.<span class="pl-c1">index_number</span> <span class="pl-k">as</span> containing_index_id ,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-redundant_indexes-sql-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">key_column_list</span>, <span class="pl-c1">DUPE1</span>.<span class="pl-c1">include_column_list</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-redundant_indexes-sql-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-k">into</span> #FindOnThisDB</td> </tr> <tr> <td id="file-redundant_indexes-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-redundant_indexes-sql-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> Indexes DUPE1</td> </tr> <tr> <td id="file-redundant_indexes-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-redundant_indexes-sql-LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> Indexes DUPE2</td> </tr> <tr> <td id="file-redundant_indexes-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-redundant_indexes-sql-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-redundant_indexes-sql-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">schema_id</span> <span class="pl-k">=</span> <span class="pl-c1">DUPE2</span>.<span class="pl-c1">schema_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-redundant_indexes-sql-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">DUPE1</span>.<span class="pl-c1">table_o_id</span> <span class="pl-k">=</span> <span class="pl-c1">DUPE2</span>.<span class="pl-c1">table_o_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-redundant_indexes-sql-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">DUPE1</span>.<span class="pl-c1">index_number</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">1</span> <span class="pl-c"><span class="pl-c">--</span> do not consider clustered indexes as redundant</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-redundant_indexes-sql-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">DUPE1</span>.<span class="pl-c1">is_unique</span> <span class="pl-k">=</span> <span class="pl-c1">0</span> <span class="pl-c"><span class="pl-c">--</span> do not consider unique indexes as redundant</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-redundant_indexes-sql-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-redundant_indexes-sql-LC75" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-redundant_indexes-sql-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">key_column_list</span> <span class="pl-k">=</span> <span class="pl-c1">LEFT</span>(<span class="pl-c1">DUPE2</span>.<span class="pl-c1">key_column_list</span>, <span class="pl-c1">LEN</span>(<span class="pl-c1">DUPE1</span>.<span class="pl-c1">key_column_list</span>))</td> </tr> <tr> <td id="file-redundant_indexes-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-redundant_indexes-sql-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-k">and</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-redundant_indexes-sql-LC78" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-redundant_indexes-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-redundant_indexes-sql-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">include_column_list</span> <span class="pl-k">is</span> <span class="pl-k">null</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-redundant_indexes-sql-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-k">or</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-redundant_indexes-sql-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">DUPE1</span>.<span class="pl-c1">include_column_list</span> <span class="pl-k">=</span> <span class="pl-c1">LEFT</span>(<span class="pl-c1">DUPE2</span>.<span class="pl-c1">include_column_list</span>, <span class="pl-c1">LEN</span>(<span class="pl-c1">DUPE1</span>.<span class="pl-c1">include_column_list</span>))</td> </tr> <tr> <td id="file-redundant_indexes-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-redundant_indexes-sql-LC82" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-redundant_indexes-sql-LC83" class="blob-code blob-code-inner js-file-line">)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-redundant_indexes-sql-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">DUPE1</span>.<span class="pl-c1">index_number</span> <span class="pl-k">&lt;&gt;</span> <span class="pl-c1">DUPE2</span>.<span class="pl-c1">index_number</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-redundant_indexes-sql-LC85" class="blob-code blob-code-inner js-file-line">;</td> </tr> <tr> <td id="file-redundant_indexes-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-redundant_indexes-sql-LC86" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-redundant_indexes-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-redundant_indexes-sql-LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-redundant_indexes-sql-LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-k">database_name</span> <span class="pl-k">=</span> <span class="pl-c1">DB_NAME</span>(),</td> </tr> <tr> <td id="file-redundant_indexes-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-redundant_indexes-sql-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>tb.object_id,</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-redundant_indexes-sql-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>redundant_index_id = ind1.index_id,</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-redundant_indexes-sql-LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>containing_index_id = ind2.index_id,</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-redundant_indexes-sql-LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">schema_name</span> <span class="pl-k">=</span> <span class="pl-c1">sch</span>.<span class="pl-c1">name</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-redundant_indexes-sql-LC93" class="blob-code blob-code-inner js-file-line">table_name <span class="pl-k">=</span> <span class="pl-c1">tb</span>.<span class="pl-c1">name</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-redundant_indexes-sql-LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">ind1</span>.<span class="pl-c1">name</span> <span class="pl-k">as</span> redundant_index_name,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-redundant_indexes-sql-LC95" class="blob-code blob-code-inner js-file-line">redundant_key_columns <span class="pl-k">=</span> <span class="pl-c1">STUFF</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-redundant_indexes-sql-LC96" class="blob-code blob-code-inner js-file-line">((</td> </tr> <tr> <td id="file-redundant_indexes-sql-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-redundant_indexes-sql-LC97" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">col</span>.<span class="pl-c1">name</span>) <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_descending_key</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span> DESC&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span> ASC&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-redundant_indexes-sql-LC98" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyCol</td> </tr> <tr> <td id="file-redundant_indexes-sql-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-redundant_indexes-sql-LC99" class="blob-code blob-code-inner js-file-line"><span class="pl-k">inner join</span> <span class="pl-c1">sys</span>.<span class="pl-c1">columns</span> col <span class="pl-k">on</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">column_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">column_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-redundant_indexes-sql-LC100" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-redundant_indexes-sql-LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-redundant_indexes-sql-LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-redundant_indexes-sql-LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">key_ordinal</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-redundant_indexes-sql-LC104" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)), <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),</td> </tr> <tr> <td id="file-redundant_indexes-sql-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-redundant_indexes-sql-LC105" class="blob-code blob-code-inner js-file-line">redundant_include_columns <span class="pl-k">=</span> <span class="pl-c1">STUFF</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-redundant_indexes-sql-LC106" class="blob-code blob-code-inner js-file-line">((</td> </tr> <tr> <td id="file-redundant_indexes-sql-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-redundant_indexes-sql-LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">col</span>.<span class="pl-c1">name</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-redundant_indexes-sql-LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyCol</td> </tr> <tr> <td id="file-redundant_indexes-sql-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-redundant_indexes-sql-LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-k">inner join</span> <span class="pl-c1">sys</span>.<span class="pl-c1">columns</span> col <span class="pl-k">on</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">column_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">column_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-redundant_indexes-sql-LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-redundant_indexes-sql-LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-redundant_indexes-sql-LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-redundant_indexes-sql-LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">key_ordinal</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-redundant_indexes-sql-LC114" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)), <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),</td> </tr> <tr> <td id="file-redundant_indexes-sql-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-redundant_indexes-sql-LC115" class="blob-code blob-code-inner js-file-line">redundant_index_seeks <span class="pl-k">=</span> <span class="pl-c1">us1</span>.<span class="pl-c1">user_seeks</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-redundant_indexes-sql-LC116" class="blob-code blob-code-inner js-file-line">redundant_index_scans <span class="pl-k">=</span> <span class="pl-c1">us1</span>.<span class="pl-c1">user_scans</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-redundant_indexes-sql-LC117" class="blob-code blob-code-inner js-file-line">redundant_index_updates <span class="pl-k">=</span> <span class="pl-c1">us1</span>.<span class="pl-c1">user_updates</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-redundant_indexes-sql-LC118" class="blob-code blob-code-inner js-file-line">containing_index_name <span class="pl-k">=</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">name</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-redundant_indexes-sql-LC119" class="blob-code blob-code-inner js-file-line">containing_key_columns <span class="pl-k">=</span> <span class="pl-c1">STUFF</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-redundant_indexes-sql-LC120" class="blob-code blob-code-inner js-file-line">((</td> </tr> <tr> <td id="file-redundant_indexes-sql-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-redundant_indexes-sql-LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">col</span>.<span class="pl-c1">name</span>) <span class="pl-k">+</span> <span class="pl-k">CASE</span> <span class="pl-k">WHEN</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_descending_key</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k">THEN</span> <span class="pl-s"><span class="pl-pds">&#39;</span> DESC&#39;</span> <span class="pl-k">ELSE</span> <span class="pl-s"><span class="pl-pds">&#39;</span> ASC&#39;</span> <span class="pl-k">END</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-redundant_indexes-sql-LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyCol</td> </tr> <tr> <td id="file-redundant_indexes-sql-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-redundant_indexes-sql-LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-k">inner join</span> <span class="pl-c1">sys</span>.<span class="pl-c1">columns</span> col <span class="pl-k">on</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">column_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">column_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-redundant_indexes-sql-LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-redundant_indexes-sql-LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-redundant_indexes-sql-LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">0</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-redundant_indexes-sql-LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">key_ordinal</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-redundant_indexes-sql-LC128" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)), <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),</td> </tr> <tr> <td id="file-redundant_indexes-sql-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-redundant_indexes-sql-LC129" class="blob-code blob-code-inner js-file-line">containing_include_columns <span class="pl-k">=</span> <span class="pl-c1">STUFF</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-redundant_indexes-sql-LC130" class="blob-code blob-code-inner js-file-line">((</td> </tr> <tr> <td id="file-redundant_indexes-sql-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-redundant_indexes-sql-LC131" class="blob-code blob-code-inner js-file-line"><span class="pl-k">SELECT</span> <span class="pl-s"><span class="pl-pds">&#39;</span>, &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">col</span>.<span class="pl-c1">name</span>)</td> </tr> <tr> <td id="file-redundant_indexes-sql-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-redundant_indexes-sql-LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-k">FROM</span> <span class="pl-c1">sys</span>.<span class="pl-c1">index_columns</span> keyCol</td> </tr> <tr> <td id="file-redundant_indexes-sql-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-redundant_indexes-sql-LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-k">inner join</span> <span class="pl-c1">sys</span>.<span class="pl-c1">columns</span> col <span class="pl-k">on</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">column_id</span> <span class="pl-k">=</span> <span class="pl-c1">col</span>.<span class="pl-c1">column_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-redundant_indexes-sql-LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-k">WHERE</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-redundant_indexes-sql-LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-redundant_indexes-sql-LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-k">AND</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">is_included_column</span> <span class="pl-k">=</span> <span class="pl-c1">1</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-redundant_indexes-sql-LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ORDER BY</span> <span class="pl-c1">keyCol</span>.<span class="pl-c1">key_ordinal</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-redundant_indexes-sql-LC138" class="blob-code blob-code-inner js-file-line">FOR <span class="pl-k">XML</span> <span class="pl-k">PATH</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>)), <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s"><span class="pl-pds">&#39;</span>&#39;</span>),</td> </tr> <tr> <td id="file-redundant_indexes-sql-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-redundant_indexes-sql-LC139" class="blob-code blob-code-inner js-file-line">containing_index_seeks <span class="pl-k">=</span> <span class="pl-c1">us2</span>.<span class="pl-c1">user_seeks</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-redundant_indexes-sql-LC140" class="blob-code blob-code-inner js-file-line">containing_index_scans <span class="pl-k">=</span> <span class="pl-c1">us2</span>.<span class="pl-c1">user_scans</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-redundant_indexes-sql-LC141" class="blob-code blob-code-inner js-file-line">containing_index_updates <span class="pl-k">=</span> <span class="pl-c1">us2</span>.<span class="pl-c1">user_updates</span>,</td> </tr> <tr> <td id="file-redundant_indexes-sql-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-redundant_indexes-sql-LC142" class="blob-code blob-code-inner js-file-line">DropCmd <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>USE &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">DB_NAME</span>()) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>; DROP INDEX &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">ind1</span>.<span class="pl-c1">name</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span> ON &#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">sch</span>.<span class="pl-c1">name</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>.&#39;</span> <span class="pl-k">+</span> <span class="pl-c1">QUOTENAME</span>(<span class="pl-c1">tb</span>.<span class="pl-c1">name</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">N</span><span class="pl-pds">&#39;</span>;&#39;</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-redundant_indexes-sql-LC143" class="blob-code blob-code-inner js-file-line"><span class="pl-k">from</span> #FindOnThisDB <span class="pl-k">AS</span> tbl</td> </tr> <tr> <td id="file-redundant_indexes-sql-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-redundant_indexes-sql-LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">tables</span> tb</td> </tr> <tr> <td id="file-redundant_indexes-sql-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-redundant_indexes-sql-LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-c1">tb</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">table_object_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-redundant_indexes-sql-LC146" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">schemas</span> sch</td> </tr> <tr> <td id="file-redundant_indexes-sql-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-redundant_indexes-sql-LC147" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-c1">sch</span>.<span class="pl-c1">schema_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">schema_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-redundant_indexes-sql-LC148" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span> ind1</td> </tr> <tr> <td id="file-redundant_indexes-sql-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-redundant_indexes-sql-LC149" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">table_object_id</span> <span class="pl-k">and</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">redundant_index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-redundant_indexes-sql-LC150" class="blob-code blob-code-inner js-file-line"><span class="pl-k">INNER JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">indexes</span> ind2</td> </tr> <tr> <td id="file-redundant_indexes-sql-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-redundant_indexes-sql-LC151" class="blob-code blob-code-inner js-file-line"><span class="pl-k">ON</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">table_object_id</span> <span class="pl-k">and</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">tbl</span>.<span class="pl-c1">containing_index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-redundant_indexes-sql-LC152" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LEFT JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">dm_db_index_usage_stats</span> <span class="pl-k">AS</span> us1 <span class="pl-k">ON</span> <span class="pl-c1">us1</span>.<span class="pl-c1">database_id</span> <span class="pl-k">=</span> <span class="pl-c1">DB_ID</span>() <span class="pl-k">AND</span> <span class="pl-c1">us1</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">us1</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">ind1</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-redundant_indexes-sql-LC153" class="blob-code blob-code-inner js-file-line"><span class="pl-k">LEFT JOIN</span> <span class="pl-c1">sys</span>.<span class="pl-c1">dm_db_index_usage_stats</span> <span class="pl-k">AS</span> us2 <span class="pl-k">ON</span> <span class="pl-c1">us2</span>.<span class="pl-c1">database_id</span> <span class="pl-k">=</span> <span class="pl-c1">DB_ID</span>() <span class="pl-k">AND</span> <span class="pl-c1">us2</span>.<span class="pl-c1">object_id</span> <span class="pl-k">=</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">object_id</span> <span class="pl-k">AND</span> <span class="pl-c1">us2</span>.<span class="pl-c1">index_id</span> <span class="pl-k">=</span> <span class="pl-c1">ind2</span>.<span class="pl-c1">index_id</span></td> </tr> <tr> <td id="file-redundant_indexes-sql-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-redundant_indexes-sql-LC154" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-redundant_indexes-sql-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-redundant_indexes-sql-LC155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">--</span>DROP TABLE #FindOnThisDB</span></td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/EitanBlumin/73c3e5241622373b0ab0b998d0f5eb90 2020-11-25T08:27:11Z 2021-11-16T08:50:03Z TSQL script to check for invalid owners of system Roles, Schemas, or Databases Eitan Blumin https://gist.github.com/EitanBlumin <a href="proxy.php?url=https://gist.github.com/EitanBlumin/73c3e5241622373b0ab0b998d0f5eb90#file-invalid_owner_for_system_schema_role_or_database-sql">Invalid_owner_for_system_schema_role_or_database.sql</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-invalid_owner_for_system_schema_role_or_database-sql" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsql " style="overflow: auto" tabindex="0" role="region" aria-label="Invalid_owner_for_system_schema_role_or_database.sql content, created by EitanBlumin on 08:27AM on November 25, 2020." > <div class="js-check-hidden-unicode js-blob-code-container blob-code-content"> <template class="js-file-alert-template"> <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. <a class="Link--inTextBlock" href="proxy.php?url=https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a> </span> <div data-view-component="true" class="flash-action"> <a href="proxy.php?url={{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters </a> </div> </div></template> <template class="js-line-alert-template"> <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Invalid_owner_for_system_schema_role_or_database.sql"> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC1" class="blob-code blob-code-inner js-file-line">/*</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC2" class="blob-code blob-code-inner js-file-line">Invalid owner for a system Role, Schema, or Database</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC3" class="blob-code blob-code-inner js-file-line">====================================================</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC4" class="blob-code blob-code-inner js-file-line">Author: Eitan Blumin | Madeira Data Solutions | https://www.madeiradata.com</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC5" class="blob-code blob-code-inner js-file-line">Date: 2020-11-25</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC6" class="blob-code blob-code-inner js-file-line">Description:</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC7" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC8" class="blob-code blob-code-inner js-file-line">System roles and schemas must have specific owning users or roles.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC10" class="blob-code blob-code-inner js-file-line">For example, all system database roles such as db_owner, db_datawriter, db_datareader, etc. must be owned by dbo.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC11" class="blob-code blob-code-inner js-file-line">All system schemas such as sys, dbo, db_owner, db_datawriter, db_datareader, etc. must be owned by the system role or user of the same name.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC12" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC13" class="blob-code blob-code-inner js-file-line">It&#39;s a 3-part relationship like so:</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC14" class="blob-code blob-code-inner js-file-line">schema X - owned by role X - owned by dbo.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC16" class="blob-code blob-code-inner js-file-line">If the database is a system database, its owner should be sa (or equivalent, if it was renamed).</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC17" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC18" class="blob-code blob-code-inner js-file-line">Invalid owners for such system objects can potentially cause severe errors during version updates/upgrades, or when using certain HADR features.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC19" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC20" class="blob-code blob-code-inner js-file-line">This script will detect any such misconfigurations, and provide you with the proper remediation scripts to fix it.</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC21" class="blob-code blob-code-inner js-file-line">*/</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC22" class="blob-code blob-code-inner js-file-line">SET NOCOUNT, ARITHABORT, XACT_ABORT ON;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC23" class="blob-code blob-code-inner js-file-line">SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC24" class="blob-code blob-code-inner js-file-line">DECLARE @CMD NVARCHAR(MAX), @DBName SYSNAME, @Executor NVARCHAR(1000), @SaName SYSNAME</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC25" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC26" class="blob-code blob-code-inner js-file-line">SELECT @SaName = [name] FROM sys.server_principals WHERE sid = 0x01;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC27" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC28" class="blob-code blob-code-inner js-file-line">SET @CMD = N&#39;SELECT DB_ID(), DB_NAME(), &#39;&#39;SCHEMA&#39;&#39;, sch.[name], pr.[name]</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC29" class="blob-code blob-code-inner js-file-line">FROM sys.schemas AS sch</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC30" class="blob-code blob-code-inner js-file-line">LEFT JOIN sys.database_principals AS pr ON sch.principal_id = pr.principal_id</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC31" class="blob-code blob-code-inner js-file-line">WHERE (sch.schema_id &gt;= 16384 OR DB_NAME() = &#39;&#39;msdb&#39;&#39;)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC32" class="blob-code blob-code-inner js-file-line">AND (pr.principal_id IS NULL</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC33" class="blob-code blob-code-inner js-file-line"> OR (sch.[name] NOT IN (&#39;&#39;managed_backup&#39;&#39;,&#39;&#39;smart_admin&#39;&#39;,&#39;&#39;MS_PerfDashboard&#39;&#39;) AND sch.[name] &lt;&gt; pr.[name])</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC34" class="blob-code blob-code-inner js-file-line"> OR (sch.[name] IN (&#39;&#39;managed_backup&#39;&#39;,&#39;&#39;smart_admin&#39;&#39;,&#39;&#39;MS_PerfDashboard&#39;&#39;) AND sch.principal_id &lt;&gt; 1)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC35" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC36" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC37" class="blob-code blob-code-inner js-file-line">UNION ALL</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC39" class="blob-code blob-code-inner js-file-line">SELECT DB_ID(), DB_NAME(), &#39;&#39;ROLE&#39;&#39;, rol.[name], pr.[name]</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC40" class="blob-code blob-code-inner js-file-line">FROM sys.database_principals AS rol</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC41" class="blob-code blob-code-inner js-file-line">LEFT JOIN sys.database_principals AS pr ON rol.owning_principal_id = pr.principal_id</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC42" class="blob-code blob-code-inner js-file-line">WHERE (rol.principal_id &gt;= 16384 OR DB_NAME() = &#39;&#39;msdb&#39;&#39;)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC43" class="blob-code blob-code-inner js-file-line">AND rol.type = &#39;&#39;R&#39;&#39;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC44" class="blob-code blob-code-inner js-file-line">AND (pr.principal_id IS NULL OR rol.owning_principal_id &lt;&gt; 1)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC45" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC46" class="blob-code blob-code-inner js-file-line">UNION ALL</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC47" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC48" class="blob-code blob-code-inner js-file-line">SELECT DB_ID(), DB_NAME(), &#39;&#39;DATABASE&#39;&#39;, DB_NAME(), sp.[name] COLLATE database_default</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC49" class="blob-code blob-code-inner js-file-line">FROM sys.database_principals AS dp</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC50" class="blob-code blob-code-inner js-file-line">LEFT JOIN sys.server_principals AS sp ON dp.sid = sp.sid</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC51" class="blob-code blob-code-inner js-file-line">WHERE dp.principal_id = 1</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC52" class="blob-code blob-code-inner js-file-line">AND DB_ID() &lt;= 4</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC53" class="blob-code blob-code-inner js-file-line">AND (sp.sid IS NULL OR sp.sid &lt;&gt; 0x01)&#39;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC54" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC55" class="blob-code blob-code-inner js-file-line">DECLARE @Result AS TABLE</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC56" class="blob-code blob-code-inner js-file-line">(</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC57" class="blob-code blob-code-inner js-file-line">[DBId] INT NULL, DBName SYSNAME NULL, ObjType SYSNAME NULL, SchemaName SYSNAME NULL, RoleName SYSNAME NULL</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC58" class="blob-code blob-code-inner js-file-line">, DefaultOwner AS (CASE WHEN ObjType = &#39;SCHEMA&#39; THEN SchemaName WHEN ObjType = &#39;ROLE&#39; THEN &#39;dbo&#39; END)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC59" class="blob-code blob-code-inner js-file-line">);</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC60" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC61" class="blob-code blob-code-inner js-file-line">DECLARE DBs CURSOR</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC62" class="blob-code blob-code-inner js-file-line">LOCAL FAST_FORWARD</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC63" class="blob-code blob-code-inner js-file-line">FOR</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC64" class="blob-code blob-code-inner js-file-line">SELECT [name]</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC65" class="blob-code blob-code-inner js-file-line">FROM sys.databases</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC66" class="blob-code blob-code-inner js-file-line">WHERE state = 0 AND is_read_only = 0</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC67" class="blob-code blob-code-inner js-file-line">AND DATABASEPROPERTYEX([name], &#39;Updateability&#39;) = &#39;READ_WRITE&#39;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC68" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC69" class="blob-code blob-code-inner js-file-line">OPEN DBs</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC70" class="blob-code blob-code-inner js-file-line">FETCH NEXT FROM DBs INTO @DBName</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC71" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC72" class="blob-code blob-code-inner js-file-line">WHILE @@FETCH_STATUS = 0</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC73" class="blob-code blob-code-inner js-file-line">BEGIN</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC74" class="blob-code blob-code-inner js-file-line"> SET @Executor = QUOTENAME(@DBName) + N&#39;..sp_executesql&#39;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC75" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC76" class="blob-code blob-code-inner js-file-line"> INSERT INTO @Result</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC77" class="blob-code blob-code-inner js-file-line"> EXEC @Executor @CMD</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC78" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC79" class="blob-code blob-code-inner js-file-line"> FETCH NEXT FROM DBs INTO @DBName</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC80" class="blob-code blob-code-inner js-file-line">END</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC81" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC82" class="blob-code blob-code-inner js-file-line">CLOSE DBs</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC83" class="blob-code blob-code-inner js-file-line">DEALLOCATE DBs</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC84" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC85" class="blob-code blob-code-inner js-file-line">SELECT</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC86" class="blob-code blob-code-inner js-file-line">Msg = N&#39;In server: &#39; + @@SERVERNAME + N&#39;, database: &#39; + QUOTENAME(DBName)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC87" class="blob-code blob-code-inner js-file-line">+ N&#39;, system &#39; + ObjType + N&#39;::&#39; + QUOTENAME(SchemaName) + N&#39; has an invalid owner &#39; + ISNULL(QUOTENAME(RoleName), N&#39;(null)&#39;)</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC88" class="blob-code blob-code-inner js-file-line">+ N&#39;. should be: &#39; + QUOTENAME(ISNULL(DefaultOwner, @SaName))</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC89" class="blob-code blob-code-inner js-file-line">, RemediationCmd = N&#39;USE &#39; + QUOTENAME(DBName) + N&#39;; ALTER AUTHORIZATION ON &#39; + UPPER(ObjType) + N&#39;::&#39; + QUOTENAME(SchemaName) + N&#39; TO &#39; + QUOTENAME(ISNULL(DefaultOwner, @SaName)) + N&#39;;&#39;</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC90" class="blob-code blob-code-inner js-file-line">FROM @Result</td> </tr> <tr> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-invalid_owner_for_system_schema_role_or_database-sql-LC91" class="blob-code blob-code-inner js-file-line">ORDER BY [DBId] ASC</td> </tr> </table> </div> </div> </div> </div>