tag:blogger.com,1999:blog-62818734729893746232024-02-26T02:43:06.258+05:30SQL Server BuddyPandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.comBlogger122125tag:blogger.com,1999:blog-6281873472989374623.post-19671971591968312542021-06-26T20:48:00.002+05:302021-06-26T20:58:22.789+05:30SQL Server built-In monitoring components<p><span style="font-family: verdana; font-size: 85%;">First, It should have been determined on where/what to monitor for the current situation. right ? Yes!</span></p><p><span style="font-family: verdana; font-size: 85%;">And, select an appropriate tools to proceed with. It can be either from Windows Itself Or SQL Server specific</span></p><p><span style="font-family: verdana; font-size: 85%;"><b>Windows Monitoring Tools</b>:</span></p><p></p><ul style="text-align: left;"><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/monitor-resource-usage-system-monitor?view=sql-server-ver15">System Monitor</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://techcommunity.microsoft.com/t5/ask-the-performance-team/windows-performance-monitor-overview/ba-p/375481">Performance Monitor</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://en.wikipedia.org/wiki/Task_Manager_(Windows)">Task Manager</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/typeperf">TypePerf</a></span></li></ul><p></p><p><span style="font-family: verdana; font-size: 85%;"><b>SQL Server Tools</b>:</span></p><p></p><ul style="text-align: left;"><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/open-activity-monitor-sql-server-management-studio?view=sql-server-ver15">Activity Monitor</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-transact-sql?view=sql-server-ver15">Database Console Commands</a> (DBCC)</span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/tools/distributed-replay/sql-server-distributed-replay?view=sql-server-ver15">Distributed Replay Utility</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/system-dynamic-management-views?view=sql-server-ver15">Dynamic Management Views and Functions</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events?view=sql-server-ver15">Extended Events</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/system-statistical-functions-transact-sql?view=sql-server-ver15">Functions</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/performance/display-an-actual-execution-plan?view=sql-server-ver15">SQL Server Management Studio Graphical Showplan</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/start-sql-server-profiler?view=sql-server-ver15">SQL Server Profiler</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace?view=sql-server-ver15">SQL Trace</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/system-stored-procedures-transact-sql?view=sql-server-ver15">System Stored procedures</a></span></li><li><span style="font-family: verdana; font-size: 85%;"><a href="https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-ver15">Trace flags</a></span></li></ul><p></p><p><span style="font-family: verdana; font-size: 85%;"></span></p><div><span style="font-family: verdana; font-size: 85%;"><b>Note</b>: </span></div><div><ul style="text-align: left;"><li><span style="font-family: verdana; font-size: 85%;">SQL Trace and SQL Server Profiler are deprecated. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.</span></li><li><span style="font-family: verdana; font-size: 85%;">Use Extended Events instead</span></li></ul><div><span style="font-family: verdana; font-size: 85%;"><b><br /></b></span></div><div><span style="font-family: verdana; font-size: 85%;"><b>Source</b>: <a href="https://docs.microsoft.com/en-us/">https://docs.microsoft.com/en-us/</a></span></div></div>Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-7879785516726787242021-06-12T00:04:00.002+05:302021-06-12T00:04:35.988+05:30The specified module 'SqlServer' was not loaded because no valid module file was found in any module directory<p><span style="font-family: verdana; font-size: 85%;">When I was thinking to access/connect SQL Server using PowerShell in one of the following ways</span></p><p><span style="font-family: verdana; font-size: 85%;"><b>1. </b>.NET (System.Data.SqlClient)</span></p><p><span style="font-family: verdana; font-size: 85%;"><b>2.</b> SSMO (SQL Server Management Objects)</span></p><p><span style="font-family: verdana; font-size: 85%;"><b>3. </b>SQL Server PowerShell</span></p><div><span style="font-family: verdana; font-size: 85%;">I was actually trying with third method. Yes! unfortunately, It failed. Let me tell you, what I tried and how I resolved.</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Open <b>PowerShell ISE </b>and try the below line of command</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><u><b>Connecting SQL from local machine</b></u></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><span style="color: #2b00fe;">Import-Module</span> <span style="color: #800180;">SqlServer</span> </span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5JkeDFsKqoC-tYm2ki4Ra2a47Mt-249eJlb_kdQdopa0797j04LYyaTndZY6DCQTQfI3n3bqe69U0ISQ1smrtwNpowzncoeTl_ufJrbpqHTK0ZrFA5fQoW4iNAGhcdWDCPNBcdWoT-PoX/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img alt="" data-original-height="157" data-original-width="1504" height="33" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5JkeDFsKqoC-tYm2ki4Ra2a47Mt-249eJlb_kdQdopa0797j04LYyaTndZY6DCQTQfI3n3bqe69U0ISQ1smrtwNpowzncoeTl_ufJrbpqHTK0ZrFA5fQoW4iNAGhcdWDCPNBcdWoT-PoX/" width="320" /></span></a></div><span style="font-family: verdana; font-size: 85%;"><br /><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">I got the Err...</span></div><div><span style="color: red; font-family: verdana; font-size: 85%;">Import-Module : The specified module 'SqlServer' was not loaded because no valid module file was found in any module directory.</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">I thought, we don't have the Module in my environment and check the available Modules named "<b>SQLServer</b>" finally</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><span style="color: #2b00fe;">Get-Module</span> -ListAvailable -Name <span style="color: #800180;">*SQLServer*</span></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge8M2LBbVBzks-p2CytBQMquCb5mRJZmhnqXcjZAEEgzM-t6-rvVBjNubHtkkchMs-lUe8fbFzhvieKMbjJpQg-W79CgZZDP8FrZ6c3dekYCEEMu4_hphRGJPJbiBPkVUkb5ntDk68M3PG/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="83" data-original-width="612" height="43" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge8M2LBbVBzks-p2CytBQMquCb5mRJZmhnqXcjZAEEgzM-t6-rvVBjNubHtkkchMs-lUe8fbFzhvieKMbjJpQg-W79CgZZDP8FrZ6c3dekYCEEMu4_hphRGJPJbiBPkVUkb5ntDk68M3PG/" width="320" /></a></div><br /><br /></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">I could not find any such a Modules</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">I tried to Install the Module in my environment, </span></div><div><span style="font-family: verdana; font-size: 85%;"><a href="https://www.powershellgallery.com/stats/packages">https://www.powershellgallery.com/stats/packages</a></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">The PowerShell Gallery is the repository from Microsoft</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Click and open the specific Module "SQLServer"</span></div><div><span style="font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK-BdTOWS9gQqC-wqB3wgZvU2vQKc2yXohFKdEu6v1mRWBNiWYyLB25ADVzMlxrXwyduKerae2q3lCsb1-S9TQC2weBE95KchPi2Z_WwXe9eNLElbO-e8h4i5hYPeeXutWgDwU0wEDYCOW/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="996" data-original-width="1563" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK-BdTOWS9gQqC-wqB3wgZvU2vQKc2yXohFKdEu6v1mRWBNiWYyLB25ADVzMlxrXwyduKerae2q3lCsb1-S9TQC2weBE95KchPi2Z_WwXe9eNLElbO-e8h4i5hYPeeXutWgDwU0wEDYCOW/" width="320" /></a></div><br /><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span 85="" font-family:="" font-size:="" style="font-family: verdana; font-size: 85%;" verdana=""><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">I Installed the Module</span></div><div><span><span style="font-family: verdana; font-size: 85%;"><span style="color: #2b00fe;">Install-Module</span> -Name <span style="color: #800180;">SqlServer</span> -RequiredVersion <span style="color: #800180;">21.1.18245</span> -AllowClobber</span></span></div><div><span><span style="font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div><span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXfeIuzSLvRh4YJMK7by1tIdqiKmsXrGZzBLhZ5XbJSAX85zVPuD7RJt0XaE7B1Sp_zZ5MgavPxZb3zba70gId9tdxKa87xvioZSBBGUf2zi4pXCHNRz6tME7APcWa_N-kCLJ5Zwa46r4b/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="33" data-original-width="945" height="11" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXfeIuzSLvRh4YJMK7by1tIdqiKmsXrGZzBLhZ5XbJSAX85zVPuD7RJt0XaE7B1Sp_zZ5MgavPxZb3zba70gId9tdxKa87xvioZSBBGUf2zi4pXCHNRz6tME7APcWa_N-kCLJ5Zwa46r4b/" width="320" /></a></div><br /><br /></span></div><div><span><br /></span></div>Actually, The Package has 23.82 MB<br /><br /></span></span></div><div><span><span style="font-family: verdana; font-size: 85%;">Let the process download the required Package and Install</span></span></div><div><span><span style="font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CApeuh6AgkgcOwfF4mcxPLQ2fVZSm_kZorCc3C6aazAAp0fSVyzjMwU4Uiz4VGF7DPXFPEBX_BpcM-n69cSm6o0sQ_spRJPVWgp9eveJt1gADEdlKrZjNU_Mgc1JOtLpUnI6zSbf4uos/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="111" data-original-width="1711" height="21" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4CApeuh6AgkgcOwfF4mcxPLQ2fVZSm_kZorCc3C6aazAAp0fSVyzjMwU4Uiz4VGF7DPXFPEBX_BpcM-n69cSm6o0sQ_spRJPVWgp9eveJt1gADEdlKrZjNU_Mgc1JOtLpUnI6zSbf4uos/" width="320" /></a></div><br /><br /></span></span></div><div><span style="background-color: white;"><span style="font-family: verdana; font-size: 85%;"><br /></span></span></div><div><span style="font-family: verdana; font-size: 85%;">Once the Installation complete</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Let me try to check the Module installed</span></div><div><span style="font-size: 85%;"><span style="color: #2b00fe; font-family: verdana;">Get-Module</span><span style="font-family: verdana;"> -ListAvailable -Name </span><span style="color: #800180; font-family: verdana;">*SQLServer*</span></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO9vEhW9LQXsQogISYr-MwiQUUaVuWrnxNzrJE5vzdE9zX2f2SrlN6NoJAn4U7rTM-p_c6u1kHyMFpiPljrBBgBZ2dyMmfcfh4xIRUNiyd_1m-kDDQLCiRZz4G9sfaA65UNTj0CKnagJZG/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="283" data-original-width="1665" height="54" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO9vEhW9LQXsQogISYr-MwiQUUaVuWrnxNzrJE5vzdE9zX2f2SrlN6NoJAn4U7rTM-p_c6u1kHyMFpiPljrBBgBZ2dyMmfcfh4xIRUNiyd_1m-kDDQLCiRZz4G9sfaA65UNTj0CKnagJZG/" width="320" /></a></div><br /><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Yes! I can see the Module Installed</span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Let me try to Import the Module</span></div><div><span style="font-size: 85%;"><span style="color: #2b00fe; font-family: verdana;">Import-Module</span><span style="font-family: verdana;"> </span><span style="color: #800180; font-family: verdana;">SqlServer</span></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="color: #800180; font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTCh117wr4UAj4T9I5TQUhsInoZhuInuOXjUvw-FQUqIB-ygPMWNE0Cy-kg8FMhXk_xARcVllJ6ASXDieFkv1JGIWrznNKWpMXFkMTWyhdI2UMERADwssnNA_4vQK99fTXioUMOkHUcOD/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="77" data-original-width="380" height="41" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTCh117wr4UAj4T9I5TQUhsInoZhuInuOXjUvw-FQUqIB-ygPMWNE0Cy-kg8FMhXk_xARcVllJ6ASXDieFkv1JGIWrznNKWpMXFkMTWyhdI2UMERADwssnNA_4vQK99fTXioUMOkHUcOD/w202-h41/image.png" width="202" /></a></div><br /><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Let us get the List of Databases from my local SQL Instance</span></div><div><span style="font-family: verdana; font-size: 85%;"><span style="color: #2b00fe;">Get-SqlDatabase</span> -ServerInstance <span style="color: #800180;">SQLBUDDY\SQL2019</span></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLd09cEsZHXo5Yvl6O4mCd1QJQRx4pAeIGbEeGXVqpfKHIMiii2DGYKNITuYb83NjXK760gnLdekVQJJd-lVfJdtSjn2dbdGI5mdY1bGHn59kOKnsnInRy39HyiamnbgxuNECqo0ljEjXP/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="261" data-original-width="1660" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLd09cEsZHXo5Yvl6O4mCd1QJQRx4pAeIGbEeGXVqpfKHIMiii2DGYKNITuYb83NjXK760gnLdekVQJJd-lVfJdtSjn2dbdGI5mdY1bGHn59kOKnsnInRy39HyiamnbgxuNECqo0ljEjXP/" width="320" /></a></div><br /><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-size: 85%;"><span style="font-family: verdana;">See, I got the all available Databases in my SQL Instance "</span><span style="color: #800180; font-family: verdana;">SQLBUDDY\SQL2019</span><span style="font-family: verdana;">"</span></span></div><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;"><b>Note</b>: I am using Logged-In same credential to connect with my local SQL Server Instance</span></div>Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-66734930718434265272021-06-05T13:49:00.001+05:302021-06-05T13:49:47.264+05:30File "*.ps1" Cannot be loaded because running scripts is disabled on this system<p><span style="font-family: verdana; font-size: 85%;">With this title, I hope you already know what we are going to explore about...</span></p><p><span style="font-family: verdana; font-size: 85%;">You may get this Err, </span><span style="font-family: verdana; font-size: 85%;">When you try to execute a <b><u>PowerShell script file</u></b></span></p><p><span style="font-family: verdana; font-size: 85%;">Usually, This feature may have been Disabled due to security vulnerability</span></p><p><span style="font-family: verdana; font-size: 85%;">Try enable it and see. That's it!</span></p><p><span style="font-family: verdana; font-size: 85%;">Let's start here...</span></p><p><span style="font-family: verdana; font-size: 85%;">Let me try to execute a script file in PowerShell ISE (Integrated Scripting Environment)</span></p><p><span style="font-size: 85%;"><span style="font-family: verdana;">Open </span><span style="font-family: verdana; font-weight: bold; text-decoration-line: underline;">PowerShell ISE</span></span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdeGhNkCgdc8bdvIT71Gd_pLdsVvRPlzJJCiXLHRY_5eWDOMBch3csD0_XF6wpqrlB8TUsgBpkCmu0fQ7MY635qVHuHUw2ZfravegJ9mdGILxrZbERXEH3Mu0KWj7Lb6rqIMzAYCI4d27z/s283/Image1.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img border="0" data-original-height="69" data-original-width="283" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdeGhNkCgdc8bdvIT71Gd_pLdsVvRPlzJJCiXLHRY_5eWDOMBch3csD0_XF6wpqrlB8TUsgBpkCmu0fQ7MY635qVHuHUw2ZfravegJ9mdGILxrZbERXEH3Mu0KWj7Lb6rqIMzAYCI4d27z/w185-h45/Image1.PNG" width="185" /></span></a></div><span style="font-family: verdana; font-size: 85%;"><br /><span><br /></span></span><p></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;">I have a simple script (<b>Script1.ps1</b>) to connect with my local SQL named Instance</span></p><p><span style="font-family: verdana; font-size: 85%;">I have opened the script in PowerShell ISE and Trying to execute it. But, I got the below Err</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXS4ZXNuhyRO5Z72hhXyrqB4qpHnZcZhE3EJlnz9ZdgzPZTqHh5ku9kAIIL8_ebgaxA6b-Cnsi2v4-ilqUpmi__oYaLvERTPFBPeAaNZEO_wG-FYgYXpgg5DFB9U-O01hxD8bsr_igrdJE/s1712/Image2.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXS4ZXNuhyRO5Z72hhXyrqB4qpHnZcZhE3EJlnz9ZdgzPZTqHh5ku9kAIIL8_ebgaxA6b-Cnsi2v4-ilqUpmi__oYaLvERTPFBPeAaNZEO_wG-FYgYXpgg5DFB9U-O01hxD8bsr_igrdJE/s1712/Image2.PNG" style="clear: left; display: inline; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img border="0" data-original-height="668" data-original-width="1712" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXS4ZXNuhyRO5Z72hhXyrqB4qpHnZcZhE3EJlnz9ZdgzPZTqHh5ku9kAIIL8_ebgaxA6b-Cnsi2v4-ilqUpmi__oYaLvERTPFBPeAaNZEO_wG-FYgYXpgg5DFB9U-O01hxD8bsr_igrdJE/w432-h169/Image2.PNG" width="432" /></span></a><span style="font-family: verdana; font-size: 85%;"><br /><br /></span></div><p></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;">Which means, This feature has been Disabled in this environment, Let us enable it</span></p><p><span style="font-family: verdana; font-size: 85%;">To check with all available policies and It's status</span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAt4E5ZGYgPkLPioFnOsDE-NjC_A3dO10dLqFHuSuyb5YNQRcEgx9PzegNc3G480XMIS4YUWagsomjoSHgMR1gfJiUX2EyQjj6CJFn9yMFv7cOWAHwY6Kw7RItaS0x8VKiVzGAUnWynt2B/s576/Image3.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img border="0" data-original-height="549" data-original-width="576" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAt4E5ZGYgPkLPioFnOsDE-NjC_A3dO10dLqFHuSuyb5YNQRcEgx9PzegNc3G480XMIS4YUWagsomjoSHgMR1gfJiUX2EyQjj6CJFn9yMFv7cOWAHwY6Kw7RItaS0x8VKiVzGAUnWynt2B/w251-h239/Image3.PNG" width="251" /></span></a></div><span style="font-family: verdana; font-size: 85%;"><br /></span><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;">See, All of them are <b>Undefined</b></span></p><p><span style="font-family: verdana; font-size: 85%;">Let us enable one of them</span></p><p><span style="font-family: verdana; font-size: 85%;">Kindly explore all the available Policies and Scopes <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.1"><b>HERE</b></a>, Before enabling it.</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoGM5X8qJXDPmpwiO5-umEfyBT81_yI5lhJh7WAtHV3OQyEhX2kPu6bjLnZyS9yYo_mCc8TmnYMpjKt_tikq9lIn9JwYjb3_oJS4nd8dsNfQejujSNkUWxh0EY3z1DrI72WASE0YOoIlEU/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img alt="" data-original-height="43" data-original-width="838" height="16" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoGM5X8qJXDPmpwiO5-umEfyBT81_yI5lhJh7WAtHV3OQyEhX2kPu6bjLnZyS9yYo_mCc8TmnYMpjKt_tikq9lIn9JwYjb3_oJS4nd8dsNfQejujSNkUWxh0EY3z1DrI72WASE0YOoIlEU/" width="320" /></span></a></div><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><span style="font-family: verdana; font-size: 85%;"><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div>See, What we have enabled</span><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFZ4UaZMrbZtnWt_rMVutou2rrw4oSnYmJiNBqo_JZkzRQvQVjpCML-wozYKAitVeSbFWeSjrEYxCsVN8t7uJZ6D5LGxVzmwO7tr_UtPfGojiYSPv_dTH59Y15REoEJvrKE9MhQEiwfHMV/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img alt="" data-original-height="533" data-original-width="442" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFZ4UaZMrbZtnWt_rMVutou2rrw4oSnYmJiNBqo_JZkzRQvQVjpCML-wozYKAitVeSbFWeSjrEYxCsVN8t7uJZ6D5LGxVzmwO7tr_UtPfGojiYSPv_dTH59Y15REoEJvrKE9MhQEiwfHMV/w155-h187/image.png" width="155" /></span></a></div><span style="font-family: verdana; font-size: 85%;"><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></span><div><span style="font-family: verdana; font-size: 85%;"><br /></span></div><div><span style="font-family: verdana; font-size: 85%;">Let us execute the script file again and see</span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwxJjptj2IeebxrVBnLdDwnOEVVW5PJ1SnVOqabZKSlz_5FgsiclpbjIt0LDTKTqEUIaIIIo1igLBrBdZbshFDcUvDYPOicZO7NS1hiyf_mH3bDObzV6fBZITMNFdub4YChwMOrWSKuCv8/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: verdana; font-size: 85%;"><img alt="" data-original-height="612" data-original-width="1262" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwxJjptj2IeebxrVBnLdDwnOEVVW5PJ1SnVOqabZKSlz_5FgsiclpbjIt0LDTKTqEUIaIIIo1igLBrBdZbshFDcUvDYPOicZO7NS1hiyf_mH3bDObzV6fBZITMNFdub4YChwMOrWSKuCv8/" width="320" /></span></a></div><span style="font-family: verdana; font-size: 85%;"><br /><br /><br /><br /><br /></span><p></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;"><br /></span></p><p><span style="font-family: verdana; font-size: 85%;">Yes! Now It's working...</span></p><p><span style="font-family: verdana; font-size: 85%;">Post your question If you still have any Err </span></p><p><span style="font-family: verdana; font-size: 85%;"><b>Resources...</b></span></p><p><span style="font-family: verdana;"><span style="font-size: 13.6px;"><a href="http://technet.microsoft.com/en-us/library/hh857337.aspx">What is PowerShell?</a></span></span></p><p><span style="font-family: verdana; font-size: 13.6px;"><br /></span></p></div>Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-2926567371588440492021-04-24T23:55:00.000+05:302021-04-24T23:55:08.546+05:30Generate sequence number using ROW_NUMBER() without sorting the actual column<p><span style="font-family: verdana; font-size: 85;">As we know about Ranking functions to return a ranking/sequence value for each row in a partition based on a specific/set of column(s). Right ?</span></p><p><span style="font-family: verdana;"><span style="font-size: 85;">Let me define a table and values</span></span></p><div><span style="color: #2b00fe; font-family: verdana; font-size: 85;">If </span><span style="color: #ff00fe; font-family: verdana; font-size: 85;">Object_Id</span><span style="color: #171717; font-family: verdana; font-size: 85;">(</span><span style="color: red; font-family: verdana; font-size: 85;">'dbo.SequenceData'</span><span style="color: #171717; font-family: verdana; font-size: 85;">) Is Null</span></div><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Create Table</span><span style="color: #171717; font-family: verdana; font-size: 85;"> [dbo].SequenceData<br /></span><span style="color: #171717; font-family: verdana; font-size: 85;">(<br /></span><span style="color: #171717; font-family: verdana; font-size: 85;">Col1 </span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Varchar</span><span style="color: #171717; font-family: verdana; font-size: 85;">(5)<br /></span><span style="color: #171717; font-family: verdana; font-size: 85;">)<br /></span><span style="color: #2b00fe;"><span style="font-family: verdana; font-size: 85;">Go</span></span></div><div style="text-align: left;"><span><span style="font-family: verdana; font-size: 85;"><span style="background-color: white;"><div><span style="color: #2b00fe;">TRUNCATE TABLE </span>[dbo].SequenceData</div><div style="color: #2b00fe;">Go</div></span></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Insert</span></span><span style="color: #171717; font-family: verdana; font-size: 85;"> [dbo].SequenceData<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Select</span><span style="color: #171717; font-family: verdana; font-size: 85;"> </span><span style="color: red; font-family: verdana; font-size: 85;">'A'</span><span style="color: #171717; font-family: verdana; font-size: 85;"> </span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Union </span><span style="color: #171717; font-family: verdana; font-size: 85;">All<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Select</span><span style="color: red;"><span style="font-family: verdana; font-size: 85;"> </span><span style="font-family: verdana; font-size: 85;">'D'</span></span><span style="color: #171717; font-family: verdana; font-size: 85;"> </span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Union </span><span style="color: #171717; font-family: verdana; font-size: 85;">All<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Select </span><span style="color: red; font-family: verdana; font-size: 85;">'A' </span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Union </span><span style="color: #171717; font-family: verdana; font-size: 85;">All<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Select </span><span style="color: red; font-family: verdana; font-size: 85;">'C' </span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Union </span><span style="color: #171717; font-family: verdana; font-size: 85;">All<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Select </span><span style="font-family: verdana; font-size: 85;"><span style="color: red;">'B'</span><br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Go</span></div><p style="text-align: left;"><span style="color: #171717; font-family: verdana; font-size: 85;"><span style="background-color: white;"></span></span></p><p style="text-align: left;"><span style="color: #171717; font-family: verdana; font-size: 85;"><span style="background-color: white;"></span></span></p><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><span style="color: #2b00fe;">SELECT </span>* <span style="color: #2b00fe;">FROM </span>[dbo].SequenceData<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">Go</span></div><div style="text-align: left;"><span style="font-size: 85;"><br /></span></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9-zuDqUgtgftl898KonhiVxVETJpbF1c6U6Wiw7TLMv9Q5LC8qxvCPymEX3UD6uR_cgQ02L8qjZNujX_cjnExFDvI_Rrfg13nT5CaTMmdAr0bm-K3Vy5NhfOhr-Z-b5iW5sRPIXjk9hsD/s144/Actual.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-size: 85;"><img border="0" data-original-height="144" data-original-width="53" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9-zuDqUgtgftl898KonhiVxVETJpbF1c6U6Wiw7TLMv9Q5LC8qxvCPymEX3UD6uR_cgQ02L8qjZNujX_cjnExFDvI_Rrfg13nT5CaTMmdAr0bm-K3Vy5NhfOhr-Z-b5iW5sRPIXjk9hsD/w41-h112/Actual.PNG" width="41" /></span></a></div><span style="font-size: 85;"><br /><span style="color: #2b00fe; font-family: verdana;"><br /></span></span></div><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana;">let me generate a sequence number for the value</span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><div><span style="color: #2b00fe;">SELECT</span> <span style="color: #ff00fe;">ROW_NUMBER</span>() <span style="color: #2b00fe;">OVER</span>(),* <span style="color: #2b00fe;">FROM </span>[dbo].SequenceData</div><div><span style="color: #2b00fe;">GO</span></div><div><br /></div><div><div><span style="color: red;">Msg 4112, Level 15, State 1, Line 31</span></div><div><span style="color: red;">The function 'ROW_NUMBER' must have an OVER clause with ORDER BY.</span></div></div><div><br /></div><div>But, It's not working, since we need ORDER BY clause specified as per the syntax. right ?</div><div><br /></div><div>So. let me include ORDER BY clause and see...</div><div><br /></div><div><div><span style="color: #2b00fe;">SELECT</span> <span style="color: #ff00fe;">ROW_NUMBER</span>() <span style="color: #2b00fe;">OVER</span>(<span style="color: #2b00fe;">ORDER BY</span> Col1),* <span style="color: #2b00fe;">FROM </span>[dbo].SequenceData</div><div><span style="color: #2b00fe;">GO</span></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoh7v5EJ6jtCNTQviYPsMY-7HVnxn1_32J8G3F3XQs5FseF32O3YWoJEft0zryvwUNBHCAkEUT5dvDythnbioR7xq8BnnrCQPUsH3XWgK793wGiz70R73assOtrYaJT8pJ5FYu5sVui-Jv/s178/Actual.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="146" data-original-width="178" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoh7v5EJ6jtCNTQviYPsMY-7HVnxn1_32J8G3F3XQs5FseF32O3YWoJEft0zryvwUNBHCAkEUT5dvDythnbioR7xq8BnnrCQPUsH3XWgK793wGiz70R73assOtrYaJT8pJ5FYu5sVui-Jv/w124-h102/Actual.PNG" width="124" /></a></div><br /><div><br /></div><div><br /></div><div><br /></div><div><br /></div></span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;">No..No..No, My actual column "Col1" value should not be Sorted. What should we do ?</span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;">Let us try something like this</span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><br /></span></div><div style="text-align: left;"><span style="font-family: verdana; font-size: 85;"><div><div><span style="color: #2b00fe;">SELECT</span> <span style="color: #ff00fe;">ROW_NUMBER</span>() <span style="color: #2b00fe;">OVER</span>(<span style="color: #2b00fe;">ORDER BY</span> <span style="background-color: #fcff01;">(<span style="color: #2b00fe;">SELECT </span>NULL)</span>),* <span style="color: #2b00fe;">FROM </span>[dbo].SequenceData</div><div><span style="color: #2b00fe;">GO</span></div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaRlSDqs-D4TL075D78ga7O0epoMyavE9s8DzWwXK32bj4UnOBp3TGIU45bIbBhGTmJM4iWMawo2pvXqXZ0S1XBfljERLTdpQ9hXLOi4CbSJJg8DzqWxaGIdq15Lq_XlrAUOu3uDA_B14U/s179/Actual.PNG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="147" data-original-width="179" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaRlSDqs-D4TL075D78ga7O0epoMyavE9s8DzWwXK32bj4UnOBp3TGIU45bIbBhGTmJM4iWMawo2pvXqXZ0S1XBfljERLTdpQ9hXLOi4CbSJJg8DzqWxaGIdq15Lq_XlrAUOu3uDA_B14U/w122-h100/Actual.PNG" width="122" /></a></div><br /><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>We have specified a virtual column in ORDER BY clause which will return always NULL. So, The actual data will not be sorted.</div><div><br /></div><div>We get a sequence for the column value without sorting it - "AS IS"</div></span></div>Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-24733689700357601002021-04-19T22:35:00.001+05:302021-04-19T22:35:00.172+05:30DAC or Normally logged-in ?<p><span style="font-family: verdana; font-size: 85;">How do I know whether I have logged-In as DAC or Normally logged-In ?</span></p><div style="text-align: left;"><span style="color: #2b00fe; font-family: verdana;">SELECT </span><span style="color: red; font-family: verdana;">'You have connected as "DAC"'</span><span style="font-family: verdana;"> [Who you are] <br /></span><span style="color: #2b00fe; font-family: verdana;">FROM </span><span style="color: #38761d; font-family: verdana;">sys.dm_exec_sessions</span><span style="font-family: verdana;"> s join </span><span style="color: #38761d; font-family: verdana;">sys.endpoints</span><span style="font-family: verdana;"> e<br /></span><span style="color: #2b00fe; font-family: verdana; font-size: small;">ON</span><span style="font-family: verdana; font-size: small;"> (s.endpoint_id = e.endpoint_id) <br /></span><span style="font-family: verdana; font-size: 85;"><span style="color: #2b00fe;">WHERE </span>e.name =<span style="color: red;">'Dedicated Admin Connection'<br /></span></span><span style="font-family: verdana; font-size: 85;"><span style="color: #999999;">AND </span>s.session_id = <span style="color: #ff00fe;">@@spid<br /></span></span><span style="color: #2b00fe; font-family: verdana; font-size: 85;">GO</span></div><p><span style="font-family: verdana; font-size: 85;"></span></p><p><span style="font-family: verdana; font-size: small;">1. Connect with Instance using SQLCMD by Trusted Connection</span></p><p><span style="font-family: verdana; font-size: 85;"></span></p><p><span style="font-family: verdana; font-size: 85;">2. Paste the above script and execute it</span></p><p><b style="font-family: verdana;">Connect normally (</b><span style="font-family: verdana;">Trusted Connection</span><b style="font-family: verdana;">) </b><span style="font-family: verdana;">using </span><b style="font-family: verdana;">SQLCMD</b><span style="font-family: verdana;"> :-</span></p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpEimSqmlmPEc9xGRjadFKHw3rJQ-DpLVK3EcA_JfEuyeQCNdQBWHY3qQImHeAs3L2ySPRR7lmFgCT7J0gal2TamfXd0X7-Q4jGEXNA32kLvcl27vr40aWKnj8gHygFCMngitqjpWkXIzn/s1249/Non+DAC.png" style="clear: left; display: inline; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" data-original-height="306" data-original-width="1249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpEimSqmlmPEc9xGRjadFKHw3rJQ-DpLVK3EcA_JfEuyeQCNdQBWHY3qQImHeAs3L2ySPRR7lmFgCT7J0gal2TamfXd0X7-Q4jGEXNA32kLvcl27vr40aWKnj8gHygFCMngitqjpWkXIzn/s320/Non+DAC.png" width="320" /></a></p><p><b style="font-family: verdana; font-size: small;">Connect as DAC </b><span style="font-family: verdana; font-size: small;">using </span><b style="font-family: verdana; font-size: small;">SQLCMD</b><span style="font-family: verdana; font-size: small;"> :-</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCVmY_5nyJ2zAshc0DfF7T0J13yTg4LcYfCPooT_gJoRBaKT4fdEHcnuQbur8ORiL5OWnR39VKHMOURw5-2C63GV3cxjMEECvLvtkQNWrS-lF5C07PqDWXSUE2hRN-6kkLymn6Gbq4zYLi/s1242/Non+DAC.png" style="clear: left; float: left; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="332" data-original-width="1242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCVmY_5nyJ2zAshc0DfF7T0J13yTg4LcYfCPooT_gJoRBaKT4fdEHcnuQbur8ORiL5OWnR39VKHMOURw5-2C63GV3cxjMEECvLvtkQNWrS-lF5C07PqDWXSUE2hRN-6kkLymn6Gbq4zYLi/s320/Non+DAC.png" width="320" /></a></div><br /><span style="font-family: verdana; font-size: small;"><br /></span><p></p><p><br /></p>Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-65199060144197358132020-08-28T22:57:00.000+05:302020-08-28T22:57:10.063+05:30'%.*ls' does not contain an identity column<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif;">Why do we get this Err ?</span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Are you trying to get an </span><a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-ver15" style="font-family: Verdana, sans-serif;"><span style="color: blue;">IDENTITY</span></a><span style="font-family: "verdana" , sans-serif;"> property Info of a Table? - But, The table actually doesn't have any IDENTITY on it!</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Ok.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Let me create a new table without any IDENTITY on it</span></div>
<div>
<span style="color: blue; font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: "verdana" , sans-serif;">CREATE TABLE</span><span style="font-family: "verdana" , sans-serif;"> dbo.Table1</span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;">(</span></div>
<span style="font-family: "verdana" , sans-serif;">
<div>
Id <span style="color: blue;">Int</span>, Name <span style="color: blue;">Varchar</span>(10)</div>
<div>
)</div>
<div>
<span style="color: blue;">GO</span></div>
</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Now, I am trying to get the IDENTITY Info of the Table</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><a href="https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkident-transact-sql?view=sql-server-ver15"><span style="color: blue;">DBCC</span> CHECKIDENT</a>(<span style="color: red;">'dbo.Table1'</span>)</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: red;">Msg 7997, Level 16, State 1, Line 4</span></span></div>
<span style="font-family: "verdana" , sans-serif;">
<div>
<span style="color: red;">'Table1' does not contain an identity column.</span></div>
<div>
<br /></div>
<div>
Yeah! Actually, we don't have an IDENTITY on this table. Right!</div>
<div>
<br /></div>
</span></div>
</div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-71867752615390320242020-08-25T23:05:00.001+05:302020-08-25T23:05:48.907+05:30The maximum system-generated unique value for a duplicate group was exceeded for index with partition ID %I64d. Dropping and re-creating the index may resolve this; otherwise, use another clustering key<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Many of you may have encountered such a critical situation like some of the Table was working fine until just last minute without any Err and suddenly you may have faced an Err shown below so called <span style="background-color: yellow;"><b><span style="color: red;">Error 666</span></b></span></span></div>
<br />
<span style="color: red; font-family: Verdana, sans-serif;"><b>Msg 666</b>, Level 16, State 2, Line 1</span><br />
<span style="color: red; font-family: Verdana, sans-serif;">The maximum system-generated unique value for a duplicate group was exceeded for index with partition ID %I64d.</span><br />
<span style="color: red; font-family: Verdana, sans-serif;">Dropping and re-creating the index may resolve this; otherwise, use another clustering key.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">What does mean ?</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">According to <b>MSDN</b> - "</span><span style="font-family: Verdana, sans-serif;">Clustered indexes sort and store the data rows in the table based on their key values. There can only be one clustered index per table, because the data rows themselves can only be sorted in one order. With few exceptions, every table should have a clustered index defined on the column, or columns, that offer the following"</span></div>
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Can be used for frequently used queries.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Provide a high degree of uniqueness</span></li>
<li><span style="font-family: Verdana, sans-serif;">Can be used in range queries</span></li>
</ul>
<div>
<span style="font-family: Verdana, sans-serif;">If the clustered index is not created with the UNIQUE property forced to it!. So what ?</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Here is the internal thing happens - "T</span><span style="font-family: Verdana, sans-serif;">he Database Engine automatically adds a <span style="background-color: yellow;">4-byte </span></span><span style="background-color: yellow; font-family: Verdana, sans-serif;">UNIQUIFIER</span><span style="font-family: Verdana, sans-serif;"> column to the table. When it is required, the Database Engine automatically adds a </span><span style="font-family: Verdana, sans-serif;">UNIQUIFIER</span><span style="font-family: Verdana, sans-serif;"> value to a row to make each key unique. The value starts with 0"</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">But, This column and it's values are used internally and cannot be seen or accessed by the users by accessing the table just like that.</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">You may ask now - Why do we need to worry about this situation ?</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Let's have some scenario</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">USE</span><span style="font-family: Verdana, sans-serif;"> [MyDatabase1]</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span></div>
<br />
<div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*Table created with TWO column*/</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">CREATE TABLE</span> MyTable1</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">(</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Id <span style="color: blue;">INT</span>, Names <span style="color: blue;">VARCHAR</span>(20) </span></div>
<div>
<span style="font-family: Verdana, sans-serif;">)</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: #6aa84f;">/*Clustered Non-Unique key created on Id column*/</span></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">CREATE CLUSTERED INDEX</span> CI_Id <span style="color: blue;">ON </span>MyTable1(Id)</span></div>
</div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*2 Records inserted*/</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">INSERT </span><span style="font-family: Verdana, sans-serif;">MyTable1</span></div>
<div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">SELECT </span>1,<span style="color: red;">'SQL'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">SELECT </span>2,<span style="color: red;">'SERVER'</span></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*Checking the Page allocations of the Table*/</span></div>
<div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">SELECT </span><span style="font-family: Verdana, sans-serif;">%%</span><span style="color: blue; font-family: Verdana, sans-serif;">Lockres</span><span style="font-family: Verdana, sans-serif;">%% [KeyHashValue], sys.fn_physlocformatter(%%Physloc%%) [File:Page:Slot], * </span><span style="color: blue; font-family: Verdana, sans-serif;">FROM </span><span style="font-family: Verdana, sans-serif;">MyTable1</span></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhunXxODJn4EOG-Z3hAz7jdTw4LCIWme7aBAMW-Alu-YdqyIwruWZiT0S87aT73-zvEkBksQaB-TdabhwIImYjXnlgGYjAKj9jakwaGZ7j917AzgIp7eSvmehoUcC1bcPJM1mAPRP0aDanz/s1600/1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="66" data-original-width="334" height="63" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhunXxODJn4EOG-Z3hAz7jdTw4LCIWme7aBAMW-Alu-YdqyIwruWZiT0S87aT73-zvEkBksQaB-TdabhwIImYjXnlgGYjAKj9jakwaGZ7j917AzgIp7eSvmehoUcC1bcPJM1mAPRP0aDanz/s320/1.PNG" width="320" /></a></div>
<div>
<br /></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*Checking the specific page (Page ID: 232)*/</span></div>
<div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">DBCC </span><span style="font-family: Verdana, sans-serif;">TRACEON(3604)</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">DBCC PAGE</span><span style="font-family: Verdana, sans-serif;">(</span><span style="color: red; font-family: Verdana, sans-serif;">'MyDatabase1'</span><span style="font-family: Verdana, sans-serif;">,1,232,3) </span><span style="color: blue; font-family: Verdana, sans-serif;">WITH TABLERESULTS</span></div>
</div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnGHERs3yGL8VhaVxUW3ZegrQMtIVA4nGVMP-cfo-3W2qjbpoMmrMOp1Chui0cJWT6i2KAmaPCikfnT9dOGRFBX5znr7gEwke-_5CYDI3Klg4goBnrsM0TrmWCBKiioFRQrJexW9XWYd-G/s1600/2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="519" data-original-width="640" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnGHERs3yGL8VhaVxUW3ZegrQMtIVA4nGVMP-cfo-3W2qjbpoMmrMOp1Chui0cJWT6i2KAmaPCikfnT9dOGRFBX5znr7gEwke-_5CYDI3Klg4goBnrsM0TrmWCBKiioFRQrJexW9XWYd-G/s400/2.PNG" width="400" /></a></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
</div>
</div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">But, It has lot of other Information. Right. let's simplify the data and remove rest of them</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*Creating a Temp table to have the about result. So, That we can filter-it out as needed*/</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">CREATE TABLE</span><span style="font-family: Verdana, sans-serif;"> #Info(ParentObject </span><span style="color: blue; font-family: Verdana, sans-serif;">VARCHAR</span><span style="font-family: Verdana, sans-serif;">(50), [Object] </span><span style="color: blue; font-family: Verdana, sans-serif;">VARCHAR</span><span style="font-family: Verdana, sans-serif;">(100), Field </span><span style="color: blue; font-family: Verdana, sans-serif;">VARCHAR</span><span style="font-family: Verdana, sans-serif;">(50), Value </span><span style="color: blue; font-family: Verdana, sans-serif;">VARCHAR</span><span style="font-family: Verdana, sans-serif;">(1000))</span></div>
<div>
<br /></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">INSERT </span><span style="font-family: Verdana, sans-serif;">#Info</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">EXEC</span><span style="font-family: Verdana, sans-serif;">(</span><span style="color: red; font-family: Verdana, sans-serif;">'DBCC PAGE(''MyDatabase1'',1,232,3) WITH TABLERESULTS'</span><span style="font-family: Verdana, sans-serif;">)</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*We don't need Header and Buffer Info for now*/</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">DELETE </span><span style="font-family: Verdana, sans-serif;">#Info </span><span style="color: blue; font-family: Verdana, sans-serif;">WHERE </span><span style="font-family: Verdana, sans-serif;">ParentObject in(</span><span style="color: red; font-family: Verdana, sans-serif;">'BUFFER:'</span><span style="font-family: Verdana, sans-serif;">,</span><span style="color: red; font-family: Verdana, sans-serif;">'PAGE HEADER:'</span><span style="font-family: Verdana, sans-serif;">)</span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;">SELECT </span><span style="font-family: Verdana, sans-serif;">* </span><span style="color: blue; font-family: Verdana, sans-serif;">FROM </span><span style="font-family: Verdana, sans-serif;">#Info</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJwcxEvOrrz23QJQOeb0m-3FyyzQW7hZB2CdXf9SvkRFZhxOqnpwYg_CpHHWMVP5ToHccPszQKgIPk1a_PSZM3ZUkPIazKqArzLxQep4vj71vA3eOVc_DZ3xrpeqUl30WJW_z4h_5RquEN/s1600/3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="268" data-original-width="1130" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJwcxEvOrrz23QJQOeb0m-3FyyzQW7hZB2CdXf9SvkRFZhxOqnpwYg_CpHHWMVP5ToHccPszQKgIPk1a_PSZM3ZUkPIazKqArzLxQep4vj71vA3eOVc_DZ3xrpeqUl30WJW_z4h_5RquEN/s640/3.PNG" width="640" /></a></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">As you can see above, There is one more Internal column has been added "UNIQUIFIER" to force the Internal Uniqueness for the Clustered Key.</span></div>
<div style="text-align: justify;">
<span style="color: blue; font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">And, Both the </span><span style="font-family: Verdana, sans-serif;">"UNIQUIFIER" record has a value as "<b>0</b>". Because, There is No duplicate on Clustered key column "Id". So, There is no need for Nth duplicate indication on </span><span style="font-family: Verdana, sans-serif;">"UNIQUIFIER" column. Right!</span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="color: #6aa84f; font-family: Verdana, sans-serif;">/*Insert 4 More records with 2 Duplicate Data on "Id" column*/</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">INSERT </span>MyTable1</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'SQL SERVER'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></div>
</span><span style="font-family: Verdana, sans-serif;"><div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'UNIQUIFIER'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></div>
</span><span style="font-family: Verdana, sans-serif;"><div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'CLUSTERED'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></div>
</span><span style="font-family: Verdana, sans-serif;"><div>
<span style="color: blue;">SELECT </span>4,<span style="color: red;">'NON-UNIQUE'</span></div>
<div>
<span style="color: blue;">GO</span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;">TRUNCATE TABLE</span> #Info</div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;">INSERT </span>#Info</div>
<div>
<span style="color: blue;">EXEC</span>(<span style="color: red;">'DBCC PAGE(''MyDatabase1'',1,232,3) WITH TABLERESULTS'</span>)</div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;">DELETE </span>#Info <span style="color: blue;">WHERE </span>ParentObject in(<span style="color: red;">'BUFFER:'</span>,<span style="color: red;">'PAGE HEADER:'</span>)</div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span>#Info <span style="color: blue;">WHERE </span>Field IN (<span style="color: red;">'UNIQUIFIER'</span>,<span style="color: red;">'Id'</span>,<span style="color: red;">'Names'</span>,<span style="color: red;">'KeyHashValue'</span>)</div>
<div>
<span style="color: blue;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHWI_iV-EemME_zqI-v835xC1fXp2inQTrW2l8TelrECJvw_uY4oVzTfY0TnaS56qpxpE4fFLKyw5Z1Qfca85q18yPVKyfuqX07uBFOcmjQRwx7g_Mz9Uvl4Rr5wMThHP-jQtsbPYhNSK/s1600/4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="553" data-original-width="829" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHWI_iV-EemME_zqI-v835xC1fXp2inQTrW2l8TelrECJvw_uY4oVzTfY0TnaS56qpxpE4fFLKyw5Z1Qfca85q18yPVKyfuqX07uBFOcmjQRwx7g_Mz9Uvl4Rr5wMThHP-jQtsbPYhNSK/s640/4.PNG" width="640" /></a></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
<span style="color: blue;"><br /></span></div>
<div>
Can you guess ? What just happening ? Yes! - You are right!</div>
<div>
<br /></div>
<div style="text-align: justify;">
We have inserted 4 New records and 3 of them duplicated (Id as "3"). Right ? So, The system wants to force the Unique value on "UNIQUIFIER" internal column. So, The "UNIQUIFIER" column have Nth duplicate indication!!</div>
<div style="text-align: justify;">
<br /></div>
<div>
<span style="color: #6aa84f;">/*Deleted the records which Id column has "3"*/</span></div>
<div>
<div>
<span style="color: blue;">DELETE </span>MyTable1 <span style="color: blue;">WHERE </span>Id = 3</div>
<div>
<span style="color: blue;">GO</span></div>
<div>
<br /></div>
<div>
<span style="color: #6aa84f;">/*Inserted 3 records again*/</span></div>
<div>
<span style="color: blue;">INSERT </span>MyTable1</div>
<div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'SQL SERVER'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></div>
<div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'UNIQUIFIER'</span> <span style="color: blue;">UNION</span> <span style="color: #999999;">ALL</span></div>
<div>
<span style="color: blue;">SELECT </span>3,<span style="color: red;">'CLUSTERED'</span></div>
<div>
<span style="color: blue;">GO</span></div>
</div>
</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">So, Can you guess - How many physical records will be there ? </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Let's explore here</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><div>
<span style="color: blue;">SELECT</span> * <span style="color: blue;">FROM </span>MyTable1</div>
<div>
<span style="color: blue;">GO</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDt8GESA-Ispngvz3nRo8cURvzT0A6RP9IB4wKU9YpYaAyLcdrLsXtWikScemOm7dB9wuDA6L2wNzMl0MmpAHdhRsZHnnzzhFOAljhN9IWibkDfhgsJZh6nuOi8RkUJdYKaoVFxPysui4-/s1600/Records.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="158" data-original-width="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDt8GESA-Ispngvz3nRo8cURvzT0A6RP9IB4wKU9YpYaAyLcdrLsXtWikScemOm7dB9wuDA6L2wNzMl0MmpAHdhRsZHnnzzhFOAljhN9IWibkDfhgsJZh6nuOi8RkUJdYKaoVFxPysui4-/s1600/Records.PNG" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
</span></div>
<div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
Yeah! We have 6 Records as expected.</div>
<div style="font-family: Verdana, sans-serif;">
<br /></div>
<div style="font-family: Verdana, sans-serif;">
What would be the "UNIQUIFIER" internal value the system have ?</div>
<div style="font-family: Verdana, sans-serif;">
<br /></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;">TRUNCATE TABLE</span> #Info</div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;">INSERT </span>#Info</div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;">EXEC</span>(<span style="color: red;">'DBCC PAGE(''MyDatabase1'',1,232,3) WITH TABLERESULTS'</span>)</div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;">DELETE </span>#Info <span style="color: blue;">WHERE </span>ParentObject in(<span style="color: red;">'BUFFER:'</span>,<span style="color: red;">'PAGE HEADER:'</span>)</div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;"><br /></span></div>
<div style="font-family: Verdana, sans-serif;">
<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span>#Info <span style="color: blue;">WHERE </span>Field IN (<span style="color: red;">'UNIQUIFIER'</span>,<span style="color: red;">'Id'</span>,<span style="color: red;">'Names'</span>,<span style="color: red;">'KeyHashValue'</span>)</div>
</div>
<div style="font-family: Verdana, sans-serif;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8DtSXrE-gzL2Qi0xT6OpCek9lK-m1zH8ySdahXxzR0vDxJGNm3CiwBHZHrzXWT477OD1b8INT6t4kiO4ZLPdE6AeHa7Yx1YUhLCG1vfktBI4MEzdiDhNbJsND2LkvNTkyoECgXOzvW_sn/s1600/5.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="554" data-original-width="827" height="427" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8DtSXrE-gzL2Qi0xT6OpCek9lK-m1zH8ySdahXxzR0vDxJGNm3CiwBHZHrzXWT477OD1b8INT6t4kiO4ZLPdE6AeHa7Yx1YUhLCG1vfktBI4MEzdiDhNbJsND2LkvNTkyoECgXOzvW_sn/s640/5.PNG" width="640" /></a></div>
<div style="font-family: Verdana, sans-serif;">
<br /></div>
<div style="font-family: Verdana, sans-serif;">
<br /></div>
<div>
<br /></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-family: Verdana, sans-serif;">Yes! We just have 6 Records (<b>Slot 0</b> to <b>Slot 5</b>) only. But, Did you see the "UNIQUIFIER" Internal column value ?</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">It has been Increased! Because, we already had 2 duplicate detected on "Id" column. Now, It has increased since than. It's not Reset anymore even when records deleted. That's the reason why the Internal column getting Increased even If the actual duplicate records removed/deleted!</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">So, I hope you would have guessed, What would happen If these kind of duplicate records DELETED and INSERTED multiple time with huge volume (Millions of transactions), The "UNIQUIFIER" internal column still increase along with the DELETED duplicated data and It's not RESET anymore as I said earlier.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Verdana, sans-serif;">Ok. Guess what ?</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">We will get such an Error, If we perform such a transaction as explained above w</span><span style="font-family: Verdana, sans-serif;">ithout resetting the UNIQUIFIER, sometimes we can reach it's upper limit "</span><span style="font-family: Verdana, sans-serif;"><span style="color: red;">2147483648</span>"</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxM2PPvsC2v7hiCx82rfeJdJMQkFAkx5iZfFcJdQvnymTHiqGfqtHtpe4o-T24iEixuPBcnVs5JI0KIgJblUb5isiIXbFIGLxS-2W7nqPpP2ijak0iBPnRfzMQqAPX0_bkBkW4vftxoEvg/s1600/6.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="607" data-original-width="994" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxM2PPvsC2v7hiCx82rfeJdJMQkFAkx5iZfFcJdQvnymTHiqGfqtHtpe4o-T24iEixuPBcnVs5JI0KIgJblUb5isiIXbFIGLxS-2W7nqPpP2ijak0iBPnRfzMQqAPX0_bkBkW4vftxoEvg/s640/6.PNG" width="640" /></a></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">We will get such an Error If we INSERT 1 more duplicate record...</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="color: red; font-family: Verdana, sans-serif;"><b>Msg 666</b>, Level 16, State 2, Line 1</span><br />
<span style="color: red; font-family: Verdana, sans-serif;">The maximum system-generated unique value for a duplicate group was exceeded for index with partition ID %I64d.</span><br />
<span style="color: red; font-family: Verdana, sans-serif;">D</span><span style="color: red; font-family: Verdana, sans-serif;">ropping and re-creating the index may resolve this; otherwise, use another clustering key.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">The goal of this post is to give you an insight on how the UNIQUIFIER works and allow you to manually check for potential issue in your environment and avoiding such an error 666 and over come the situation</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>How to reset the value and unblock the situation ?</b></span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="background-color: #f4cccc; font-family: Verdana, sans-serif;">1.</span><span style="font-family: Verdana, sans-serif;">As per the Error suggests DROP and CREATE the Index</span><br />
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">DROP INDEX </span>MyTable1.CI_Id</span><br />
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span><br />
<span style="font-family: Verdana, sans-serif;"><span style="color: blue;">CREATE CLUSTERED INDEX</span> CI_Id <span style="color: blue;">ON </span>MyTable1(Id)</span><br />
<span style="color: blue; font-family: Verdana, sans-serif;">GO</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>Note</b>: Rebuild Index will not help us</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Check with the New page ID allocated and see whether the "UNIQUIFIER" value has been reset!</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><span style="background-color: #f4cccc;">2.</span> If still the Issue not been resolved</span><br />
<br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif;">Create a new table with same structure (MyTable1_New)</span></li>
<li><span style="font-family: Verdana, sans-serif;">Load the Data from an existing table (Using Import wizard Or Bulk Insert)</span></li>
<li><span style="font-family: Verdana, sans-serif;">Create the Clustered Index</span></li>
<li><span style="font-family: Verdana, sans-serif;">Archive/Remove the Old Table once make sure everything is resolved </span></li>
</ul>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Thanks for your time!</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com2tag:blogger.com,1999:blog-6281873472989374623.post-47882193557262876462020-08-23T12:26:00.000+05:302020-08-23T12:26:50.399+05:30Automatic Page Repair With SQL Server Database Mirroring - Part II<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif;">Please have a look to the <a href="http://sqlserverbuddy.blogspot.com/2020/08/automatic-page-repair-with-sql-server.html" target="_blank"><span style="color: blue;"><b>Part I</b></span></a> for better understanding.</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">In our previous part, there was lots of steps to configure the Mirroring and Manual Failover thing. I hope you would have enjoyed that. Thanks for your time on that!!</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Here we will be discussing about - How the corrupted Page will be repaired automatically by the Mirroring</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Just recap about the environments participated on Mirroring. We have failover it again to being back to the below state</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBrykm8pKP75Bf3hN7yqx7syigWcuAXB2nFYoGCYr0CvrlHVNAHZHulvXVDJEj2beoLzNr9Oazr5C2gC5Jo00xA2cFr4kDU3_xSEOpSHIaTaiIWmHPZIRY9Ow_tnEtLVWusb9Aa1MuK4ed/s1600/Environments.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="87" data-original-width="620" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBrykm8pKP75Bf3hN7yqx7syigWcuAXB2nFYoGCYr0CvrlHVNAHZHulvXVDJEj2beoLzNr9Oazr5C2gC5Jo00xA2cFr4kDU3_xSEOpSHIaTaiIWmHPZIRY9Ow_tnEtLVWusb9Aa1MuK4ed/s640/Environments.PNG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let me make sure the Mirroring environments are in Sync</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3kEHTMyN34LCgkqVHRoMZewBumdGoCZFQh2xqVdARPwoJFlvEdYDMXFlqYCHMkah32D8VgJ-ZlkwWuyexOLUkhB0MlKmpRJBYhg52gsMAvl1ukTGEq7y0zmPLjNCusb5JVeFUtQ5AekiA/s1600/In+Sync.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="621" data-original-width="1389" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3kEHTMyN34LCgkqVHRoMZewBumdGoCZFQh2xqVdARPwoJFlvEdYDMXFlqYCHMkah32D8VgJ-ZlkwWuyexOLUkhB0MlKmpRJBYhg52gsMAvl1ukTGEq7y0zmPLjNCusb5JVeFUtQ5AekiA/s640/In+Sync.PNG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Everything is in Sync</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">1.</span> let me corrupt some Data Page of Principal Database "</span><span style="font-family: "verdana" , sans-serif;">PrimaryDB1</span><span style="font-family: "verdana" , sans-serif;">" (In PANDIAN\SQL2012)</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">2.</span> Here is the Data Page we trying to corrupt</span></span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue; font-family: "verdana" , sans-serif;">SELECT</span><span style="font-family: "verdana" , sans-serif;"> %%</span><span style="color: blue; font-family: "verdana" , sans-serif;">LockRes</span><span style="font-family: "verdana" , sans-serif;">%% [Page Allocation],* </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="font-family: "verdana" , sans-serif;">PrimaryDB1.dbo.TABLE1</span></span><br />
<span style="font-family: "verdana" , sans-serif;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnl4CcEyD14UB9chjNsHMGYzdU52GA9V1IEuLwjuAP342deyfVThFoV3wKlB50Y6Yxrxe8bO97dJFmw3B5EIj95MD8BdpaKKb3KOiT2CeDwmAZkJu9wSOCzoQe-x06cmJViCHQvXCoO7D/s1600/Records1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="242" data-original-width="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnl4CcEyD14UB9chjNsHMGYzdU52GA9V1IEuLwjuAP342deyfVThFoV3wKlB50Y6Yxrxe8bO97dJFmw3B5EIj95MD8BdpaKKb3KOiT2CeDwmAZkJu9wSOCzoQe-x06cmJViCHQvXCoO7D/s1600/Records1.PNG" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;">Ok. I try to corrupt the page id "232" (232 x 8192 = </span><span style="font-family: "verdana" , sans-serif;"><b style="background-color: #ffe599;">1900544</b>)</span></span><br />
<span style="background-color: yellow; font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif; font-size: large;"><span style="background-color: yellow;"><b><span style="color: #660000;">Disclaimer</span></b>: P</span><span style="background-color: yellow;">lease don't try to corrupt the data page manually in any of the PRODUCTIONS Or other live Databases environments. It may lead to corrupt and non-operational the whole database If something goes wrong!!</span></span><br />
<span style="background-color: #f4cccc; font-family: "verdana" , sans-serif;"><br /></span>
<span style="background-color: #f4cccc; font-family: "verdana" , sans-serif;">3.</span><span style="font-family: "verdana" , sans-serif;"> let me use XVI32.exe tool to corrupt the Page</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Actually, The plan is to open the data file(.mdf) in this tool in administrative mode to make the change on it's internal allocation bits</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let me get the File path of the Database</span></span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>PrimaryDB1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue; font-family: "verdana" , sans-serif;">Exec </span><span style="color: #990000; font-family: "verdana" , sans-serif;">sp_helpfile</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: #990000; font-family: "verdana" , sans-serif;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTf60OHzAsz9wwWzltxIo-y4yGF35ymilt_ts1jylUwz_OmwENM_ApFd422ECnn1_8KKBH8rGJfQHg7qDLw9asIqWdtip0IOB_rtsTlUGPIoNfV73G_GfiEJ_O9174CJSXivDcluPQbnHs/s1600/FilePath.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="68" data-original-width="1189" height="36" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTf60OHzAsz9wwWzltxIo-y4yGF35ymilt_ts1jylUwz_OmwENM_ApFd422ECnn1_8KKBH8rGJfQHg7qDLw9asIqWdtip0IOB_rtsTlUGPIoNfV73G_GfiEJ_O9174CJSXivDcluPQbnHs/s640/FilePath.PNG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="background-color: #cccccc;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Normally, The database should be in OFFLINE to access the underlying Data/Log files.</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But, We can't do that right now since the Database is in Mirroring. let's try once</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #cccccc;"><br /></span>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[Master]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue; font-family: "verdana" , sans-serif;">ALTER DATABASE</span><span style="font-family: "verdana" , sans-serif;"> PrimaryDB1 </span><span style="color: blue; font-family: "verdana" , sans-serif;">SET OFFLINE</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: #cccccc; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span></span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">Msg 1468, Level 16, State 1, Line 10</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">The operation cannot be performed on database "PrimaryDB1" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">Msg 5069, Level 16, State 1, Line 10</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">ALTER DATABASE statement failed.</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">So, What to we do now ?</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">let me Stop the Mirror Now</span></span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">ALTER DATABASE </span>PrimaryDB1 <span style="color: blue;">SET PARTNER SUSPEND</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgViUwPcYMHVNObkhshablAbAcg921wZ74y0CJ6GEvNgagO3FVgP7ZaqTUwgV1NFGF1005zOwJxi6gX1XmXlgThBwbVGijiN5qvG9Ja1xaQpWItH4M3osSivxaG28shthzoKrDgQTYOQlX8/s1600/Mirror+Stopped.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="620" data-original-width="1350" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgViUwPcYMHVNObkhshablAbAcg921wZ74y0CJ6GEvNgagO3FVgP7ZaqTUwgV1NFGF1005zOwJxi6gX1XmXlgThBwbVGijiN5qvG9Ja1xaQpWItH4M3osSivxaG28shthzoKrDgQTYOQlX8/s640/Mirror+Stopped.PNG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Let me STOP the SQL Service of the Primary database Instance(PANDIAN\SQL2012)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">4.</span> Let's corrupt the page id (232) using the Tool (XVI32.exe)</span></span><br />
<span style="font-family: "verdana" , sans-serif;">Open the Tool in Administrative mode</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">File --> Open --> Locate the </span><span style="font-family: "verdana" , sans-serif;">data file (.mdf)</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Address --> Goto --> </span><b style="background-color: #ffe599;">1900544</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Change some of the Bits</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Save the File. Its' done. We just corrupted the Data page</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">START the SQL Service</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">5.</span> Let me access the Table</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #cccccc;"><br /></span>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue; font-family: "verdana" , sans-serif;">SELECT</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="font-family: "verdana" , sans-serif;">%%</span><span style="color: blue; font-family: "verdana" , sans-serif;">LockRes</span><span style="font-family: "verdana" , sans-serif;">%% [Page Allocation],*</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="font-family: "verdana" , sans-serif;">PrimaryDB1.dbo.TABLE1</span></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Yeah. See, The Page ID: 232 got corrupted as shown below</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">Msg </span><b style="background-color: yellow; color: red; font-family: Verdana, sans-serif;">824</b><span style="color: red; font-family: "verdana" , sans-serif;">, Level 24, State 2, Line 1</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xefd30b4e; actual: 0x67db0b46). It occurred during a read of page (1:</span><b style="color: red; font-family: Verdana, sans-serif;">232</b><span style="color: red; font-family: "verdana" , sans-serif;">) in database ID 5 at offset 0x000000001d0000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\PrimaryDB1.mdf'. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">let me check at the suspect pages system table </span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">
</span>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<span style="font-family: "verdana" , sans-serif;">
<div>
<div>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></div>
<div>
<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span>msdb.dbo.suspect_pages</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRZC0_vce0n5bEBdquyUH0GDLJLkhJTOh44dMtBFgs8fSpiQdrCL1zMKzRFWngSE2j9H8I_7boYq1tpyWEKCJxWUvb3h3vtkug-bgpDG_4oaweRaZv3ue0fcT4YP2BQUGmzsmqo2uEV69b/s1600/suspect+page1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="46" data-original-width="595" height="48" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRZC0_vce0n5bEBdquyUH0GDLJLkhJTOh44dMtBFgs8fSpiQdrCL1zMKzRFWngSE2j9H8I_7boYq1tpyWEKCJxWUvb3h3vtkug-bgpDG_4oaweRaZv3ue0fcT4YP2BQUGmzsmqo2uEV69b/s640/suspect+page1.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
See, The event_type column has 2 (<span style="background-color: yellow;">Bad Checksum</span>)</div>
<div>
<br /></div>
<div>
For detailed Info on <a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/suspect-pages-transact-sql?view=sql-server-ver15"><span style="color: blue;">msdb..suspect_pages</span></a></div>
<div>
<br /></div>
<div>
<div>
How do we know, The Mirroring repaired the corrupted page automatically Or Not ?</div>
<div>
<br /></div>
<span style="font-family: "verdana" , sans-serif;">We have a system VIEW </span><span style="color: blue; font-family: "verdana" , sans-serif;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/database-mirroring-sys-dm-db-mirroring-auto-page-repair?view=sql-server-ver15">sys.dm_db_mirroring_auto_page_repair</a></span><span style="font-family: "verdana" , sans-serif;"> which will </span><span style="font-family: "verdana" , sans-serif;">have a <span style="color: #171717;">row for every automatic page-repair attempt on any mirrored database on the server instance</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span><span style="color: #38761d;">sys.dm_db_mirroring_auto_page_repair</span><span style="font-family: "verdana" , sans-serif;"></span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZ9dEv2UCGTiQVFmST49MgRBj3XNQ8-bAF-tqIMCkxSOs1slJALX0IFMkZKDkG-64EdEswELktiq5p0JRhNWlXJzT1RFwB4n33vGcm-mZFGu_UnV6IXdTs5WW87fSlSGCe0_V3PmD4XFs/s1600/Mirror+Suspect.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="47" data-original-width="578" height="51" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZ9dEv2UCGTiQVFmST49MgRBj3XNQ8-bAF-tqIMCkxSOs1slJALX0IFMkZKDkG-64EdEswELktiq5p0JRhNWlXJzT1RFwB4n33vGcm-mZFGu_UnV6IXdTs5WW87fSlSGCe0_V3PmD4XFs/s640/Mirror+Suspect.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">There is no records in this system View yet which means - Mirroring not started to repair the page yet!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let me start the Mirror now and see...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue;">ALTER DATABASE</span> PrimaryDB1 <span style="color: blue;">SET PARTNER RESUME</span><span style="font-family: "verdana" , sans-serif;"></span></div>
<div>
<div>
<br /></div>
<div>
Wait for some time and Let the Mirroring repair the corrupted page in Principal Database</div>
<div>
<br /></div>
<div>
<span style="background-color: #f4cccc;">6.</span> Let me access the corrupted Table again in Principal Database</div>
<div>
<span style="background-color: #cccccc;"><br /></span></div>
<div>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></div>
<div>
<span style="color: blue; font-family: "verdana" , sans-serif;">SELECT</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="font-family: "verdana" , sans-serif;">%%</span><span style="color: blue; font-family: "verdana" , sans-serif;">LockRes</span><span style="font-family: "verdana" , sans-serif;">%% [Page Allocation],*</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="font-family: "verdana" , sans-serif;">PrimaryDB1.dbo.TABLE1</span></div>
<div style="color: black; font-style: normal; font-weight: 400; letter-spacing: normal; margin: 0px; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8g1vtTXfeihqPFOBg9LP1IyiX_GrWuwM5O5dlB9nnMdTWjXMmtr70aAInv2pK6zWpn3WMD8dUnsjqKojYMIia8w-su6k1kkU7AcSFM5hupGMMW0TGcHuPfyMmoqXuF8X4xokFnOep-zmo/s1600/Records.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="244" data-original-width="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8g1vtTXfeihqPFOBg9LP1IyiX_GrWuwM5O5dlB9nnMdTWjXMmtr70aAInv2pK6zWpn3WMD8dUnsjqKojYMIia8w-su6k1kkU7AcSFM5hupGMMW0TGcHuPfyMmoqXuF8X4xokFnOep-zmo/s1600/Records.PNG" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
It's done!!! - The corrupted page got repaired and The table back to operational</div>
<div>
<br /></div>
<div>
Let's make sure</div>
<div>
<br /></div>
<div>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></div>
<div>
<span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/suspect-pages-transact-sql?view=sql-server-ver15"><span style="color: blue;">msdb.dbo.suspect_pages</span></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicdygBN3SwIpmGusQxle5Ghew4V2QUtuaMkmbglZAebpjXUYEv448Uakj-vv2ho5CgNVHnhS2iy7955Cd2cQKaUPb1JEpRRNHroYbO2iCISTiCVu9tOWVsJfAzw48wbvn6fy4R2OgXy_VI/s1600/After+Repaired.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="47" data-original-width="602" height="48" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicdygBN3SwIpmGusQxle5Ghew4V2QUtuaMkmbglZAebpjXUYEv448Uakj-vv2ho5CgNVHnhS2iy7955Cd2cQKaUPb1JEpRRNHroYbO2iCISTiCVu9tOWVsJfAzw48wbvn6fy4R2OgXy_VI/s640/After+Repaired.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
See, The event_type column has 5 now (<span style="background-color: yellow;">Repaired</span>)</div>
<div>
<br /></div>
<div>
<span style="background-color: #cccccc;">:CONNECT PANDIAN\SQL2012</span></div>
<div>
<span style="color: blue; font-family: "verdana" , sans-serif;">SELECT </span><span style="font-family: "verdana" , sans-serif;">* </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="color: blue; font-family: "verdana" , sans-serif;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/database-mirroring-sys-dm-db-mirroring-auto-page-repair?view=sql-server-ver15">sys.dm_db_mirroring_auto_page_repair</a></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3mF3dM-Lso7AgYP6w1iclsg-Q3-UAnXdBMFoiC_fYztwezBRDUJ9iEeylz3uw4pf6IEvxXftdVB825dW0E18JZBe8A6cC99PXzxH1aHxzH0hU1PxLbkJ9nt8judLH3q80UsqpCOg9pYa/s1600/Mirror+Repaired+Page+Info.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="46" data-original-width="592" height="48" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3mF3dM-Lso7AgYP6w1iclsg-Q3-UAnXdBMFoiC_fYztwezBRDUJ9iEeylz3uw4pf6IEvxXftdVB825dW0E18JZBe8A6cC99PXzxH1aHxzH0hU1PxLbkJ9nt8judLH3q80UsqpCOg9pYa/s640/Mirror+Repaired+Page+Info.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<span style="font-family: "verdana" , sans-serif;">See, The page_status column has 5 (<span style="background-color: yellow; color: #171717;">5 = Automatic page repair succeeded and the page should be usable</span><span style="color: #171717;">)</span></span></div>
<div>
<span style="color: #171717; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #171717; font-family: "verdana" , sans-serif;">What just happening when the page corrupted at Principal source ?</span></div>
<div>
<span style="color: #171717; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #171717; font-family: "verdana" , sans-serif;"><b>According to MSDN</b></span></div>
<div>
<span style="color: #171717; text-align: justify;"><br /></span></div>
<div>
<span style="color: #171717; text-align: justify;">a) When a read error occurs on a data page in the principal/primary database, the principal/primary inserts a row in the suspect_pages table with the appropriate error status. the principal then requests a copy of the page from the mirror.</span></div>
<div>
<span style="color: #171717;"><br /></span></div>
<div>
<span style="color: #171717;">b) The request specifies the page ID and the LSN that is currently at the end of the flushed log.</span></div>
<div>
<span style="color: #171717; text-align: justify;"><br /></span></div>
<div>
<span style="color: #171717; text-align: justify;">c) The page is marked as restore pending. This makes it inaccessible during the automatic page-repair attempt. Attempts to access this page during the repair attempt will fail with error 829 (restore pending)</span></div>
<div>
<span style="color: #171717; text-align: justify;"><br /></span></div>
<div>
<span style="color: #171717; text-align: justify;">d) After receiving the page request, the mirror/secondary waits until it has redone the log up to the LSN specified in the request. Then, the mirror/secondary tries to access the page in its copy of the database. If the page can be accessed, the mirror/secondary sends the copy of the page to the principal/primary. Otherwise, the mirror/secondary returns an error to the principal/primary, and the automatic page-repair attempt fails.</span></div>
<div style="text-align: justify;">
<span style="text-align: left;"><br /></span></div>
<div style="text-align: justify;">
<span style="text-align: left;"><span style="background-color: #f4cccc;">7.</span> What will happen, If the Principal and Mirror versions are different ?</span></div>
</div>
</span></div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">If I use SQL Server 2012 for Principal and </span><span style="font-family: "verdana" , sans-serif;">SQL Server 2014 for Mirror</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">It can be able to failover from Principal to Mirror (2012 to 2014)</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But, </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">If I try to failover back 2014 to 2012, There will be a problem with below Err </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: red; font-family: "verdana" , sans-serif;">Error: 948, Severity: 20, State: 2.</span></span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">The database 'PrimaryDB1' cannot be opened because it is version <b>782</b>. This server supports version <b>706</b> and earlier. <span style="background-color: #ead1dc;">A downgrade path is not supported</span>.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Here are the list of SQL Server Database Versions</span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhstWm__m5-efFIAzedM4j1EdI4IThGs62PfC8cf_LCFLFOsEKCUKLlEZEZqHv3wg5HhL-y_E8irTyYq82Jcp-zjeVlmfdOGU2-YhjE1yQv4lZ7XD829soW1HhIAV9TlsJQRgW_fu6OclBt/s1600/Database+Versions.PNG" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="246" data-original-width="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhstWm__m5-efFIAzedM4j1EdI4IThGs62PfC8cf_LCFLFOsEKCUKLlEZEZqHv3wg5HhL-y_E8irTyYq82Jcp-zjeVlmfdOGU2-YhjE1yQv4lZ7XD829soW1HhIAV9TlsJQRgW_fu6OclBt/s1600/Database+Versions.PNG" /></span></a><br />
<br /></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-39407840850431124732020-08-22T00:18:00.001+05:302020-08-23T12:32:10.249+05:30Automatic Page Repair With SQL Server Database Mirroring - Part I<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif;">Do we need to worry about the page corruption ?</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">May be Yes! </span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">As you may know - Data are stored and maintained by the SQL Server as Page(s). Right ?</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">A page can have up to 8 KB of data (8192 Bytes)</span></span><br />
<span style="font-family: "verdana" , sans-serif; text-align: justify;"><br /></span>
<span style="font-family: "verdana" , sans-serif; text-align: justify;">When I try to fetch the data from a table, The SQL Server database engine traverse through the pages what are allocated to the tables data and flush the appropriate records to the client (Management Studio or request end-point). But,</span><br />
<span style="font-family: "verdana" , sans-serif; text-align: justify;"><br /></span>
<span style="font-family: "verdana" , sans-serif; text-align: justify;">If something goes wrong at internal structure which the system may not be able to traverse through the pages we requested because of the logical inconsistent among the pages - May end with an Error called Logical Inconstant with I/O operations!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But, The page corruption occurs in the various levels as follows</span><br />
<span style="font-family: "verdana" , sans-serif;">Data Pages</span><br />
<span style="font-family: "verdana" , sans-serif;">Index Pages</span><br />
<span style="font-family: "verdana" , sans-serif;">Text/Image</span><br />
<span style="font-family: "verdana" , sans-serif;">File header page (Page ID 0)</span><br />
<span style="font-family: "verdana" , sans-serif;">Page 9 (Database Boot Page)</span><br />
<span style="font-family: "verdana" , sans-serif;">Allocation Pages (GAM, SGAM, PFS, IAM, BCM and DCM)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">For Detailed info., on each page types:</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><a href="https://docs.microsoft.com/en-us/sql/relational-databases/pages-and-extents-architecture-guide?view=sql-server-ver15">https://docs.microsoft.com/en-us/sql/relational-databases/pages-and-extents-architecture-guide?view=sql-server-ver15</a></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The page corruptions can be repaired automatically using </span><span style="font-family: "verdana" , sans-serif;">Mirroring or Always-On Availability Group</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But, Some of the page corruptions can't be repaired automatically by Mirroring or Always-On Availability Group either</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Ok. <b>Let's enable Mirroring</b>, try with Failover and corrupt some of the Data Page(s) in Principal database and see whether the automatic page repair works!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">let's begin...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;"><b>My Test Environments</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqk0T0p20YHzLMsY-j3yWOdwQIqNZwLnKfXbmQTXjtac6Zzs4avOmIz9g7FfiEoIXlJPwbYyET-z_jTWf1J1_EcPuA-PihXlfm8sq6n9pqaxSO94fTQQEEOLSQ-MAoSrw8vGe-_eelalrk/s1600/Environments.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Environment Details" border="0" data-original-height="87" data-original-width="620" height="55" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqk0T0p20YHzLMsY-j3yWOdwQIqNZwLnKfXbmQTXjtac6Zzs4avOmIz9g7FfiEoIXlJPwbYyET-z_jTWf1J1_EcPuA-PihXlfm8sq6n9pqaxSO94fTQQEEOLSQ-MAoSrw8vGe-_eelalrk/s400/Environments.PNG" title="" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">I am going to use SQL Server 2012 Instance "</span><b style="color: #38761d; font-family: verdana, sans-serif; font-size: small;">PANDIAN\SQL2012</b><span style="font-family: "verdana" , sans-serif;">" as Principal, </span><span style="font-family: "verdana" , sans-serif;">SQL Server 2012 Instance "</span><b style="color: #38761d; font-family: verdana, sans-serif; font-size: small;">PANDIAN\SQL2012_1</b><span style="font-family: "verdana" , sans-serif;">" as Mirror and </span><span style="font-family: "verdana" , sans-serif;">SQL Server 2016 Instance "</span><b style="color: #38761d; font-family: verdana, sans-serif; font-size: small;">PANDIAN\SQL2016</b><span style="font-family: "verdana" , sans-serif;">" as Witness.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Why I am using Same Version of SQL Server for Principal and Mirror ? let me tell you later</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let's change the SQL management studio session in "SQLCMD Mode" (Query menu --> </span><span style="font-family: "verdana" , sans-serif;">SQLCMD Mode)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">1.</span> To Create a Sample database in Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">CREATE DATABASE</span> PrimaryDB1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #999999; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">2.</span> Creating sample table and records</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>PrimaryDB1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">CREATE TABLE</span> TABLE1(ID <span style="color: blue;">INT IDENTITY</span>(1,1), NAMES <span style="color: blue;">VARCHAR</span>(10))</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">INSERT </span>TABLE1(NAMES) <span style="color: blue;">VALUES</span>(<span style="color: red;">'SQL'</span>),(<span style="color: red;">'Server'</span>),(<span style="color: red;">'SQL Server'</span>)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">INSERT </span>TABLE1(NAMES) <span style="color: blue;">VALUES</span>(<span style="color: red;">'Mirroring'</span>),(<span style="color: red;">'Failover'</span>),(<span style="color: red;">'Testing'</span>)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">INSERT </span>TABLE1(NAMES) <span style="color: blue;">VALUES</span>(<span style="color: red;">'Automatic'</span>),(<span style="color: red;">'Page'</span>),(<span style="color: red;">'Corruption'</span>),(<span style="color: red;">'Manual'</span>)</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #999999; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;">(3 row(s) affected)</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;">(3 row(s) affected)</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;">(4 row(s) affected)</span><br />
<span style="color: #999999; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">3.</span> Sample records from the Table</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>PrimaryDB1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">SELECT </span><span style="font-family: "verdana" , sans-serif;">* </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="font-family: "verdana" , sans-serif;">TABLE1</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjNPxxUu0y_kDFqJZpU-037H17RUN3Brn0ApeFvkiruSQscC6cqDrfvEkB7JZk_Ajjvb9d0xOFeXo-JtfK2671WTQNd3mPUOcMDeiwVm8LweoBQA1sy0_XipsLgnlt7dOCwAf5FoOAgjw/s1600/Records.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="244" data-original-width="124" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjNPxxUu0y_kDFqJZpU-037H17RUN3Brn0ApeFvkiruSQscC6cqDrfvEkB7JZk_Ajjvb9d0xOFeXo-JtfK2671WTQNd3mPUOcMDeiwVm8LweoBQA1sy0_XipsLgnlt7dOCwAf5FoOAgjw/s200/Records.PNG" width="101" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">4.</span> Taking FULL Backup from Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">BACKUP DATABASE</span> [PrimaryDB1] <span style="color: blue;">TO DISK</span> = <span style="color: red;">N'\\PANDIAN\Personal\MirroringPath\PrimaryDB1.Bak'</span> </span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, </span><span style="color: #6aa84f;">STATS </span>= 10</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The shared path should be accessed by Mirror Instance</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">5.</span> </span><span style="font-family: "verdana" , sans-serif;">Taking LOG Backup from Principal Instance</span><span style="font-family: "verdana" , sans-serif;"> </span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">BACKUP LOG</span> [PrimaryDB1] <span style="color: blue;">TO DISK</span> = <span style="color: red;">N'\\PANDIAN\Personal\MirroringPath\PrimaryDB1.Trn' </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD</span>, <span style="color: #6aa84f;">STATS </span>= 10</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">6.</span> Restore the FULL Backup in Mirror Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[Master]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">RESTORE DATABASE</span> [PrimaryDB1] <span style="color: blue;">FROM DISK</span> = <span style="color: red;">N'C:\Personal\MirroringPath\PrimaryDB1.Bak' </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WITH FILE</span> = 1, </span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">MOVE </span><span style="color: red;">N'PrimaryDB1'</span> <span style="color: blue;">TO N'C:\Personal\DATA\PrimaryDB1.mdf'</span>, </span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">MOVE </span><span style="color: red;">N'PrimaryDB1_log'</span> <span style="color: blue;">TO N'C:\Personal\LOG\PrimaryDB1_log.ldf'</span>, </span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">NORECOVERY, NOUNLOAD</span>, <span style="color: #6aa84f;">STATS </span>= 5</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The restore should be in NORECOVERY state</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">7.</span> Restore LOG Backup in Mirror Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[Master]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">RESTORE LOG </span>[PrimaryDB1] <span style="color: blue;">FROM DISK</span> = <span style="color: red;">N'C:\Personal\MirroringPath\PrimaryDB1.Trn' </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WITH FILE = 1, NORECOVERY, NOUNLOAD</span>, <span style="color: #6aa84f;">STATS </span>= 10</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">The LOG backup restore also should be in NORECOVERY state</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">8.</span> Create ENDPOINT for the Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">CREATE ENDPOINT</span> Mirroring</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">AS TCP</span> (<span style="color: blue;">LISTENER_PORT</span>=<span style="background-color: yellow;">5022</span>)</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">FOR DATA_MIRRORING</span><span style="font-family: "verdana" , sans-serif;"> (</span><span style="color: blue; font-family: "verdana" , sans-serif;">ROLE=PARTNER,ENCRYPTION=REQUIRED ALGORITHM</span><span style="font-family: "verdana" , sans-serif;"> AES);</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">9.</span> Give CONNECT Permission to the ENDPOINT for the service account in </span><span style="font-family: "verdana" , sans-serif;">Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GRANT CONNECT ON ENDPOINT</span><span style="font-family: "verdana" , sans-serif;">::Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">TO </span><span style="font-family: "verdana" , sans-serif;">[PANDIAN\SQLServerBuddy]</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Make sure the SQL Server runs under this service account</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">10.</span> To make sure the ENDPOINT created</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span><span style="color: #ea9999;">serverproperty</span>(<span style="color: red;">'servername'</span>) [Servername], e.name [Endpoint], e.protocol_desc [Protocol], e.type_desc [Type], e.state_desc [State], e.role_desc [Role], e.encryption_algorithm_desc [ENCRYPTION ALGORITHM],ep.Port [Endpoint Port] </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.DATABASE_MIRRORING_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> e join </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.TCP_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> ep </span><span style="color: blue; font-family: "verdana" , sans-serif;">ON </span><span style="font-family: "verdana" , sans-serif;">(e.endpoint_id = ep.endpoint_id) </span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgROVEaTDnr6ivehIA9Hj1I_f-rDQ3xXJwRs3tzmUJAju-8Z0OJpxPDyA6m1JxovAOfm4r_Nblny9Hwiiw75h-9oYSqpYNjCUJf88UZk3sr5E9U30_UZ6hcmkIQt3P9WM5UiGCZ_wCEfTm1/s1600/Endpoint1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="47" data-original-width="941" height="28" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgROVEaTDnr6ivehIA9Hj1I_f-rDQ3xXJwRs3tzmUJAju-8Z0OJpxPDyA6m1JxovAOfm4r_Nblny9Hwiiw75h-9oYSqpYNjCUJf88UZk3sr5E9U30_UZ6hcmkIQt3P9WM5UiGCZ_wCEfTm1/s640/Endpoint1.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<br />
<span style="font-family: "verdana" , sans-serif;">See, The ENDPOINT not started yet</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">11.</span> Let me START the ENDPOINT</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER ENDPOINT</span><span style="font-family: "verdana" , sans-serif;"> Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">STATE</span><span style="font-family: "verdana" , sans-serif;">=</span><span style="color: blue; font-family: "verdana" , sans-serif;">STARTED</span><span style="font-family: "verdana" , sans-serif;">;</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">12.</span> </span><span style="font-family: "verdana" , sans-serif;">To make sure the ENDPOINT started</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span><span style="color: #ea9999;">serverproperty</span>(<span style="color: red;">'servername'</span>) [Servername], e.name [Endpoint], e.protocol_desc [Protocol], e.type_desc [Type], e.state_desc [State], e.role_desc [Role], e.encryption_algorithm_desc [ENCRYPTION ALGORITHM],ep.Port [Endpoint Port] </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.DATABASE_MIRRORING_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> e join </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.TCP_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> ep </span><span style="color: blue; font-family: "verdana" , sans-serif;">ON </span><span style="font-family: "verdana" , sans-serif;">(e.endpoint_id = ep.endpoint_id)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifByCiAUW5gkB2vvEYDnorCKqSZ56pQbRBELdB1z6KSuWm2TrhzOMKyPGj9-aGIYD0lHMQK0Uv9rNU1Ac2_UltjevyponwpE4qKZu5JquaK_Zolo8t5J7q_gG6b6Z6djgEFcHaLRB01p3t/s1600/Endpoint1_1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="48" data-original-width="938" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifByCiAUW5gkB2vvEYDnorCKqSZ56pQbRBELdB1z6KSuWm2TrhzOMKyPGj9-aGIYD0lHMQK0Uv9rNU1Ac2_UltjevyponwpE4qKZu5JquaK_Zolo8t5J7q_gG6b6Z6djgEFcHaLRB01p3t/s640/Endpoint1_1.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">See, The ENDPOINT is started!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">13.</span> </span><span style="font-family: "verdana" , sans-serif;">Create ENDPOINT for the Mirror Instance</span><br />
<div>
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">CREATE ENDPOINT</span> Mirroring</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">AS TCP</span> (<span style="color: blue;">LISTENER_PORT</span>=<span style="background-color: yellow;">5023</span>) </span><span style="color: blue; font-family: "verdana" , sans-serif;">FOR DATA_MIRRORING</span><span style="font-family: "verdana" , sans-serif;"> (</span><span style="color: blue; font-family: "verdana" , sans-serif;">ROLE=PARTNER,ENCRYPTION=REQUIRED ALGORITHM</span><span style="font-family: "verdana" , sans-serif;"> AES);</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">14.</span> Give CONNECT Permission to the ENDPOINT for the service account in </span><span style="font-family: "verdana" , sans-serif;">Mirror Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GRANT CONNECT ON ENDPOINT</span><span style="font-family: "verdana" , sans-serif;">::Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">TO </span><span style="font-family: "verdana" , sans-serif;">[PANDIAN\SQLServerBuddy]</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Make sure the SQL Server runs under this service account</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">15.</span> </span><span style="font-family: "verdana" , sans-serif;">Let me START the ENDPOINT</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER ENDPOINT</span><span style="font-family: "verdana" , sans-serif;"> Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">STATE</span><span style="font-family: "verdana" , sans-serif;">=</span><span style="color: blue; font-family: "verdana" , sans-serif;">STARTED</span><span style="font-family: "verdana" , sans-serif;">;</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">16.</span> To make sure the ENDPOINT created and started</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span><span style="color: #ea9999;">serverproperty</span>(<span style="color: red;">'servername'</span>) [Servername], e.name [Endpoint], e.protocol_desc [Protocol], e.type_desc [Type], e.state_desc [State], e.role_desc [Role], e.encryption_algorithm_desc [ENCRYPTION ALGORITHM],ep.Port [Endpoint Port] </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.DATABASE_MIRRORING_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> e join </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.TCP_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> ep </span><span style="color: blue; font-family: "verdana" , sans-serif;">ON </span><span style="font-family: "verdana" , sans-serif;">(e.endpoint_id = ep.endpoint_id)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj99OEPGjEYCjMtgjva5q21Ifhh11RKotkQzK3wzUeZyRHMx9Y3z6u1L5CstRZPAVNRP-hI5N6AXMgKoZq8GgfreVXaujDYL79DjHPdfrPYet9XkE-xWbG6FmV-0NNbkhY8fIcoph3CK1Km/s1600/Endpoint2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="46" data-original-width="947" height="30" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj99OEPGjEYCjMtgjva5q21Ifhh11RKotkQzK3wzUeZyRHMx9Y3z6u1L5CstRZPAVNRP-hI5N6AXMgKoZq8GgfreVXaujDYL79DjHPdfrPYet9XkE-xWbG6FmV-0NNbkhY8fIcoph3CK1Km/s640/Endpoint2.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">17.</span> </span><span style="font-family: "verdana" , sans-serif;">Create ENDPOINT for the Witness Instance</span><br />
<div>
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2016</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">CREATE ENDPOINT</span> Mirroring</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">AS TCP</span> (<span style="color: blue;">LISTENER_PORT</span>=<span style="background-color: yellow;">5024</span>) </span><span style="color: blue; font-family: "verdana" , sans-serif;">FOR DATA_MIRRORING</span><span style="font-family: "verdana" , sans-serif;"> (</span><span style="color: blue; font-family: "verdana" , sans-serif;">ROLE=WITNESS,ENCRYPTION=REQUIRED ALGORITHM</span><span style="font-family: "verdana" , sans-serif;"> AES);</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">18.</span> </span><span style="font-family: "verdana" , sans-serif;">Give CONNECT Permission to the ENDPOINT for the service account in Witness</span><span style="font-family: "verdana" , sans-serif;"> Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2016</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GRANT CONNECT ON ENDPOINT</span><span style="font-family: "verdana" , sans-serif;">::Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">TO </span><span style="font-family: "verdana" , sans-serif;">[PANDIAN\SQLServerBuddy]</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Make sure the SQL Server runs under this service account</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">19.</span> </span><span style="font-family: "verdana" , sans-serif;">Let me START the ENDPOINT</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2016</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER ENDPOINT</span><span style="font-family: "verdana" , sans-serif;"> Mirroring </span><span style="color: blue; font-family: "verdana" , sans-serif;">STATE</span><span style="font-family: "verdana" , sans-serif;">=</span><span style="color: blue; font-family: "verdana" , sans-serif;">STARTED</span><span style="font-family: "verdana" , sans-serif;">;</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">20.</span> To make sure the ENDPOINT created and started</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2016</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span><span style="color: #ea9999;">serverproperty</span>(<span style="color: red;">'servername'</span>) [Servername], e.name [Endpoint], e.protocol_desc [Protocol], e.type_desc [Type], e.state_desc [State], e.role_desc [Role], e.encryption_algorithm_desc [ENCRYPTION ALGORITHM],ep.Port [Endpoint Port] </span><span style="color: blue; font-family: "verdana" , sans-serif;">FROM </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.DATABASE_MIRRORING_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> e join </span><span style="color: #6aa84f; font-family: "verdana" , sans-serif;">SYS.TCP_ENDPOINTS</span><span style="font-family: "verdana" , sans-serif;"> ep </span><span style="color: blue; font-family: "verdana" , sans-serif;">ON </span><span style="font-family: "verdana" , sans-serif;">(e.endpoint_id = ep.endpoint_id)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkJxQo9kfDBpweBzfHAWHNGkR_M_JglfsTn0EzUmKN1y8P62wlkgyYAOVaHYgOZ8GY6TARGAFeJbgaQbs5hyphenhyphenwt0fmoNqxWlyt5f0ATPBS6tzqmPaG6UM3Cf_czq-Tg21PNIs5gzK168Rcg/s1600/Endpoint3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="46" data-original-width="925" height="30" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkJxQo9kfDBpweBzfHAWHNGkR_M_JglfsTn0EzUmKN1y8P62wlkgyYAOVaHYgOZ8GY6TARGAFeJbgaQbs5hyphenhyphenwt0fmoNqxWlyt5f0ATPBS6tzqmPaG6UM3Cf_czq-Tg21PNIs5gzK168Rcg/s640/Endpoint3.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">21.</span> To make Principal Instance as a Partner of Mirror Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012_1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER DATABASE</span><span style="font-family: "verdana" , sans-serif;"> [PrimaryDB1] </span><span style="color: blue; font-family: "verdana" , sans-serif;">SET PARTNER</span><span style="font-family: "verdana" , sans-serif;"> =</span><span style="color: red; font-family: "verdana" , sans-serif;">'TCP://PANDIAN:5022'</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012_1...</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012_1...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">22.</span> To make Mirror Instance as a Partner of Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER DATABASE</span><span style="font-family: "verdana" , sans-serif;"> [PrimaryDB1] </span><span style="color: blue; font-family: "verdana" , sans-serif;">SET PARTNER</span><span style="font-family: "verdana" , sans-serif;"> =</span><span style="color: red; font-family: "verdana" , sans-serif;">'TCP://PANDIAN:5023'</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">23.</span> To make Witness Instance as a Witness of Principal Instance</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER DATABASE</span><span style="font-family: "verdana" , sans-serif;"> [PrimaryDB1] </span><span style="color: blue; font-family: "verdana" , sans-serif;">SET WITNESS</span><span style="font-family: "verdana" , sans-serif;"> =</span><span style="color: red; font-family: "verdana" , sans-serif;">'TCP://PANDIAN:5024'</span><br />
<div>
<br /></div>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<div>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;"><br /></span></div>
<span style="font-family: "verdana" , sans-serif;">It's done.....</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">24.</span> Let me check the Principal Database and Is in sync</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDW5e41XwguFvDu3bGTfMIRty7c8QgtywX5OeEXDY9GGXMmvo2veY6Ny6gfnV7vJGBwHSS8Xyd4qoQefyIYJr3cW35mSXdXfQb4wTJnoED2cMysEKHNhFdNOm5Vl6n8i-LB_vCNWUX8L0q/s1600/Principal.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="121" data-original-width="352" height="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDW5e41XwguFvDu3bGTfMIRty7c8QgtywX5OeEXDY9GGXMmvo2veY6Ny6gfnV7vJGBwHSS8Xyd4qoQefyIYJr3cW35mSXdXfQb4wTJnoED2cMysEKHNhFdNOm5Vl6n8i-LB_vCNWUX8L0q/s320/Principal.png" width="320" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">25.</span> </span><span style="font-family: "verdana" , sans-serif;">Let me check the Mirror Database and Is in sync</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHAgBIPFQ9PjEbOAQ1BPyIMA-1m9WQ8K9eI4cwMDhT49W8JeNXgabj1J3_YJTNRd_iQuJk0z84msIuoqp3UOl5MRG6d6vSMZbHu21XDxYQlNi8bBv37H35CSZ2O8UsbyeWXYMIt2nllEJJ/s1600/Mirror.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="111" data-original-width="398" height="89" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHAgBIPFQ9PjEbOAQ1BPyIMA-1m9WQ8K9eI4cwMDhT49W8JeNXgabj1J3_YJTNRd_iQuJk0z84msIuoqp3UOl5MRG6d6vSMZbHu21XDxYQlNi8bBv37H35CSZ2O8UsbyeWXYMIt2nllEJJ/s320/Mirror.png" width="320" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">So, Both the Databases - Principal and Mirror are in Sync now! Everything will be propagated from the Principal Database to Mirror databases. </span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">26.</span> </span><span style="font-family: "verdana" , sans-serif;">Let me check the Database Mirroring Monitor and see how it goes..</span><br />
<span style="font-family: "verdana" , sans-serif;">Expand Principal "Databases" --> Right Click on the PrimaryDB1 --> Click Tasks --> Click "Launch Database Mirroring Monitor"</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7V-9Ln6G0KbKFCAFOkYR9_TMJ206qw8LSryk-mS2H1LOXhfGarl-YJ30TqlJsVjNwwtE8S1rSDShgZPFngvtSIim-RuT4JZqQq7GXAuiP9hZM7TmVyycl40g_iN3VjzVqb9kagt25rzmA/s1600/Monitor.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="647" data-original-width="1395" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7V-9Ln6G0KbKFCAFOkYR9_TMJ206qw8LSryk-mS2H1LOXhfGarl-YJ30TqlJsVjNwwtE8S1rSDShgZPFngvtSIim-RuT4JZqQq7GXAuiP9hZM7TmVyycl40g_iN3VjzVqb9kagt25rzmA/s640/Monitor.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Everything looks Good!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">See, </span><br />
<span style="font-family: "verdana" , sans-serif;">PANDIAN\SQL2012 acts as a Principal</span><br />
<span style="font-family: "verdana" , sans-serif;">PANDIAN\SQL2012_1 acts as a Mirror</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">and, Witness is watching from "</span><span style="font-family: "verdana" , sans-serif;">TCP://PANDIAN:5024" which means "PANDIAN\SWL2016"</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">What will happen If anything goes wrong with Principal "PANDIAN\SQL2012" ? Or We manually failover it ?</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">In that case, Mirror instance should become as Principal and Current Principal will be act as a Mirror. Right ?</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let me Failover the Principal manually now and see</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">27.</span> Manually failover the Principal</span><br />
<span style="background-color: #cccccc; font-family: "verdana" , sans-serif;">:CONNECT PANDIAN\SQL2012</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[Master]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">ALTER DATABASE</span><span style="font-family: "verdana" , sans-serif;"> PrimaryDB1 </span><span style="color: blue; font-family: "verdana" , sans-serif;">SET PARTNER FAILOVER</span><br />
<div>
<br /></div>
<div>
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Connecting to PANDIAN\SQL2012...</span><br />
<span style="color: #cccccc; font-family: "verdana" , sans-serif;">Disconnecting connection from PANDIAN\SQL2012...</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f4cccc;">28.</span> </span><span style="font-family: "verdana" , sans-serif;">Let me check the Database Mirroring Monitor now</span></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjby8PtUw5VjunpAb7nTqtH8irg1dbjH7CBSk7YFOZW52datUuKtPO0kDnCih7yfgPq9T5LTqIn0gHoUF3l5XdfJLPawh-8J9zqHh4gZIB8apxNTz8o0A1EOJ7tzAxfBcLb8JydPAYtDclx/s1600/Failover.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="623" data-original-width="1481" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjby8PtUw5VjunpAb7nTqtH8irg1dbjH7CBSk7YFOZW52datUuKtPO0kDnCih7yfgPq9T5LTqIn0gHoUF3l5XdfJLPawh-8J9zqHh4gZIB8apxNTz8o0A1EOJ7tzAxfBcLb8JydPAYtDclx/s640/Failover.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">As per MSDN - On the former principal, clients are disconnected from the database and in-flight transactions are rolled back</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">See,</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">PANDIAN\SQL2012_1 acts as a Principal</span><br />
<span style="font-family: "verdana" , sans-serif;">PANDIAN\SQL2012 becomes as Mirror</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<div style="text-align: right;">
<span style="color: blue; font-family: Verdana, sans-serif;">Continues...</span></div>
</div>
</div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-59821276305884217762020-07-22T20:35:00.000+05:302020-07-22T20:35:19.552+05:30The number of columns for each row in a table value constructor must be the same<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif;">What is table value constructor?</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">
<span style="font-family: "verdana" , sans-serif;">A set of row value expressions to be constructed into a table.</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;">
<span style="font-family: "verdana" , sans-serif;">It can be specified/Used in the following forms</span></span><br />
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif;">VALUE Clause in INSERT</span></li>
<li><span style="font-family: "verdana" , sans-serif;">VALUE Clause in SELECT..FROM</span></li>
<li><span style="font-family: "verdana" , sans-serif;">VALUE Clause in MERGE..USING</span></li>
<li><span style="font-family: "verdana" , sans-serif;">VALUE Clause in JOIN</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">The number of values specified in each list must be the same and the values must be in the same order as the columns in the table.</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Usually, We need to use UNION or UNION ALL for Non-Table result set. Right ?</span></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjviKY2RjCX7pVc3DPB0jSIotw8J_OzIUV5XOoW70Fm56NByaoMBKNPezCQreBTUkTjtSa3sxcu7qKY4EIcELhRihjDHUnCtBbnE3WpE1QotxoB3YZxmifRV00w3PpTh1i0OzSvhCSbR6MV/s1600/One.PNG" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="249" data-original-width="335" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjviKY2RjCX7pVc3DPB0jSIotw8J_OzIUV5XOoW70Fm56NByaoMBKNPezCQreBTUkTjtSa3sxcu7qKY4EIcELhRihjDHUnCtBbnE3WpE1QotxoB3YZxmifRV00w3PpTh1i0OzSvhCSbR6MV/s200/One.PNG" width="200" /></span></a><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">But, The same thing can be achieved by Table value constructor as below </span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh9mOwgb-nkCqb0xEbWAk6xzHCMaLAXRc1sg-oM5G2xr201rje2MAcxqbipig94EEIhf7EuOB9QKOsTWeMQeP4tFBK2kYzR0bG5f8zMQG9bTUUGfLyCWQoSI-cQ263vx08_XS_f6yTEsLs/s1600/Two.PNG" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="196" data-original-width="900" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh9mOwgb-nkCqb0xEbWAk6xzHCMaLAXRc1sg-oM5G2xr201rje2MAcxqbipig94EEIhf7EuOB9QKOsTWeMQeP4tFBK2kYzR0bG5f8zMQG9bTUUGfLyCWQoSI-cQ263vx08_XS_f6yTEsLs/s400/Two.PNG" width="400" /></span></a><br />
<br />
<span style="color: #171717; font-family: "verdana" , sans-serif;">And, The number of values specified in each list should be matching!! </span><br />
<span style="color: #171717; font-family: "verdana" , sans-serif;"><br /></span>
<span style="color: #171717; font-family: "verdana" , sans-serif;">If not - We can see the below Error</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgDkoE6I8FGs6uCI3-mIaqDGUzODuAl3jClr7M8y3w2MTQmFPUH8DZ8FAfaCW7UIr0FyFgrSslDkCV-bxXrJi_w9_jT_6GTP_R3Tc4-gfpv_P0UuSBsOSzjntbGCtZN6eZHPuB4DCL1PI8/s1600/Three.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="195" data-original-width="1026" height="75" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgDkoE6I8FGs6uCI3-mIaqDGUzODuAl3jClr7M8y3w2MTQmFPUH8DZ8FAfaCW7UIr0FyFgrSslDkCV-bxXrJi_w9_jT_6GTP_R3Tc4-gfpv_P0UuSBsOSzjntbGCtZN6eZHPuB4DCL1PI8/s400/Three.png" width="400" /></span></a></div>
<span style="color: #171717; font-family: "verdana" , sans-serif;"><br /></span>
<span style="background-color: white; color: #171717;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: red;"><br /></span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: yellow; color: red;">Msg 10709, Level 16, State 1, Line 1</span></span><br />
<span style="background-color: yellow;"><span style="color: red; font-family: verdana, sans-serif;">The number of columns for each row in a table value constructor must be the same</span><span style="font-family: verdana, sans-serif;">.</span></span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com1tag:blogger.com,1999:blog-6281873472989374623.post-65433661710235256842020-07-16T22:06:00.001+05:302020-07-16T22:06:50.012+05:30How does Azure work ?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<ul style="text-align: left;">
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">It’s
a Private and Public platform</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">It
uses a Technology called as <a href="https://docs.microsoft.com/en-us/windows-server/virtualization/virtualization#:~:text=Table%20of%20contents-,Virtualization%20documentation,power%20workloads%20for%20your%20customers." target="_blank">Virtualization</a> – <a href="https://docs.microsoft.com/en-us/windows-server/virtualization/virtualization#:~:text=Table%20of%20contents-,Virtualization%20documentation,power%20workloads%20for%20your%20customers." target="_blank">Virtualization</a> separates the tight
coupling a computer’s CPU and its operating system using an abstraction layer called
hypervisor</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">The
hypervisor emulates all the functions of a real computer and its CPU in a
Virtual machine. It can run multiple virtual machine at the same time and each
virtual machine can run any compatible operating system such as Windows, Linux</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">Azure
takes this virtualization technology and repeats it on a massive scale in Microsoft
data centers throughout the world. Each data center has many racks filled with
servers</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">Each
server includes a hypervisor to run multiple virtual machines</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">A
network switch provides connectivity to the servers. One server in each rack runs
a special piece of software called a fabric controller. Each fabric controller is
connected to another special piece of software known as the <a href="https://docs.microsoft.com/en-us/system-center/orchestrator/learn-about-orchestrator?view=sc-orch-2019" target="_blank">orchestrator</a>. The <a href="https://docs.microsoft.com/en-us/system-center/orchestrator/learn-about-orchestrator?view=sc-orch-2019" target="_blank">orchestrator</a> is responsible for managing everything
that happens in Azure including responding to users’ requests</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">Users
make requests using the <a href="https://docs.microsoft.com/en-us/system-center/orchestrator/learn-about-orchestrator?view=sc-orch-2019" target="_blank">orchestrator</a>’s web API. The web API can be called by many
tools including the user interface of the Azure portal</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">When
a user makes a request to create a virtual machine, the <a href="https://docs.microsoft.com/en-us/system-center/orchestrator/learn-about-orchestrator?view=sc-orch-2019" target="_blank">orchestrator</a> packages everything
that’s needed, picks the best server racks, then sends the package and request to
the fabric controller. Once the fabric controller has created the virtual
machine, the user can connect to it</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">Azure
make it easy for developers and IT professionals to be agile when they build, deploy
and manage their applications and services. But this agility can have unintended
consequences if unauthorized resources are created Or If resource are left running
after they’re no longer needed</span></span></li>
<li><span style="line-height: 107%;"><span style="font-family: "verdana" , sans-serif;">The
solution to this problem is to use Azure’s resource access management tools as
part of your organization’s governance program</span></span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" data-original-height="423" data-original-width="670" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHdNGU885wkKtq71L75QD7LllkPPqtk6hbrxU-yNwKcBafaVwDPS37T3LYgFdjMyrAXQQUdLmi8mcaXJ5B7KXeCbtPmJanm0-XALTVOXT0B-CRCX1Bz6XofDAzon_rSM5Uiees3iG0VOJX/s400/How+Azure+works.PNG" width="400" /></div>
<br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>Source</b>: <a href="https://azure.microsoft.com/en-in/resources/videos/azure-adoption-guide-how-does-azure-work/">https://azure.microsoft.com/en-in/resources/videos/azure-adoption-guide-how-does-azure-work/</a></span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-88600877143262194322020-07-12T20:30:00.000+05:302020-07-12T20:45:16.815+05:30Dynamic query with SP_EXECUTESQL vs. EXEC<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><b>sp_executesql</b> is recommended over using the <b>EXEC </b>statement to execute a string of query because of the below reasons</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><b style="background-color: #f3f3f3;">1. Self-contained batches</b></span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Statements in <b>sp_executesql </b>or <b>EXEC </b>are not compiled to an execution plan until its executed (Not parsed/checked for </span><span style="font-family: "verdana" , sans-serif;">errors)</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@hai <span style="color: blue;">VARCHAR</span>(5)</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@hai = <span style="color: red;">'HAI'</span></span></div>
<div style="text-align: left;">
<span style="color: blue; font-family: "verdana" , sans-serif;">EXEC </span><span style="font-family: "verdana" , sans-serif;"><span style="color: #990000;">sp_executesql</span> </span><span style="color: red; font-family: "verdana" , sans-serif;">N'PRINT @hai'</span></div>
<div style="text-align: left;">
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span></div>
<div style="text-align: left;">
<span style="color: #38761d; font-family: "verdana" , sans-serif;">--Or</span></div>
<div style="text-align: left;">
<span style="color: blue; font-family: "verdana" , sans-serif;">DECLARE </span><span style="font-family: "verdana" , sans-serif;">@hai </span><span style="color: blue; font-family: "verdana" , sans-serif;">VARCHAR</span><span style="font-family: "verdana" , sans-serif;">(5)</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@hai = <span style="color: red;">'HAI'</span></span></div>
<div style="text-align: left;">
<span style="color: blue; font-family: "verdana" , sans-serif;">EXEC </span><span style="font-family: "verdana" , sans-serif;">(</span><span style="color: red; font-family: "verdana" , sans-serif;">'PRINT @hai'</span><span style="font-family: "verdana" , sans-serif;">)</span></div>
<div style="text-align: left;">
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;">The above both block fails - The variable @hai become out of scope/boundary</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="color: red; font-family: "verdana" , sans-serif;">Msg 137, Level 15, State 2, Line 1</span></div>
<div style="text-align: left;">
<span style="color: red; font-family: "verdana" , sans-serif;">Must declare the scalar variable "@hai".</span></div>
<br />
<span style="font-family: "verdana" , sans-serif;"><b style="background-color: #f3f3f3;">2. Substituting Parameter values</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>sp_executesql </b>supports the substitution of parameter values for any parameters specified in the Transact-SQL string, but </span><span style="font-family: "verdana" , sans-serif;">the <b>EXEC </b>statement does not.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The SQL Server query optimizer will probably match the Transact-SQL statements from </span><span style="font-family: "verdana" , sans-serif;"><b>sp_executesql </b>with execution plans from the previously executed statements, saving the overhead of compiling a new </span><span style="font-family: "verdana" , sans-serif;">execution plan</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">With the <b>EXEC </b>statement, all parameter values must be converted to character or Unicode and made a part of the </span><span style="font-family: "verdana" , sans-serif;">Transact-SQL string</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[AdventureWorks2012]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@Query <span style="color: blue;">VARCHAR</span>(100), @Param1 <span style="color: blue;">INT</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@Param1 = 12742</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@Query = <span style="color: red;">'SELECT * FROM Person.[Address] WITH(NOLOCK) WHERE AddressID ='</span> + <span style="color: blue;">CAST</span>(@Param1 <span style="color: blue;">AS VARCHAR</span>)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">EXEC</span>(@Query)</span><br />
<div>
<br /></div>
<div>
<div>
<span style="font-family: "verdana" , sans-serif;">A completely new Transact-SQL string must be built for each execution, even when the </span><span style="font-family: "verdana" , sans-serif;">only differences are in the values supplied for the parameters. This generates extra overhead in the following several ways:</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- The ability of the SQL Server query optimizer to match the new Transact-SQL string with an existing execution plan is </span><span style="font-family: "verdana" , sans-serif;">hampered by the constantly changing parameter values in the text of the string, especially in complex Transact-SQL</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">statements.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- The entire string must be rebuilt for each execution.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- Parameter values (other than character or Unicode values) must be cast to a character or Unicode format for each </span><span style="font-family: "verdana" , sans-serif;">execution</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>sp_executesql </b>supports the setting of parameter values separately from the Transact-SQL string</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">USE </span>[AdventureWorks2012]</span></div>
<div>
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@Query <span style="color: blue;">NVARCHAR</span>(100), @LParam1 <span style="color: blue;">INT</span></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@LParam1 = 12742</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SET </span>@Query = <span style="color: red;">N'SELECT * FROM [AdventureWorks2012].Person.[Address] WITH(NOLOCK) WHERE AddressID =@Param1'</span></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">EXEC </span><span style="color: #cc0000;">sp_executesql </span>@Query,<span style="color: red;">N'@Param1 Int'</span>, @Param1 = @LParam1</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- Because the actual text of the Transact-SQL statement does not change between executions, the query optimizer should </span><span style="font-family: "verdana" , sans-serif;">match the Transact-SQL statement in the second execution with the execution plan generated for the first execution.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- Therefore, SQL Server does not have to compile the second statement.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- The Transact-SQL string is built only once.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">- The integer parameter is specified in its native format. Conversion to Unicode is not required here.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Note: Object names in the statement string must be fully qualified (i.e: Database.Schema.Objectname) in order for SQL Server to reuse the execution plan.</span></div>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="background-color: #f3f3f3; font-family: "verdana" , sans-serif;"><b>3. Re-using execution plan</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;">Using <b>sp_executesql </b>can help reduce the overhead while still allowing SQL Server to reuse execution plans.</span></div>
<span style="font-family: "verdana" , sans-serif;">
</span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<span style="font-family: "verdana" , sans-serif;">
</span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>sp_executesql </b>can be used instead of stored procedures when executing a Transact-SQL statement a number of times, when the only variation is in the parameter values supplied to the Transact-SQL statement. Because the Transact-SQL statements themselves remain constant and only the parameter values change, the SQL Server query optimizer is likely to reuse the execution plan it generates for the first execution!</span></div>
<span style="font-family: "verdana" , sans-serif;">
</span>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="color: #38761d;"><br /></span></span></div>
<span style="font-family: "verdana" , sans-serif;">
<div>
<span style="color: #38761d;">/*EXEC*/</span></div>
<div>
<div>
<span style="color: blue;">USE </span>[AdventureWorks2012]</div>
<div>
<span style="color: blue;">GO</span></div>
<div>
<span style="color: blue;">DECLARE </span>@Param1 <span style="color: blue;">VARCHAR</span>(10)</div>
<div>
<span style="color: blue;">SET </span>@Param1 = <span style="color: red;">'Gail'</span></div>
<div>
<span style="color: blue;">EXEC </span>(<span style="color: red;">'SELECT p.FirstName, pp.PhoneNumber FROM Person.Person p WITH(NOLOCK) </span></div>
<div>
<span style="color: red;">JOIN Person.PersonPhone pp WITH(NOLOCK)</span></div>
<div>
<span style="color: red;">ON (p.BusinessEntityID = pp.BusinessEntityID)</span></div>
<div>
<span style="color: red;">WHERE p.LastName = '''</span>+ @Param1 +<span style="color: red;"> ''''</span>)</div>
<div>
<span style="color: blue;">GO</span></div>
</div>
<div>
<br /></div>
<div>
The above statement executed 3 Times with various values(Goel, Gigi, Gail)</div>
<div>
<br /></div>
<div>
Check the execution plan generated (3 Separate Execution plans generated for every run based on the parameter value changes)</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpam3GuwSze9_XcN45FgN1CNGXbSA3mEGJG8sLJZYZ5izESZs2IQoI8a24qmIQL7psTPfiRusnr0673Z6EFrRxOhTmFjqyNFhtP9xyEBoi8PsZGBp1QCAZymsfOcrscSDluTGGEvA4rHTA/s1600/Image1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="91" data-original-width="1084" height="51" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpam3GuwSze9_XcN45FgN1CNGXbSA3mEGJG8sLJZYZ5izESZs2IQoI8a24qmIQL7psTPfiRusnr0673Z6EFrRxOhTmFjqyNFhtP9xyEBoi8PsZGBp1QCAZymsfOcrscSDluTGGEvA4rHTA/s640/Image1.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="color: #38761d;"><br /></span>
<span style="color: #38761d;">/*SP_EXECUTESQL*/</span><br />
<div>
<span style="color: blue;">USE </span>[AdventureWorks2012]</div>
<span style="color: blue;">GO</span><span style="color: #38761d;"></span></div>
<div>
<div>
<span style="color: blue;">DECLARE </span>@Sql <span style="color: blue;">nvarchar</span>(500)</div>
<div>
<span style="color: blue;">SET </span>@Sql = <span style="color: red;">N'SELECT p.FirstName, pp.PhoneNumber FROM Person.Person p WITH(NOLOCK) </span></div>
<div>
<span style="color: red;">JOIN Person.PersonPhone pp WITH(NOLOCK)</span></div>
<div>
<span style="color: red;">ON (p.BusinessEntityID = pp.BusinessEntityID)</span></div>
<div>
<span style="color: red;">WHERE p.LastName = @LastName'</span>;</div>
<div>
<br /></div>
<div>
<span style="color: blue;">DECLARE </span>@ParamDefinition <span style="color: blue;">nvarchar</span>(25) = <span style="color: red;">N'@LastName Varchar(10)'</span></div>
<div>
<span style="color: blue;">DECLARE </span>@lLastName <span style="color: blue;">Varchar</span>(10)</div>
<div>
<span style="color: blue;">SET </span>@lLastName=<span style="color: red;">'Gail'</span></div>
<div>
<span style="color: blue;">EXEC </span><span style="color: #990000;">sp_executesql </span>@Sql, @ParamDefinition,</div>
<div>
@LastName=@lLastName;</div>
<div>
<span style="color: blue;">GO</span></div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1s1UgWvTJ9M1Tb5rxR4dXDbOU068eCggvkVBYwo8wgP7CPurTyqMy_NfOjfHcbLmO3szXo6zZ9JKUAg8WokOqWpmB9yw97zZLCw1DFmtPM9VVPAjF9thBlF31kmRIZGciv6cYDUp8ctPn/s1600/Image2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="47" data-original-width="1166" height="24" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1s1UgWvTJ9M1Tb5rxR4dXDbOU068eCggvkVBYwo8wgP7CPurTyqMy_NfOjfHcbLmO3szXo6zZ9JKUAg8WokOqWpmB9yw97zZLCw1DFmtPM9VVPAjF9thBlF31kmRIZGciv6cYDUp8ctPn/s640/Image2.PNG" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Check the execution plan generated as above(Only 1 execution plan generated and Re-used for all the subsequent runs irrespective of it's parameter value - See - Use Count column as <span style="background-color: yellow;">3</span>)</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #f3f3f3;"><b>Here is the script used for the above screenshots</b></span>:</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WITH </span>XMLNAMESPACES </span><br />
<span style="font-family: "verdana" , sans-serif;">(<span style="color: blue;">DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'</span>)</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">SELECT </span><br />
<span style="font-family: "verdana" , sans-serif;">cp.usecounts [Use Count],</span><br />
<span style="font-family: "verdana" , sans-serif;">cp.objtype,</span><br />
<span style="font-family: "verdana" , sans-serif;">c.value(<span style="color: red;">'(QueryPlan/@CompileTime)[1]', 'int'</span>) [CompileTime(ms)],</span><br />
<span style="font-family: "verdana" , sans-serif;">c.value(<span style="color: red;">'(QueryPlan/@CompileCPU)[1]', 'int'</span>) [CompileCPU(ms)],</span><br />
<span style="font-family: "verdana" , sans-serif;">c.value(<span style="color: red;">'(QueryPlan/@CompileMemory)[1]', 'int'</span>) [CompileMemory(KB)],</span><br />
<span style="font-family: "verdana" , sans-serif;">LEFT(x.[text],50) + <span style="color: red;">'...'</span> + RIGHT(x.[text],10) [Plan Text]</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">FROM </span><span style="color: #38761d;">sys.dm_exec_cached_plans</span> <span style="color: blue;">AS </span>cp CROSS APPLY <span style="color: #38761d;">sys.dm_exec_sql_text</span>(cp.plan_handle) <span style="color: blue;">AS </span>X </span><span style="font-family: "verdana" , sans-serif;">CROSS APPLY </span><span style="color: #38761d; font-family: "verdana" , sans-serif;">sys.dm_exec_query_plan</span><span style="font-family: "verdana" , sans-serif;">(cp.plan_handle) </span><span style="color: blue; font-family: "verdana" , sans-serif;">AS </span><span style="font-family: "verdana" , sans-serif;">qp</span><br />
<span style="font-family: "verdana" , sans-serif;">CROSS APPLY qp.query_plan.nodes(<span style="color: red;">'ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple'</span>) <span style="color: blue;">AS </span>n(c)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">WHERE </span>x.[text] LIKE <span style="color: red;">'%SELECT p.FirstName%' </span></span><span style="font-family: "verdana" , sans-serif;">AND x.[text] NOT LIKE </span><span style="color: red; font-family: "verdana" , sans-serif;">'%sys.dm_exec_cached_plans%' </span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-43070055309933829962020-07-09T20:35:00.000+05:302020-07-09T20:36:37.692+05:30Converting to unequal length truncates on Left Or Right ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">When converting string into Binary, I mean converted from the below data type </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">CHAR</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">VARCHAR</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">NCHAR</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">NVARCHAR</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">TEXT</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">NTEXT</span></span><span style="font-family: "verdana" , sans-serif; font-size: 90%;"> to a <span style="color: blue;">BINARY</span> data type of "unequal length", SQL Server truncates the data on the </span><b style="font-family: verdana, sans-serif; font-size: 90%;">RIGHT</b><span style="font-family: "verdana" , sans-serif; font-size: 90%;">!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">Here is how...</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Declare </span>@Varchar <span style="color: blue;">Varchar</span>(6), @Binary <span style="color: blue;">Binary</span>(2)</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Set </span>@Varchar = 123456</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Set </span>@Binary = <span style="color: magenta;">Cast</span>(@Varchar <span style="color: blue;">as Binary</span>(2))</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Select </span>@Varchar [Actual], <span style="color: magenta;">Cast</span>(@Binary <span style="color: blue;">as Varchar</span>(6)) [Converted]</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 90%;">Go</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheIKldKYvlurhxbsxWAIfUjin3wDBttujk8gNdAO5M9jL0fa2fBkfYtWn2VgVjilVCzh-svCtTZCIN26IDcm2-_XpKXMYxAeW5aSS8LL7iT5bnpvCzMcd5UMUPY99wk6Wr_AFiSuTROHrP/s1600/Sring+to+Binary.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="45" data-original-width="202" height="44" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheIKldKYvlurhxbsxWAIfUjin3wDBttujk8gNdAO5M9jL0fa2fBkfYtWn2VgVjilVCzh-svCtTZCIN26IDcm2-_XpKXMYxAeW5aSS8LL7iT5bnpvCzMcd5UMUPY99wk6Wr_AFiSuTROHrP/s200/Sring+to+Binary.PNG" width="200" /></a></div>
<br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span><span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">When converting Numbers into Binary, </span><span style="font-family: "verdana" , sans-serif; font-size: 90%;">The data is truncated on the <b>LEFT </b>and Padding is done with hexadecimal "</span><span style="font-family: "verdana" , sans-serif; font-size: 90%;">zeros"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">Wondering how.... ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Declare </span>@Source <span style="color: blue;">INT</span>, @Target <span style="color: blue;">Binary</span>(2)</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Set </span>@Source = 123456</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Set </span>@Target = <span style="color: magenta;">Cast</span>(@Source <span style="color: blue;">as Binary</span>(2))</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Select </span>@Source [Actual], @Target, <span style="color: magenta;">Cast</span>(@Target <span style="color: blue;">as Int</span>) [Converted]</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><span style="color: blue;">Go</span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK7tm60vFiTieXmcdLQTvH6zp9WffagREQIbm_5hAhgj3M2-gf-WTgTIcBus_lb1fBzBCRPkQ7FTVCri5Hc0gdaImWnOQSIBeUiXvr4bwS9D21O4WdyBl92tGA-Loy2cJcFF66MPEgxSAP/s1600/Number+to+Binary.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="46" data-original-width="202" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK7tm60vFiTieXmcdLQTvH6zp9WffagREQIbm_5hAhgj3M2-gf-WTgTIcBus_lb1fBzBCRPkQ7FTVCri5Hc0gdaImWnOQSIBeUiXvr4bwS9D21O4WdyBl92tGA-Loy2cJcFF66MPEgxSAP/s200/Number+to+Binary.PNG" width="200" /></a></div>
<br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span><span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">Actually, The Number should have been converted into 0x1E240</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">But, </span><span style="font-family: "verdana" , sans-serif; font-size: 90%;">according to the unequal length of the target conversion, It truncates on LEFT and padding with "0" instead,</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">I mean "0x</span><b style="font-family: verdana, sans-serif; font-size: 90%;">1</b><span style="font-family: "verdana" , sans-serif; font-size: 90%;">E240" becomes "0x0E240". </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">So, When converting back to numbers from binary - It becomes 57920</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;"></span>
<span style="font-family: "verdana" , sans-serif; font-size: 90%;">So, Beware of conversion from or to Binary!!!</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-70103704087942599312020-07-04T18:18:00.000+05:302020-07-09T09:22:51.058+05:30SQL Server - SERVER / DATABASE Level Fixed Roles and Permissions<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRkVD_dFtmrUj6nwa93u6eC_J5521KgCih_byjV55nSPHjRws0kXLJONLb5_xz0cELAgVFcTHU3ZKep7_kiXwFyeB2p88O447DtTe7X552ZOq-YGxTweSoz9y4sZSELMDK-UTAeqHJ0LZ/s1600/Server+Level+Roles.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="614" data-original-width="987" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRkVD_dFtmrUj6nwa93u6eC_J5521KgCih_byjV55nSPHjRws0kXLJONLb5_xz0cELAgVFcTHU3ZKep7_kiXwFyeB2p88O447DtTe7X552ZOq-YGxTweSoz9y4sZSELMDK-UTAeqHJ0LZ/s640/Server+Level+Roles.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: x-small;"><b>Source</b>: <a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles?view=sql-server-ver15"><span style="color: blue;">https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles?view=sql-server-ver15</span></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZvkgmWfVnj_YNuuAjUNHazbzcS2r-YqtusiAGV3DybZ5svo7r0S-IEj5YsAJ_-hlA_0rfKfZuIzA33nlAsVzTQOnxSZ-5NBGvgAoWOll9nJ1el95SAU5h51zgRey_NQKM6M9F7e8U7PH/s1600/Database+Leven+Roles.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="797" data-original-width="952" height="534" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZvkgmWfVnj_YNuuAjUNHazbzcS2r-YqtusiAGV3DybZ5svo7r0S-IEj5YsAJ_-hlA_0rfKfZuIzA33nlAsVzTQOnxSZ-5NBGvgAoWOll9nJ1el95SAU5h51zgRey_NQKM6M9F7e8U7PH/s640/Database+Leven+Roles.PNG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: "verdana" , sans-serif; font-size: x-small;"><b>Source</b>: <a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15"><span style="color: blue;">https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15</span></a></span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-18535132638797345142020-07-04T13:37:00.001+05:302020-07-04T13:38:17.064+05:30Microsoft SQL Server 2017 and Azure SQL Database - Permissions Hierarchy<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Permissions hierarchy explained well for the below area</span><br />
<span style="font-size: 85%;"><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">SQL Server</span></span><br />
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Server Level Permissions</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Database Level Permissions</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Azure SQL</span><br />
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Database Level Permissions - Outside the Database</span></li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://aka.ms/sql-permissions-poster" style="font-family: verdana, sans-serif; font-size: 85%; text-align: left;" target="_blank"><b><span style="color: blue;">DOWNLOAD PDF</span></b></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Source: </span><a href="https://docs.microsoft.com/en-us/sql/relational-databases/security/permissions-database-engine?view=sql-server-ver15"><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">https://docs.microsoft.com/en-us/sql/relational-databases/security/permissions-database-engine?view=sql-server-ver15</span></a></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-39385811057086786312020-07-03T14:02:00.000+05:302020-07-03T14:02:45.272+05:30Performing consistency check on Secondary/redundant copy of the database is fair enough?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%; line-height: 107%;">It's
actually "NO"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Checking consistency on secondary/copy of the source
database does not imply that the source/primary database is free of corruption.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Since, Source and secondary are located in different I/O
subsystems involved. right? Which means - consistency checking has to be
performed in all environments to examine the actual corruption (I/O
Perspective).</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Because, None of the SQL Server redundancy technologies
propagate the data file pages and I/O subsystem corruptions. Instead - It
propagates the Transaction log records to the secondaries. So, there is NO
point of performing such a consistency check only in Primary or secondary.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br />
So, performing the consistency check on all the
databases in every environment is considered as mandatory!!!</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-90866851768347788522020-02-02T23:10:00.001+05:302020-02-02T23:10:47.487+05:30SELECT COUNT(*) - Always scans all the pages/rows ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">SELECT COUNT(*) always scans every rows (all pages/rows) in the table ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">No! - Not exactly! First, Ask the question - "<b>The table has any Index ?</b>"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">How many Index are there in that table ? Each column type/size (allocation) ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Why should I ask these questions ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Here is the scenario!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<u><span style="font-family: "verdana" , sans-serif; font-size: 85%;">A table "</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">SystemObjects"</span></u><span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u> created along with 2062 records</u>: </span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">SELECT [schema_id], CAST([object_id] AS BIGINT) [object_id] , CAST(name AS NVARCHAR(200)) [name] INTO SystemObjects </span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">FROM sys.system_objects</span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Table structure</u>:</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic9jpGK4VDLfTwtOHcrU-kdcR3HrT6NalkTwiO7lman1aIuBSE2JfqFIlCBN-L9_h0b0blZf4t5lZo2zSB5ZhjQ5VENFd5fHmCzhrmD8wOAA_yJePcPMmhvaUySw5_dRcdBb0vymg-LwKB/s1600/TableStructure.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="89" data-original-width="421" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic9jpGK4VDLfTwtOHcrU-kdcR3HrT6NalkTwiO7lman1aIuBSE2JfqFIlCBN-L9_h0b0blZf4t5lZo2zSB5ZhjQ5VENFd5fHmCzhrmD8wOAA_yJePcPMmhvaUySw5_dRcdBb0vymg-LwKB/s320/TableStructure.PNG" width="320" /></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<br />
<br />
<u style="font-family: verdana, sans-serif; font-size: 85%;"><br /></u>
<u style="font-family: verdana, sans-serif; font-size: 85%;"></u>
<u style="font-family: verdana, sans-serif; font-size: 85%;"></u>
<u style="font-family: verdana, sans-serif; font-size: 85%;"></u>
<u style="font-family: verdana, sans-serif; font-size: 85%;"><br /></u><br />
<u style="font-family: verdana, sans-serif; font-size: 85%;">Trying to get record count</u><span style="font-family: "verdana" , sans-serif; font-size: 85%;"> (with Actual Execution Plan)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">SELECT COUNT(1) FROM SystemObjects</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="624" height="51" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s400/TableScan.PNG" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">YES! - Now, we got <b>Table Scan</b> operation with 94%. Yeah - This is what always happen right ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Partially Yes and No!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Lets create a Non-Clustered Index</u>:</span><br />
<span style="background-color: #eeeeee; font-family: "verdana" , sans-serif; font-size: 85%;">CREATE NONCLUSTERED INDEX nci_obj_id ON SystemObjects([Object_id])</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Non-clustered Index has been created on Object_id column which is </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">8 Byte</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Trying to get record count</u> (with Actual Execution Plan)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">SELECT COUNT(1) FROM SystemObjects</span></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-b5uk6_xA4YJIONZQGQm6qT8pi6GkWWmwWgrAIV0GSJrcxvI0cCCwbDnMN1AaFX8VxX16aBg77sT5ijYIi9OgZIMorciIi_bqZKIFC2uf-JcLBM5LxBcmmGvAsqUglqxbBmiINI5BIY-/s1600/NonclusteredIndex1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-b5uk6_xA4YJIONZQGQm6qT8pi6GkWWmwWgrAIV0GSJrcxvI0cCCwbDnMN1AaFX8VxX16aBg77sT5ijYIi9OgZIMorciIi_bqZKIFC2uf-JcLBM5LxBcmmGvAsqUglqxbBmiINI5BIY-/s1600/NonclusteredIndex1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="84" data-original-width="739" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV-b5uk6_xA4YJIONZQGQm6qT8pi6GkWWmwWgrAIV0GSJrcxvI0cCCwbDnMN1AaFX8VxX16aBg77sT5ijYIi9OgZIMorciIi_bqZKIFC2uf-JcLBM5LxBcmmGvAsqUglqxbBmiINI5BIY-/s640/NonclusteredIndex1.PNG" width="640" /></a><span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">We got Index Scan operation based on object_id column</span></span><br />
<br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"></span>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><u style="color: black; font-family: verdana, sans-serif; font-size: 85%;">Lets create an another Non-Clustered Index</u><span style="color: black; font-family: "verdana" , sans-serif; font-size: 85%;">:</span></a><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1">
</a>
<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1"><span style="color: black; font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">CREATE NONCLUSTERED INDEX nci_schema_id ON SystemObjects([schema_id])</span></span></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1">
</a>
<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<span style="color: black; font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyjFLaB2FIgOIVy-jTFH9ZCbDYT2FHirqv4xxCVBeM2pP6ueqhdxS5nDshbFG4BLKG2lekF8fwe9nuM3lSnF65BkYEvz-X9V1InB6Mykn_2_MPdaX7Eb9CaYPDumDQbcBJfT-xDX1GwQcI/s1600/TableScan.PNG" imageanchor="1"><br /></a></span></span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Non-clustered Index has been created on schema_id column which is 4 Byte!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Trying to get record count again</u> (with Actual Execution Plan)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span><span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">SELECT COUNT(1) FROM SystemObjects</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9EKymOW8bZJ1E3tj8ukTaEHlCdkD9PL7JUTZjKsx5PiPT_VEZBINnWOPvjYJJkOhGiftHBn9wXrGwgw2dh0WaDzQ6JrrcIi_d9tYu4dhmseW5Vzoz-MEPLESmrijPFBS75VkvjFUehSnH/s1600/NonclusteredIndex2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="80" data-original-width="743" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9EKymOW8bZJ1E3tj8ukTaEHlCdkD9PL7JUTZjKsx5PiPT_VEZBINnWOPvjYJJkOhGiftHBn9wXrGwgw2dh0WaDzQ6JrrcIi_d9tYu4dhmseW5Vzoz-MEPLESmrijPFBS75VkvjFUehSnH/s640/NonclusteredIndex2.PNG" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">We got Index Scan operation again. But, this time based on schema_id column!!!</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">Confusing a bit right ?</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">See - How the Optimizer decides and goes based on what condition ? You believe Optimizer always tries to go with low cost. right ?</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">here is how...</span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><u>Lets explore the current internal structure:</u></span></span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="background-color: #eeeeee; font-size: 85%;">SELECT a.name, b.index_id, b.page_count, b.index_type_desc FROM sys.indexes a cross apply sys.dm_db_index_physical_stats(DB_ID(), a.[object_id] ,a.index_id,NULL,'LIMITED') AS b</span></span><br />
<span style="background-color: #eeeeee; font-family: verdana, sans-serif; font-size: 85%;">WHERE a.[object_id] = OBJECT_ID('SystemObjects')</span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvZMfDiM0IRmRpsgmjI_8bXxBvTu6BG34bbOeBVjquQTrmA_K-yE1DcA3r-uNgUNvv5TJou_aPeWkik7VezeOcpo3jRD24L_5OyUBWYotJDBqnCOpH88MSUsRPE1xP8acxM57Jwkmt4Z-F/s1600/Index+Structure.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="92" data-original-width="535" height="68" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvZMfDiM0IRmRpsgmjI_8bXxBvTu6BG34bbOeBVjquQTrmA_K-yE1DcA3r-uNgUNvv5TJou_aPeWkik7VezeOcpo3jRD24L_5OyUBWYotJDBqnCOpH88MSUsRPE1xP8acxM57Jwkmt4Z-F/s400/Index+Structure.PNG" width="400" /></a></div>
<div>
<br /></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">As you can see, The optimizer chooses to get the info from the smallest structure which will cost very less!!! right ? (Performance perspective)</span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">here - The Optimizer decides to go with lowest pages to process with - So that the whole operation completes quickly/costs very less. Which is very effective/optimized operations.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">The optimizer goes with "nci_schema_id" Index which is least pages (5 Pages)</span></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">If you remove the Index </span></span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">"</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">nci_schema_id", The optimizer goes with "</span><span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">nci_obj_id" index which is least pages (6 Pages)</span></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Once remove all the Indexes from the table - There is no other go - The Optimizer goes with Table scan (Scans all the Pages - 22 pages)</span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Here is the synopsis</b>: The Optimizer goes with least pages which can be complete the process as quickly as possible with <u>less cost</u>!</span></div>
</div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-53883753014790152722019-01-26T21:38:00.002+05:302019-01-26T21:38:58.753+05:30Merry-go-round scanning ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">In SQL Server Enterprise edition, There is a strategy being followed when performing SCAN on tables! </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Its also called as "Advanced Scanning"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The advanced scan feature allows multiple tasks to share full table scans. If the execution plan of a Transact-SQL statement requires a scan of the data pages in a table and the Database Engine detects that the table is already being scanned for another execution plan, the Database Engine joins the second scan to the first, at the current location of the second scan. </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><i>The Database Engine reads each page one time and passes the rows from each page to both execution plans</i>. </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">This continues until the end of the table's data is reached.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">At that point, the first execution plan has the complete results of a scan, but the second execution plan must still retrieve the data pages that were read before it joined the in-progress scan. The scan for the second execution plan then wraps back to the first data page of the table and scans forward to where it joined the first scan. Any number of scans can be combined like this. The Database Engine will keep looping through the data pages until it has completed all the scans. This mechanism is also called "<i>merry-go-round scanning</i>" and demonstrates why the order of the results returned from a SELECT statement cannot be guaranteed without an ORDER BY clause.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>i.e:</b>, assume that you have a table with 500000 pages. User-1 executes a Transact-SQL statement that requires a scan of the table. When that scan has processed 100000 pages, User-2 executes another Transact-SQL statement that scans the same table. The Database Engine schedules one set of read requests for pages after 100001, and passes the rows from each page back to both scans. When the scan reaches the 200000 th page, User-3 executes another Transact-SQL statement that scans the same table. Starting with page 200,001, the Database Engine passes the rows from each page it reads back to all three scans. After it reads the 500000 th row, the scan for User-1 is complete, and the scans for User-2 and User-3 wrap back and start to read the pages starting with page 1. When the Database Engine gets to page 100000, the scan for User-2 is completed. The scan for User-3 then keeps going alone until it reads page 200000. At this point, all the scans have been completed</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b><u>Without this strategy</u></b>:</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">"Each user would have to compete for buffer space and cause disk arm contention. The same pages would then be read once for each user, instead of read one time and shared by multiple users, slowing down performance and taxing resources"</span><br />
<div>
<br /></div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-566084116174185372019-01-06T13:07:00.001+05:302019-01-06T13:12:11.572+05:30Tempdb should be some % size of Large Database in SQL Instance ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">It doesn't seem like that!!!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">There is NO any arithmetic formula to calculate Tempdb Size. Yes ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Do we have any ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Yes. still we can calculate/figure out by performing the following things when storing Intermediate results</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">1. Memory Spill - Causing by Hash Or Sort operation</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">2. Rebuilding Index along with SORT_IN_TEMPDB Option</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">3. DBCC CHECKDB on Larg Database</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">4. Using Temp (#/##) Table</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">5. Using multiple aggregations with huge data</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Tempdb doesn't behave like User Databases (Say suppose, If the User database grows up to 500 GB and It'll remain same even the SQL Instance restarts. Right ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">But, The Tempdb will be recreated with the Size to whatever the size it was last set to!!!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>To avoid Memory Spill</b>:</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Omit the ORDER BY clause if you do not need the result set to be ordered.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- If ORDER BY is required, eliminate the column that participates in the multiple range scans from the ORDER BY clause.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Using an index hint, force the optimizer to use a different access path on the table in question.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Rewrite the query to produce a different query execution plan.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">- Force serial execution of the query by adding the MAXDOP = 1 option to the end of the query or index operation</span><br />
<div>
<br /></div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com1tag:blogger.com,1999:blog-6281873472989374623.post-14829851989222643602019-01-01T21:33:00.001+05:302019-01-01T21:33:59.502+05:30Is always good idea to use Temporary Table ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">No. Its NOT</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">As far as I know, Sometimes using Temp table improves performance and Sometimes Its not!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Creating a Temp table to hold intermediate results forces SQL Server to </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">interrupt the data pipeline through a query to persist the results to disk.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Sometimes just doing one query rather than pre-aggregating or pre-sorting </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">can be way more efficient and lead to far lower run time and tempdb usage!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">So, "Always not good using Temp table to have intermediate </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">aggregations/processing before resulting it"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">It has to be compared with various methods with/without Temp table/CTE/table </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">variable before implementing it in production environment!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">So, Its not the case always do something Or always not to do something.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Importantly, make sure to pull only the data that's really required and </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">create Non-clustered index after the table populated when using Temp tables to gain proper statistics created on that with actual loaded data!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Also, Creating more Non-clustered Index that aren't actually being used also </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">causes the slowness on loading data and retrieving as well!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">So, Non-clustered index to be created only based on the query plan actually using. </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">There is no point of pulling Millions of records which is even not needed at </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">all. Right ? But, Its happening most of times which can lead to enormous </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Tempdb usage!!!</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-28388113090031058542018-12-22T20:30:00.001+05:302018-12-22T20:30:15.234+05:30TypePerf - Command-Line Tool<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">We have Windows Operating system Command-Line Tool called "<b>TypePerf</b>" Is used to collect performance metrics periodically and store it in a File or SQL Table for further analysis on what time and what kind of overhead taken place in Server/SQL Instance like Physical/Logical Memory/Disk/Processor/IO,.. Etc,...</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">Here is the syntax</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI72qoeSt2BuPZZyF5i2akZpRdmZ40U6yiT38iieUWUFuba_awpi1yJdC_lImGw92OLYQU-tGb7PFlfZP6VFNMRkx2xmCjGhqQkDtmIAG0WCSj0mYaxT4TPxw6R96QfpnZAWjDVs6kPndR/s1600/Syntax.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="944" data-original-width="877" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI72qoeSt2BuPZZyF5i2akZpRdmZ40U6yiT38iieUWUFuba_awpi1yJdC_lImGw92OLYQU-tGb7PFlfZP6VFNMRkx2xmCjGhqQkDtmIAG0WCSj0mYaxT4TPxw6R96QfpnZAWjDVs6kPndR/s400/Syntax.JPG" width="371" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">1. List all the Performance Objects and Counters (Without Instance)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>TypePerf -q</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">2. List all the Performance Objects and Counters (With Instance)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>TypePerf -qx</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">3. List counters of a specific Object (i.e: PhysicalDisk)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-family: Verdana, sans-serif; font-size: small;">TypePerf -q \PhysicalDisk</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzlOz7Urq406m7fqxQYbbC3L4DY4LOd3G2wO6T4WLzYQAXtzvU1a_5yZKrs7K8jINiGRZQpw6nrXTv0ydZRqpACya5P3_fEh5A9YOdzR4nbTjdnfSQ_qsIqD_Ze5fISphFzaOiOIzu75ui/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="642" data-original-width="601" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzlOz7Urq406m7fqxQYbbC3L4DY4LOd3G2wO6T4WLzYQAXtzvU1a_5yZKrs7K8jINiGRZQpw6nrXTv0ydZRqpACya5P3_fEh5A9YOdzR4nbTjdnfSQ_qsIqD_Ze5fISphFzaOiOIzu75ui/s400/1.JPG" width="373" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">4. </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">List counters of a specific </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Object with Instance (i.e: PhysicalDisk)</span></div>
<div class="separator" style="clear: both;">
<b style="font-family: Verdana, sans-serif; font-size: small;">TypePerf -qx \PhysicalDisk</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0VlpM6WxDlbYdxGNgvXR0q1T2oVPyRbe_7C9kgW2WCLtIRAOOiI4TgLWCy2D4MsK2q7xWL4ApCmYZRpI7R5C7nVYErLBgDXq3SUS3Sn0_Pt22GvXV7Kh1zn4gcG7oUWN6sLw4tq3XRqB-/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1028" data-original-width="672" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0VlpM6WxDlbYdxGNgvXR0q1T2oVPyRbe_7C9kgW2WCLtIRAOOiI4TgLWCy2D4MsK2q7xWL4ApCmYZRpI7R5C7nVYErLBgDXq3SUS3Sn0_Pt22GvXV7Kh1zn4gcG7oUWN6sLw4tq3XRqB-/s400/2.JPG" width="261" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">5. Show</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;"> metrics for a specific </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Object with all Instances (i.e: PhysicalDisk)</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>TypePerf "\PhysicalDisk(*)\Current Disk Queue Length"</b></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSVi1R-iGK364CgGpZI31YRJQWvUlNtmgDoCr1AiaBFoAX_92fzyHFmbaUZsq4ploFE8g2TqU8H9yVBDmjLt98V1JCTr0WPVHR8tV4KUbbhomC-PtlZgC4CWYtwkZH9AKP6lxRID__jZCV/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="487" data-original-width="1600" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSVi1R-iGK364CgGpZI31YRJQWvUlNtmgDoCr1AiaBFoAX_92fzyHFmbaUZsq4ploFE8g2TqU8H9yVBDmjLt98V1JCTr0WPVHR8tV4KUbbhomC-PtlZgC4CWYtwkZH9AKP6lxRID__jZCV/s400/3.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>*</b> - Represents all Instance of the Object "PhysicalDisk"</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">6. </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Show</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;"> metrics for a specific </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Object with all Instances (i.e: PhysicalDisk) only 4 samples</span></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-family: Verdana, sans-serif; font-size: small;">TypePerf "\PhysicalDisk(*)\Current Disk Queue Length" -sc 4</b></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-family: Verdana, sans-serif; font-size: small;"><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFr5JXz3Isr285aF_IIDivfF8UOk9zPiJRNsgt90El8Plfz8a6PRegqRD-GVIgDvqfwmyi0vXPQ7UnV4i_bDHEo-WaXqXuiDz56tLDj1SOMBiFP8ipTZSU-XTBNghco1M2hovwkkUr5a8R/s1600/4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="293" data-original-width="1600" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFr5JXz3Isr285aF_IIDivfF8UOk9zPiJRNsgt90El8Plfz8a6PRegqRD-GVIgDvqfwmyi0vXPQ7UnV4i_bDHEo-WaXqXuiDz56tLDj1SOMBiFP8ipTZSU-XTBNghco1M2hovwkkUr5a8R/s400/4.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">By Default - Shows metrics until press CTRL + C</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">7. </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Show</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;"> metrics for a specific </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Object with all Instances (i.e: PhysicalDisk) only 4 samples for every 2 Seconds</span></div>
<div class="separator" style="clear: both;">
<b style="font-family: Verdana, sans-serif; font-size: small;">TypePerf "\PhysicalDisk(*)\Current Disk Queue Length" -sc 4 -si 2</b></div>
<div class="separator" style="clear: both;">
<b style="font-family: Verdana, sans-serif; font-size: small;"><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhfzwwGW9bT8XylCBY9kEztZMgOMOKWmta-P7KNLUP_h8QogBpr6qLSoizaDN2EfFmLnlUka_qbmnHBDH-60n2jML_7qZlp9AHKo7FEJpRCPftVEI7ZGOSJnhCTsFiFn62lLXwm_1uATTZ/s1600/5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="297" data-original-width="1600" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhfzwwGW9bT8XylCBY9kEztZMgOMOKWmta-P7KNLUP_h8QogBpr6qLSoizaDN2EfFmLnlUka_qbmnHBDH-60n2jML_7qZlp9AHKo7FEJpRCPftVEI7ZGOSJnhCTsFiFn62lLXwm_1uATTZ/s400/5.JPG" width="400" /></a></div>
<div class="separator" style="clear: both;">
<b style="font-family: Verdana, sans-serif; font-size: small;"><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Ok! How to show metrics for multiple Counters\Instance ?</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Lets create a Counter file contains Counters\Instances whatever you want to collect the metrics</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Counter file created : <b>C:\Personal\MyCounter.txt</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7aYEXwIRgdgoFPaiDlWnWEUSXU0f9KxVBdNzoxEeME8RIE3hB3Dd9jL4d50tLayPW_A9SIWIt7j-Pmv9cUKaDA-e368PVXyCoqRVKF2fRFZp7CZLpgIru8SGyC08Uof_1yGLNctpv1uX2/s1600/6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="154" data-original-width="579" height="85" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7aYEXwIRgdgoFPaiDlWnWEUSXU0f9KxVBdNzoxEeME8RIE3hB3Dd9jL4d50tLayPW_A9SIWIt7j-Pmv9cUKaDA-e368PVXyCoqRVKF2fRFZp7CZLpgIru8SGyC08Uof_1yGLNctpv1uX2/s320/6.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Refer the Counter file</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz34usHEi-SXTAUQj169qIEOaSFpYYDqVo89crFbD-F-GGkfaISZkqTQkgtY1drCydKntjllLDuCXy-oDDIqV24LNMaJUj9rCoVitz-X-ZW_IrFy2fR6mXqTnc8CdTsgVAKJHtW4Xxu2ij/s1600/7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="302" data-original-width="1485" height="81" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz34usHEi-SXTAUQj169qIEOaSFpYYDqVo89crFbD-F-GGkfaISZkqTQkgtY1drCydKntjllLDuCXy-oDDIqV24LNMaJUj9rCoVitz-X-ZW_IrFy2fR6mXqTnc8CdTsgVAKJHtW4Xxu2ij/s400/7.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>To collect the metrics in SQL Server Tables!</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Create a System DSN</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">here is the file you have to start with - <b>C:\windows\system32\odbcad32.exe</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">My System DSN Name : <b>MySQLServer</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Change the default database to: <b>TestingDB</b> (The database already created in my SQL Instance)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixK2dyZWKQQKnilYu2IilDJTa7KTTiGyAU_QNTjqHwvXm6DSJ8jTV61TseDmGUe1dcPv8Cg0JDMORAj01uRrAk4te-Z6vqozuKJv2KIJgwGpmx90aoYR5xs5OLQYveSZntPU1RjuKGnn2u/s1600/8.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="154" data-original-width="801" height="76" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixK2dyZWKQQKnilYu2IilDJTa7KTTiGyAU_QNTjqHwvXm6DSJ8jTV61TseDmGUe1dcPv8Cg0JDMORAj01uRrAk4te-Z6vqozuKJv2KIJgwGpmx90aoYR5xs5OLQYveSZntPU1RjuKGnn2u/s400/8.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">And, here is the script!</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3nG8WGvncM07LPxTxxzq_7bkPs_1PCQ0IA_qBaE4qLDh2ywPSak1zOss4jdamyipdlXhoyC7ol9gJ9bsviveeYdGKm5xDPvfcOXGUHAInDGpxBC6twEE3VCkDXELxrGKvEtrXLPdrxV4Z/s1600/9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="226" data-original-width="1021" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3nG8WGvncM07LPxTxxzq_7bkPs_1PCQ0IA_qBaE4qLDh2ywPSak1zOss4jdamyipdlXhoyC7ol9gJ9bsviveeYdGKm5xDPvfcOXGUHAInDGpxBC6twEE3VCkDXELxrGKvEtrXLPdrxV4Z/s400/9.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The following THREE Tables created in TestingDB Database</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">dbo.CounterDetails</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">dbo.CounterData</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">dbo.DisplayToID</span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">here is the performance metrics collected in SQL Server Table in TestingDB Database</span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPeWzdaOhmqUWbk5EU84bgGeBeycq6WCd_9Vjyxe23iVdYiNm6ZWvIibQA46BFZsGXQkU4Ddoq6WdNzeuZmoUpLVkEf4P2MiyAhdzkKCFd_erZKJkEJ8C_i7xkiVuOwATnt1ng8JhW1YAG/s1600/Final.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="1062" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPeWzdaOhmqUWbk5EU84bgGeBeycq6WCd_9Vjyxe23iVdYiNm6ZWvIibQA46BFZsGXQkU4Ddoq6WdNzeuZmoUpLVkEf4P2MiyAhdzkKCFd_erZKJkEJ8C_i7xkiVuOwATnt1ng8JhW1YAG/s400/Final.png" width="400" /></a></div>
</div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-42636741924597714562018-12-16T21:32:00.001+05:302018-12-16T21:36:21.504+05:30DAC - Dedicated Administrator Connection<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Why It's needed ?</b></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">SQL Server grands a special connection when normal/standard connection are not possible. So, The DAC helps DBAs to query and troubleshoot problems even normal/standard connection also not responding.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Note</b>:DAC also may not possible under extreme situation! </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">SQL Browser service should be running for Named Instance! But, Its not need for "Default Instance"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">By default, DAC is allowed within the server. Only sysadmnin members are allowed to connect using DAC.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Connecting SQL Server from remote machine is not allowed unless they are configured "<b>remote admin connections</b>" using the sp_configure stored procedure</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">DAC only listens on the loop-back IP address (127.0.0.1), port 1434</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">If TCP port 1434 is not available, a TCP port is dynamically assigned when the Database Engine starts up</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">For DAC connection using sqlcmd</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>sqlcmd -S</b><span style="color: blue;">Server\Instance</span> <b>-A</b></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Or</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>sqlcmd -S</b><span style="color: blue;">127.0.0.1</span> <b>-A</b> -- Default Instance</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Or</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>sqlcmd -S</b><span style="color: blue;">127.0.0.1\Instance</span> <b>-A</b> -- Named Instance</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Or</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>sqlcmd -S</b><span style="color: blue;">Admin:Server\Instance</span></span><br />
<div>
<br /></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">DCA is declined with an Error 17810 If its already a DAC is running</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Note</b>: SQL Server Express does not listen on the DAC port unless started with a trace flag 7806</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The DAC initially connects to the default database associated with the login. If the default database is offline or otherwise not available, the connection will return error 4060</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">"<span style="color: #660000;">Microsoft recommends to connect the master database with the DAC because master is guaranteed to be available</span>"</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">SQL Server prohibits running parallel queries or commands with the DAC.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The DAC session might get blocked on a latch. You might be able to terminate the DAC session using CTRL-C but it is not guaranteed. In that case, your only option may be to restart SQL Server</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">On cluster configurations, the DAC will be off by default</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">When connecting to the default instance, the DAC avoids using a SQL Server Resolution Protocol (SSRP) request to the SQL Server Browser Service when connecting</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">When connecting to the Azure SQL Database with the DAC, you must also specify the database name in the connection string by using the -d option.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Have you faced ?</b></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The following Err occurred when I try to connect with SQL Server through Management studio!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Yeah!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;">"<span style="background-color: #cccccc;">There was a resource limitation (insufficient memory or <b>maximum allowed connections</b>) on the server. (provider: Shared Memory Provider, error: 0 - No process is on the </span></span></span><span style="font-family: "verdana" , sans-serif; font-size: 13.6px;"><span style="background-color: #cccccc;">other end of the pipe.) (Microsoft SQL Server, Error: 233)</span>"</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 13.6px;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0GBVlc_QcIYNTrL0VCCkdVIJpXxrPgl-6NgRovbxg2NfX7BbnD-xCVSZMaBEhyphenhyphenAHA9rvsLqUt9-rT6wYQAt-wDx02MsIxPC6fDS054dWjKHyy6tz6FiltATcF_wEZkaSV7PAsyPvb14AW/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="822" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0GBVlc_QcIYNTrL0VCCkdVIJpXxrPgl-6NgRovbxg2NfX7BbnD-xCVSZMaBEhyphenhyphenAHA9rvsLqUt9-rT6wYQAt-wDx02MsIxPC6fDS054dWjKHyy6tz6FiltATcF_wEZkaSV7PAsyPvb14AW/s400/Untitled.png" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">It seems like the Maximum connection has been limited. Oh...</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Then, How to fix/increase the Maximum connections ? </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">here we go with DAC!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Ok. I need to connect with Named Instance</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaZZZLVYaym_ddcyZLVETYt5xaWcFqKrYQszOFaXG63nNs3fIOeZ-bnazRLGOHPC8AvImdGcWjrmq9YaNpgjI82hTftT9QC2xEqCq2SpTmFDf8Jeg62KwEBBBdMjh-aXG_PVCJGDiEPIZk/s1600/DAC2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="140" data-original-width="368" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaZZZLVYaym_ddcyZLVETYt5xaWcFqKrYQszOFaXG63nNs3fIOeZ-bnazRLGOHPC8AvImdGcWjrmq9YaNpgjI82hTftT9QC2xEqCq2SpTmFDf8Jeg62KwEBBBdMjh-aXG_PVCJGDiEPIZk/s320/DAC2.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Check, What is the current MAX connections ?</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDIRf6BHHQVUZgWVJKZVleB8wbMZbAHXkDQpXsdOnxaJkF_AVFDBwDAKt0Wcm5cib1O4KokN0x4NLiUT8D21ccCr0CdfBPS_-feNspq6CxIRE31YSm0dX7-L_jiKVJJ-VDooBHWdtaaEFp/s1600/DAC2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="153" data-original-width="733" height="82" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDIRf6BHHQVUZgWVJKZVleB8wbMZbAHXkDQpXsdOnxaJkF_AVFDBwDAKt0Wcm5cib1O4KokN0x4NLiUT8D21ccCr0CdfBPS_-feNspq6CxIRE31YSm0dX7-L_jiKVJJ-VDooBHWdtaaEFp/s400/DAC2.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 13.6px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 13.6px;">Increase/Reset the MAX connections!</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif; font-size: 13.6px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQrv8Q5iJwSsmnkBUl0puwWD575SKwYiDR1RrESNPuk-29TCMmBoGT8bk3m9GDvCionwYMeuxQ_B4ZxTgFA4kL9PnpyrLj3mo7hKKsDunakKpu86OUFL_oaxLsKxLfe0ZzDtjrDWg0f-su/s1600/DAC2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="74" data-original-width="338" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQrv8Q5iJwSsmnkBUl0puwWD575SKwYiDR1RrESNPuk-29TCMmBoGT8bk3m9GDvCionwYMeuxQ_B4ZxTgFA4kL9PnpyrLj3mo7hKKsDunakKpu86OUFL_oaxLsKxLfe0ZzDtjrDWg0f-su/s400/DAC2.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Reconfiguring the running value of the <b>User Connections</b> option requires restarting the Database Engine!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Yeah! It worked!!!</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-24261317481854823572018-07-08T23:55:00.000+05:302018-07-08T23:55:13.206+05:30Handling JSON with SQL Server<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">JSON is a popular textual data format that's used for exchanging data in modern web and mobile applications.</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif;"><span style="font-size: 85%;">I have a sample JSON file contains Multi-language data. How to read it from the JSON file in SQL Server ?</span></span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">File Name : </span><b style="font-family: verdana, sans-serif;">one.json</b><br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPYR2Ya5hNbkOlN1UClkQ9PzM9D7t3qqw5xD2z8DjKcSPRpm512ESdaKJSlca9-092nqOJzmmBaLFc1fOSfAUpCPVUUQ8jXquOrCSXmAAlYLZnu02vx9366cjutEPmyEBwhDQdV3kE0zib/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="101" data-original-width="1000" height="64" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPYR2Ya5hNbkOlN1UClkQ9PzM9D7t3qqw5xD2z8DjKcSPRpm512ESdaKJSlca9-092nqOJzmmBaLFc1fOSfAUpCPVUUQ8jXquOrCSXmAAlYLZnu02vx9366cjutEPmyEBwhDQdV3kE0zib/s640/1.JPG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;">here we go....</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">In SQL Server 2016, There is an option to consume JSON file content using : <a href="https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-2016">OPENJSON</a></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@json <span style="color: blue;">NVARCHAR</span>(MAX)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>@json = BulkColumn <span style="color: blue;">FROM OPENROWSET</span> (<span style="color: blue;">BULK</span><span style="color: red;"> 'C:\Personal\one.json'</span>, <span style="background-color: yellow; color: blue;">SINGLE_CLOB</span>) j</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span><b>OPENJSON</b>(@json) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">WITH </span><br />
<span style="font-family: "verdana" , sans-serif;">(</span><br />
<span style="font-family: "verdana" , sans-serif;">id <span style="color: blue;">int</span><span style="color: red;"> 'strict $.id'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">English <span style="color: blue;">varchar</span>(50) <span style="color: red;">'$.language.english'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Tamil <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.tamil'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Telugu <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.telugu'</span></span><br />
<span style="font-family: "verdana" , sans-serif;">)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But, The result I got was..</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnWdl6NAgxikvVEGi_9swTwt0K4CNp3BtbvNYXNMC8xdw9JX876XFuMGD7O4diu_3zA2hTtuWyqwyomGicDfZJHnMK1FzasBL95rtywH-QSKOq5L8jJ24M4xzTr7OGgFQ-JZAqepaKqqBF/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="66" data-original-width="544" height="76" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnWdl6NAgxikvVEGi_9swTwt0K4CNp3BtbvNYXNMC8xdw9JX876XFuMGD7O4diu_3zA2hTtuWyqwyomGicDfZJHnMK1FzasBL95rtywH-QSKOq5L8jJ24M4xzTr7OGgFQ-JZAqepaKqqBF/s640/2.JPG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">It says, Multi-Language data has not been parsed when read it from the file.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">According to MSDN, SINGLE_CLOB - Reads the content as <b>ASCII</b>. But we need to read as Unicode data</span><br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfhF1pj63Ur3SP4wuz9IKcfA3cdVlaJV8YmU4laojXZyI8mEX8M_HFXw0Xtsx_39NNOYr5YBCqkD2b0-NTXdIq8VB0CtvfRMWIGKbdl4kCeMCgpuY_CsbTiyC8X5DzElcsxbk2HBOLea7d/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="96" data-original-width="1036" height="58" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfhF1pj63Ur3SP4wuz9IKcfA3cdVlaJV8YmU4laojXZyI8mEX8M_HFXw0Xtsx_39NNOYr5YBCqkD2b0-NTXdIq8VB0CtvfRMWIGKbdl4kCeMCgpuY_CsbTiyC8X5DzElcsxbk2HBOLea7d/s640/3.JPG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">So, The following option used SINGLE_NCLOB which reads the content in <b>Unicode</b></span><br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhId07LEYlaOkzEk8S2BEl1PO5TMEga4oVsPp_lM8KGDKkHzbTuwxBZb-r8uBBC_afoRB4fyFV6FFhkSQyIbyy-vzNynmJfYJP6Dq4b4iXfNqH_432qwI2rS2dPUmOjBfGkHXzPZK0mPVr3/s1600/4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="95" data-original-width="1033" height="58" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhId07LEYlaOkzEk8S2BEl1PO5TMEga4oVsPp_lM8KGDKkHzbTuwxBZb-r8uBBC_afoRB4fyFV6FFhkSQyIbyy-vzNynmJfYJP6Dq4b4iXfNqH_432qwI2rS2dPUmOjBfGkHXzPZK0mPVr3/s640/4.JPG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@json <span style="color: blue;">NVARCHAR</span>(MAX)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>@json = BulkColumn <span style="color: blue;">FROM OPENROWSET</span> (<span style="color: blue;">BULK</span><span style="color: red;"> 'C:\Personal\one.json'</span>, <span style="background-color: yellow; color: blue;">SINGLE_NCLOB</span>) j</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span><b>OPENJSON</b>(@json) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">WITH </span><br />
<span style="font-family: "verdana" , sans-serif;">(</span><br />
<span style="font-family: "verdana" , sans-serif;">id <span style="color: blue;">int</span><span style="color: red;"> 'strict $.id'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">English <span style="color: blue;">varchar</span>(50) <span style="color: red;">'$.language.english'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Tamil <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.tamil'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Telugu <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.telugu'</span></span><br />
<span style="font-family: "verdana" , sans-serif;">)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The result was different.... I got an Error</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">Msg 13609, Level 16, State 4, Line 4</span><br />
<span style="color: red; font-family: "verdana" , sans-serif;">JSON text is not properly formatted. Unexpected character '⁛' is found at position 0.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">What next ?</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let us see, How the JSON file was saved/used the Encoding ? Yes. It was <b>UTF-8</b> :)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipTydSHkw_h2EgDVr2aJn_kC5xXjv5dkUzGZtsQpxr1u-ObNDb30yTPCnPAdiQ3KC2bb2_6zz9vjb3K4IbZ-xFwWMPMDYRY8XN6W88MRUoxK36CN8PYqlCUwiQtK9DpkmIX-NIfahOIRaE/s1600/5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="399" data-original-width="1082" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipTydSHkw_h2EgDVr2aJn_kC5xXjv5dkUzGZtsQpxr1u-ObNDb30yTPCnPAdiQ3KC2bb2_6zz9vjb3K4IbZ-xFwWMPMDYRY8XN6W88MRUoxK36CN8PYqlCUwiQtK9DpkmIX-NIfahOIRaE/s640/5.JPG" width="640" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: verdana, sans-serif;">The File Encoding changed and saved it again as <b>Unicode</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: verdana, sans-serif;"> </span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLne8T385E_DKtgmXROQO03rgsj1JjUGblpogjRIfy4iEDemw_T823GHL_cKJgI4p1Z6gYgIy-qsmwH5F3ogpf95yQkDZXBApA6UZ8CDAB6T3wydKyPhyphenhyphenpgblZS47_r2Wt_tZAGEvs5fHn/s1600/5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="404" data-original-width="1082" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLne8T385E_DKtgmXROQO03rgsj1JjUGblpogjRIfy4iEDemw_T823GHL_cKJgI4p1Z6gYgIy-qsmwH5F3ogpf95yQkDZXBApA6UZ8CDAB6T3wydKyPhyphenhyphenpgblZS47_r2Wt_tZAGEvs5fHn/s640/5.JPG" width="640" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">And, I tried again...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">DECLARE </span>@json <span style="color: blue;">NVARCHAR</span>(MAX)</span><br />
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>@json = BulkColumn <span style="color: blue;">FROM OPENROWSET</span> (<span style="color: blue;">BULK</span><span style="color: red;"> 'C:\Personal\one.json'</span>, <span style="background-color: yellow; color: blue;">SINGLE_NCLOB</span>) j</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><span style="color: blue;">SELECT </span>* <span style="color: blue;">FROM </span><b>OPENJSON</b>(@json) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">WITH </span><br />
<span style="font-family: "verdana" , sans-serif;">(</span><br />
<span style="font-family: "verdana" , sans-serif;">id <span style="color: blue;">int</span><span style="color: red;"> 'strict $.id'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">English <span style="color: blue;">varchar</span>(50) <span style="color: red;">'$.language.english'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Tamil <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.tamil'</span>,</span><br />
<span style="font-family: "verdana" , sans-serif;">Telugu <span style="color: blue;">nvarchar</span>(50) <span style="color: red;">'$.language.telugu'</span></span><br />
<span style="font-family: "verdana" , sans-serif;">)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Yes. I got it now</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgieCRd7wpH3ze0fGGyTeNs0be4f3qXS5r4zizUENoR8w2JBmJ2KZToWH67YJ-RlG9h50d9b6eAoY_2QtD5CIKrCYi6a6I9r5TVCppN4jUcRthwWVQG5SoEA-vIKJ2UkiumYTb2ma4AoVPa/s1600/6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" data-original-height="70" data-original-width="283" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgieCRd7wpH3ze0fGGyTeNs0be4f3qXS5r4zizUENoR8w2JBmJ2KZToWH67YJ-RlG9h50d9b6eAoY_2QtD5CIKrCYi6a6I9r5TVCppN4jUcRthwWVQG5SoEA-vIKJ2UkiumYTb2ma4AoVPa/s400/6.JPG" width="400" /></span></a></div>
<br /></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-68398528359421975802017-03-25T22:32:00.002+05:302017-03-25T22:32:27.913+05:30Estimated/Actual Execution plan not displayed!!!<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">I have a Stored Procedure which was showing Execution Plan when execute it until some days back!!!</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">Suddenly, Execution plan not generating for the Procedure when I execute it!! But, Its executing and showing the result as expected.</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">I could not also see the Procedure definition and bellow is the Err!!</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="color: red; font-family: "verdana" , sans-serif; font-size: 85%;">Msg 15197, Level 16, State 1, Procedure sp_helptext, Line 116</span><br />
<span style="color: red; font-family: verdana, sans-serif; font-size: 85%;">There is no text for object '</span><b style="color: red; font-family: verdana, sans-serif; font-size: 85%;">proc_sample2</b><span style="color: red; font-family: verdana, sans-serif; font-size: 85%;">'.</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">What would be the reason ?</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">It seems like the Procedure's definition got !!! </span><span style="color: blue; font-family: verdana, sans-serif; font-size: 85%;">Encrypted</span><span style="font-family: verdana, sans-serif; font-size: 85%;"> !!!</span><br />
<span style="font-family: verdana, sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: verdana, sans-serif; font-size: 85%;">Let's try to find out...</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">USE </span><databasename> <<span style="background-color: yellow;">DatabaseName</span>></databasename></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">SELECT CASE</span> <span style="color: magenta;">OBJECTPROPERTY</span>([Object_ID],<span style="color: red;">'IsEncrypted'</span>) <span style="color: blue;">WHEN </span>1 <span style="color: blue;">THEN </span><span style="color: red;">'YES'</span> <span style="color: blue;">ELSE </span><span style="color: red;">'NO'</span> <span style="color: blue;">END </span>[IsEncrypted]</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">FROM </span><span style="color: #38761d;">sys.Objects</span> <span style="color: blue;">WHERE </span>type_desc =<span style="color: red;">'SQL_STORED_PROCEDURE'</span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: #666666;">AND </span>is_ms_shipped =0</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: #666666;">AND </span>Name=<span style="color: red;">'<b>proc_sample2</b>'</span></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigaELk9eXEndo13qqC6v2QnSYj2Nm-540iJPeRQ9gLOBQvq23YPCdsBtavnndhXnwbse-_x3GM0jco9co4n6CCneqaiPBXVCXb9Ar6Pprehaz_s9IYCKdaxnevTB6SA2n3z5mu-WvxrhKJ/s1600/IsEncrypted.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif; font-size: 85%;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigaELk9eXEndo13qqC6v2QnSYj2Nm-540iJPeRQ9gLOBQvq23YPCdsBtavnndhXnwbse-_x3GM0jco9co4n6CCneqaiPBXVCXb9Ar6Pprehaz_s9IYCKdaxnevTB6SA2n3z5mu-WvxrhKJ/s1600/IsEncrypted.png" /></span></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><b>Yes</b>. That is correct!! The Procedure's definition got Encrypted. So that the Execution Plan can not be generated as per the MSDN Definition...</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">"<span style="color: #660000;"><b>Execution plans are not displayed for encrypted stored procedures or for triggers.</b></span>"</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0tag:blogger.com,1999:blog-6281873472989374623.post-74334219206092588712017-02-19T19:59:00.000+05:302017-02-19T19:59:37.265+05:30optimize for ad hoc workloads - Configuration Option<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Normally, SQL Server compile, generate and stores the Plan for reuse. The process continues for all the following object types </span><br />
<ul style="text-align: left;">
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Proc</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Prepared</span></li>
<li><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">Adhoc</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">ReplProc</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Trigger</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">View</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Default</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">UsrTab</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">SysTab</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Check</span></li>
<li><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Rule</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="font-family: "verdana" , sans-serif; font-size: 85%;">For the every type of queries the process generates and stores the plan and every plan consume some Size.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span></span><span style="color: #2a2a2a;"><span style="font-family: "verdana" , sans-serif; font-size: 85%;">Here, we going to see about the Transact-SQL statement also referred to as "Adhoc" query.</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">USE</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"> AdventureWorks2012 </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="background-color: yellow; color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">SELECT</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"><span style="background-color: yellow;"> C.AccountNumber, SH.OrderDate</span>, SH.DueDate, SH.TotalDue </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">FROM </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">Sales.SalesOrderHeader SH </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK) </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.Customer C </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (SH.CustomerID = C.CustomerID)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.SalesTerritory ST </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (ST.TerritoryID = SH.TerritoryID) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WHERE </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ST.Name=</span><span style="color: red; font-family: "verdana" , sans-serif; font-size: 85%;">'United Kingdom'</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>The following query to get the Stored Plan related Info for the above query</u></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">SELECT</span> A.usecounts [Use Count], A.size_in_bytes [Plan Size(Bytes)],X.[text] [Query Used] <span style="color: blue;">FROM </span><span style="color: #38761d;">sys.dm_exec_cached_plans</span> A CROSS APPLY <span style="color: #38761d;">sys.dm_exec_sql_text</span>(A.[plan_handle]) AS X</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">WHERE </span>A.objtype =<span style="color: red;">'ADHOC' </span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">AND X.[Text] LIKE <span style="color: red;">'%<span style="background-color: yellow;">SELECT C.AccountNumber, SH.OrderDate</span>%'</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIK8RJmVxvYHBmzsPavQC2Q76NvBMR6oj8cGlHiBZYQof4hQr3K3QpbxfVqbmg3GzjIBfrTSjkdyg157cPgkJ3c5wJ8KIr4kk44m4Ith4wYrjIPhHFpjOUEyKVkfly2rzLpJP-lG_F7Jdn/s1600/Image1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="22" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIK8RJmVxvYHBmzsPavQC2Q76NvBMR6oj8cGlHiBZYQof4hQr3K3QpbxfVqbmg3GzjIBfrTSjkdyg157cPgkJ3c5wJ8KIr4kk44m4Ith4wYrjIPhHFpjOUEyKVkfly2rzLpJP-lG_F7Jdn/s400/Image1.png" width="400" /></a></div>
<br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">The plan consumes <b>72 KB</b> (73728 Bytes) and the query uses 1st time. But, not sure whether the same plan going to be re-used next time. So, do we need to store the entire plan with consumes 72 KB at first time itself ?</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">No.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">So, We have an option "<span style="color: blue;">optimize for ad hoc workloads</span>" is used to improve the efficiency of the plan cache for workloads that contain many single use ad hoc queries/batches.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: #783f04;">SP_CONFIGURE</span> <span style="color: red;">'optimize for ad hoc workloads'</span>,1</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">RECONFIGURE WITH OVERRIDE</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;"></span><br />
<div>
<br /></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Done. </span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">As long as the above option is ON. All the Adhoc queries' entire plan are not going to be stored in Plan cache. But, the Database Engine stores a small compiled plan stub in the plan cache when a batch is compiled for the first time.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>To Remove the specific plan from the cache</u></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: x85%;"><span style="color: blue;">DBCC </span><span style="font-size: x-small;">FREEPROCCACHE(0x06000A004230791470B5CC340100000001000000000000000000000000000000000000000000000000000000</span>)</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif;">GO</span><span style="font-family: "verdana" , sans-serif; font-size: x85%;"></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Run the query at first time</u></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">USE</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"> AdventureWorks2012 </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="background-color: yellow; color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">SELECT</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"><span style="background-color: yellow;"> C.AccountNumber, SH.OrderDate</span>, SH.DueDate, SH.TotalDue </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">FROM </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">Sales.SalesOrderHeader SH </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK) </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.Customer C </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (SH.CustomerID = C.CustomerID)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.SalesTerritory ST </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (ST.TerritoryID = SH.TerritoryID) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WHERE </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ST.Name=</span><span style="color: red; font-family: "verdana" , sans-serif; font-size: 85%;">'United Kingdom'</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>The following query to get the Stored Plan related Info for the above query</u></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">SELECT</span> A.usecounts [Use Count], A.size_in_bytes [Plan Size(Bytes)],X.[text] [Query Used] <span style="color: blue;">FROM </span><span style="color: #38761d;">sys.dm_exec_cached_plans</span> A CROSS APPLY <span style="color: #38761d;">sys.dm_exec_sql_text</span>(A.[plan_handle]) AS X</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">WHERE </span>A.objtype =<span style="color: red;">'ADHOC' </span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">AND X.[Text] LIKE <span style="color: red;">'%<span style="background-color: yellow;">SELECT C.AccountNumber, SH.OrderDate</span>%'</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-jaTZFLinvHwyFrfq17zAqOCkTo0X2FHCcIJqXz8_rytDlH7JygSkuw01YqaAlsD3U04aneTxvHtmzerkbJnrAAkGmROZnj5Hzs88P5tVU9UlKI1hb6gUF6SxiAHEQozfMIx9OnUEBtq_/s1600/Image1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="22" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-jaTZFLinvHwyFrfq17zAqOCkTo0X2FHCcIJqXz8_rytDlH7JygSkuw01YqaAlsD3U04aneTxvHtmzerkbJnrAAkGmROZnj5Hzs88P5tVU9UlKI1hb6gUF6SxiAHEQozfMIx9OnUEBtq_/s400/Image1.png" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Yes. Now, we got only <b>352 Bytes</b> (</span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">small compiled plan stub) </span><span style="font-family: "verdana" , sans-serif; font-size: 85%;">for the plan at first compile/use.</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">When run the same query again second time</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><u>Run the query at second time</u></span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">USE</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"> AdventureWorks2012 </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="background-color: yellow; color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">SELECT</span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;"><span style="background-color: yellow;"> C.AccountNumber, SH.OrderDate</span>, SH.DueDate, SH.TotalDue </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">FROM </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">Sales.SalesOrderHeader SH </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK) </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.Customer C </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (SH.CustomerID = C.CustomerID)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">JOIN Sales.SalesTerritory ST </span><span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WITH(NOLOCK)</span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ON (ST.TerritoryID = SH.TerritoryID) </span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">WHERE </span><span style="color: #2a2a2a; font-family: "verdana" , sans-serif; font-size: 85%;">ST.Name=</span><span style="color: red; font-family: "verdana" , sans-serif; font-size: 85%;">'United Kingdom'</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;">GO</span><br />
<span style="color: blue; font-family: "verdana" , sans-serif; font-size: 85%;"><br /></span>
<u style="font-family: Verdana, sans-serif; font-size: small;">Check whether the plan re-generated and stored entirely in Plan Cache</u><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">SELECT</span> A.usecounts [Use Count], A.size_in_bytes [Plan Size(Bytes)],X.[text] [Query Used] <span style="color: blue;">FROM </span><span style="color: #38761d;">sys.dm_exec_cached_plans</span> A CROSS APPLY <span style="color: #38761d;">sys.dm_exec_sql_text</span>(A.[plan_handle]) AS X</span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: blue;">WHERE </span>A.objtype =<span style="color: red;">'ADHOC' </span></span><br />
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">AND X.[Text] LIKE <span style="color: red;">'%<span style="background-color: yellow;">SELECT C.AccountNumber, SH.OrderDate</span>%'</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxWfAZxyWCdAzONDTogLSclliX-uPUC6F0OwvDMzTEzA6uGFHjWUYv4aZTonhDBYXfsE1QDatMCx-5yUSuAvjaz2Xl72Oj-EongAL1EOAzPQKvUEqOxzMvmKq39yWH_Qrw8mRHuAzaLa2s/s1600/Image1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="17" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxWfAZxyWCdAzONDTogLSclliX-uPUC6F0OwvDMzTEzA6uGFHjWUYv4aZTonhDBYXfsE1QDatMCx-5yUSuAvjaz2Xl72Oj-EongAL1EOAzPQKvUEqOxzMvmKq39yWH_Qrw8mRHuAzaLa2s/s400/Image1.png" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: red;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: red;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;"><span style="color: red;"><br /></span></span>
<span style="font-family: "verdana" , sans-serif; font-size: 85%;">Now, New plan generated (See the <b>use count</b> column as 1) and stored the entire plan in plan cache (See the <b>Plan Size(Bytes)</b>).</span></div>
Pandian Sathappanhttp://www.blogger.com/profile/15506636751868018185noreply@blogger.com0