<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server knowledge center</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/default.aspx</link><description>everything about SQL Server</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Database Integrity Check with SMO</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx</link><pubDate>Tue, 26 Jan 2010 09:38:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185609</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185609</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Database Integrity Check with SMO&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The last series of SMO postings, I would highlight one of SMO capabilities in term of database administration. For DBA, database integrity check is one of must-have database maintenance activities that should become part of database maintenance to ensure database optimal performance and reduce possible data corruption that would reduce database availability. Regarding to SMO capability, SMO provides several integrity check under SMO &lt;b style="mso-bidi-font-weight:normal;"&gt;Database&lt;/b&gt; object. The methods are related to database integrity check. They are :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CheckAllocations&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;This method is equivalent to T-SQL command : DBCC CHECKALLOC&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CheckAllocationsDataOnly&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;This method is equivalent to T-SQL command : DBCC CHECKALLOC (‘databasename’, NOINDEX)&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CheckCatalog&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;This method is equivalent to T-SQL command : DBCC CHECKCATALOG&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CheckTables&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;This method is equivalent to T-SQL command : DBCC CHECKDB&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CheckTablesDataOnly&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 0.5in;" class="MsoListParagraphCxSpLast"&gt;&lt;font size="3" face="Calibri"&gt;This method is equivalent to T-SQL command : DBCC CHECKDB (‘databasename’, NOINDEX)&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Example of SMO integrity check functions is shown below:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Server srv = new Server(“(local)”);&lt;br /&gt;Database db = srv.Databases[“AdventureWorks2008”];&lt;br /&gt;&lt;br /&gt;StringCollection results = db.CheckCatalog();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Foreach ( string result in results)&lt;br /&gt;{&lt;br /&gt;Console.Writeline (result);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If there is no issue on database integrity (for example : AdventureWorks2008 database on your local machine), it would give message : “DBCC execution completed. If DBCC printed error messages, contact your system administrator”.&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx&amp;amp;subject=Database Integrity Check with SMO" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx&amp;amp;t=Database+Integrity+Check+with+SMO" target="_blank" title="Submit Database Integrity Check with SMO to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx&amp;amp;title=Database+Integrity+Check+with+SMO" target="_blank" title="Submit Database Integrity Check with SMO to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx&amp;amp;phase=2" target="_blank" title="Submit Database Integrity Check with SMO to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/26/database-integrity-check-with-smo.aspx&amp;amp;title=Database+Integrity+Check+with+SMO" target="_blank" title="Add Database Integrity Check with SMO to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185609" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Performing Database Restore by SMO</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx</link><pubDate>Sat, 23 Jan 2010 12:44:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185560</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185560</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Performing Database Restore by SMO&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This series of SMO posting, I would like to show how to do database restore with SMO. Backup operation is represented by Microsoft.SqlServer.Management.Smo.Restore class. The example I show here is how to use the SMO Restore class by doing full AdventureWorks2008 database restore on my local SQL Server Machine, so let’s get started by creating windows form application in Visual Studio 2008.&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Add 4 references : &lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Management.Sdk.Sfc, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended. Double click on Form1 to switch into code behind page and put 2 namespace declaration here : &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;using Microsoft.SqlServer.Management.Smo;&lt;br /&gt;using Microsoft.SqlServer.Management.Common;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;create 1 button, 1 label, and 1 progress bar control on the form, and create click event handler of the button and put code here :&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;progressBar1.value = 0;&lt;br /&gt;progressBar1.Maximum = 100;&lt;br /&gt;&lt;br /&gt;Restore rst = new Restore();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;rst.Action = RestoreActionType.Database;&lt;br /&gt;rst.Database = “AdventureWorks2008”;&lt;br /&gt;rst.Devices.AddDevice (@”C:\AdventureWorks2008.bak”, DeviceType.File);&lt;br /&gt;rst.ReplaceDatabase = true;&lt;br /&gt;rst.PercentCompleteNotification = 10;&lt;br /&gt;rst.PercentComplete += new PercentCompleteEventHandler(restore_PercentComplete);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Server srv = new Server(“(local)”);&lt;br /&gt;rst.SqlRestore (srv);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Let’s go through code steps above. Create instance of SMO Restore class. Define restore type and specify database you would like to restore (for example AdventureWorks2008). &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Specify restore filename by adding filename into restore device with FILE device type enumeration value.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;If you would like to replace existing database, put value true into ReplaceDatabase property of the restore instance. If you would like to specify restore progress you could set PercentCompleteNotification property to 10 or any number you prefer; in this sample the 10 means that you instruct the restore object to let you know restore progress for each 10% increment. And specify eventhandler for each completion 10% incremental steps.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;2 remaining last steps is define SQL Server and run restore by issuing method : SqlRestore on the SQL Server.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;You could set restore progress value into label and progress bar control so that user could see backup progress inside the event handler (restore_PercentComplete). In the event handler put the code below :&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;progressBar1.value = e.Percent;&lt;br /&gt;label1.Text = e.Percent.ToString() + “ % complete”;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx&amp;amp;subject=Performing Database Restore by SMO" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx&amp;amp;t=Performing+Database+Restore+by+SMO" target="_blank" title="Submit Performing Database Restore by SMO to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx&amp;amp;title=Performing+Database+Restore+by+SMO" target="_blank" title="Submit Performing Database Restore by SMO to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx&amp;amp;phase=2" target="_blank" title="Submit Performing Database Restore by SMO to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/23/performing-database-restore-by-smo.aspx&amp;amp;title=Performing+Database+Restore+by+SMO" target="_blank" title="Add Performing Database Restore by SMO to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185560" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Performing Database Backup by SMO</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx</link><pubDate>Fri, 22 Jan 2010 13:00:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185551</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185551</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Performing Database Backup by SMO&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This series of SMO posting, I would like to show how to do database backup with SMO. Backup operation is represented by Microsoft.SqlServer.Management.Smo.Backup class. The example I show here is how to use the SMO backup class by doing full AdventureWorks2008 database backup on my local SQL Server Machine, so let’s get started by creating windows form application in Visual Studio 2008.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Add 4 references : &lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Management.Sdk.Sfc, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended. Double click on Form1 to switch into code behind page and put 2 namespace declaration here : &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;using Microsoft.SqlServer.Management.Smo;&lt;br /&gt;using Microsoft.SqlServer.Management.Common;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Now, create 1 button, 1 label, and 1 progress bar control on the form, and create click event handler of the button and put code here :&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;progressBar1.value = 0;&lt;br /&gt;progressBar1.Maximum = 100;&lt;br /&gt;&lt;br /&gt;Backup bkup = new Backup();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;bkup.Action = BackupActionType.Database;&lt;br /&gt;bkup.Database = “AdventureWorks2008”;&lt;br /&gt;bkup.Incremental = false;&lt;br /&gt;bkup.Devices.Add (new BackupDeviceItem(@”C:\AdventureWorks2008.bak”, DeviceType.File));&lt;br /&gt;bkup.Initialize = true;&lt;br /&gt;bkup.PercentCompleteNotification = 10;&lt;br /&gt;bkup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Server srv = new Server(“(local)”);&lt;br /&gt;bkup.SqlBackup (srv);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Let’s go through code steps above. Create instance of SMO Backup class. Define backup type (database/log/filegroup backup). Specify database you would like to backup (for example AdventureWorks2008). &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;If you would like to run backup as incremental backup, specify value true for Incremental property of the backup instance; otherwise it is false. And specify backup filename by adding new BackupDeviceItem.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;If you would like to overwrite existing backup set inside backup file, put value true into Initialize property of the backup instance. And put PercentCompleteNotification to 10; that means that you instruct the backup object to let you know backup progress for each 10% increment. And specify eventhandler for each completion 10% incremental steps.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;2 remaining last steps is define SQL Server and run backup by issuing method : SqlBackup on the SQL Server.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;You could set backup progress value into label and progress bar control so that user could see backup progress inside the event handler (backup_PercentComplete). In the event handler put the code below :&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;progressBar1.value = e.Percent;&lt;br /&gt;label1.Text = e.Percent.ToString() + “ % complete”;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Because the UI got freezed during update progress running before 100%, it’s better to implement threading, here is complete code to implement threading so that user could do any other task on the windows form user interface (UI) whilst waiting backup operation to complete.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class Backup : Form&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Backup()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void button1_Click(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button1.Enabled = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread tr = new Thread(new ThreadStart(doBackup));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tr.Start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void doBackup()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar1.Value = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar1.Maximum = 100;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; smo.Server srv = new smo.Server(&amp;quot;(local)&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; smo.Backup backup = new smo.Backup();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.Action = Microsoft.SqlServer.Management.Smo.BackupActionType.Database;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.Database = &amp;quot;AdventureWorks2008&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.Incremental = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.Devices.Add(new Microsoft.SqlServer.Management.Smo.BackupDeviceItem(@&amp;quot;C:\adventureWorks2008.bak&amp;quot;, smo.DeviceType.File));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.Initialize = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.PercentCompleteNotification = 10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.PercentComplete += new Microsoft.SqlServer.Management.Smo.PercentCompleteEventHandler(backup_PercentComplete);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; backup.SqlBackup(srv);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void backup_PercentComplete(object sender, Microsoft.SqlServer.Management.Smo.PercentCompleteEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Invoke(new displayProgress_delegate(displayProgress), e.Percent);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private delegate void displayProgress_delegate(int progress);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void displayProgress(int progress)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label1.Text = progress.ToString() + &amp;quot; % complete&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressBar1.Value = progress ;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (progress == 100)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button1.Enabled = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Here is screenshot as combination of C# threading and SMO backup operation implementation to give non-freezing user interface.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;img border="0" alt="" align="absMiddle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/Performing%20Database%20Backup%20by%20SMO/progress.JPG" width="298" height="299" /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx&amp;amp;subject=Performing Database Backup by SMO" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx&amp;amp;t=Performing+Database+Backup+by+SMO" target="_blank" title="Submit Performing Database Backup by SMO to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx&amp;amp;title=Performing+Database+Backup+by+SMO" target="_blank" title="Submit Performing Database Backup by SMO to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx&amp;amp;phase=2" target="_blank" title="Submit Performing Database Backup by SMO to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/performing-database-backup-by-smo.aspx&amp;amp;title=Performing+Database+Backup+by+SMO" target="_blank" title="Add Performing Database Backup by SMO to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185551" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Get User Database Properties with SMO</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx</link><pubDate>Fri, 22 Jan 2010 11:28:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185550</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185550</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Get User Database Properties with SMO&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Still with SMO discussions, this time I would like to show how we easily get properties of a user database with SMO (Server Management Object). As brief explanation, SMO is an SQL Server specific API that enables application developer to build custom SQL Server solution inside their application.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Let’s jump into example here.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Fire up Visual Studio 2008 and create windows application project with C# (you could choose other .NET compliant language such as VB.NET). Double click on Form1 listed in Solution Explorer and drag-drop a button and a propertyGrid control.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Add&amp;nbsp;4 SMO references by right click on References folder (in Solution Explorer) and choose “Add Reference…”, choose : Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Management.Sdk.Sfc, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended and click OK.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Double click on the form to open code behind and add 2 namespace declaration here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;using Microsoft.SqlServer.Management.Smo;&lt;br /&gt;using Microsoft.SqlServer.Management.Common;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Switch back to graphical designer of Form1 and double click on the button to create its event handler and put the code here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Server srv = new Server(“(local)”);&lt;br /&gt;Database db = srv.Databases[“AdventureWorks2008”];&lt;br /&gt;this.PropertyGrid1.SelectedObject = db;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The code above is to retrieve database properties of AdventureWorks2008 in your local SQL Server instance.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Run your windows application project (by pressing F5 button) and click the button to display the below result :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;img border="0" alt="" align="absMiddle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/Get%20User%20Properties%20database%20with%20SMO/untitled.JPG" width="1" height="1" /&gt;&lt;img border="0" alt="" align="absMiddle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/Get%20User%20Properties%20database%20with%20SMO/untitled.JPG" width="1280" height="774" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx&amp;amp;subject=Get User Database Properties with SMO" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx&amp;amp;t=Get+User+Database+Properties+with+SMO" target="_blank" title="Submit Get User Database Properties with SMO to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx&amp;amp;title=Get+User+Database+Properties+with+SMO" target="_blank" title="Submit Get User Database Properties with SMO to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx&amp;amp;phase=2" target="_blank" title="Submit Get User Database Properties with SMO to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/22/get-user-database-properties-with-smo.aspx&amp;amp;title=Get+User+Database+Properties+with+SMO" target="_blank" title="Add Get User Database Properties with SMO to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185550" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Get List of SQL Server Instances with SMO</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx</link><pubDate>Sat, 16 Jan 2010 22:01:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185471</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185471</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Get List of SQL Server Instances with SMO&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCDBA, MCITP&lt;/font&gt;&lt;/h2&gt;
&lt;p style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Sometimes there are requirements where you need to get list of SQL Server instances. For example you need to do database health check on each databases of each SQL Server instances. First you need to know SQL Server instance before you could get list of databases of the SQL Server instance. There are many ways to get list of SQL Server instance. You could get from running SQLCmd dos-prompt command here &lt;b style="mso-bidi-font-weight:normal;"&gt;SQLCmd –Lc&lt;/b&gt;. If you need to get other attributes of a SQL Server instance such as SQL Server version, whether the instance is local instance or remote instance, and whether the instance is clustered instance then you could use SMO as I explain below.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SMO supplies one excellent class called SMOApplication. The class has 1 static method : EnumAvailableSqlServer. The method has one Boolean parameter named localOnly. Specify it to true, the method will return all SQL Server instances that run on your local machine only. Specify it to false, the method will return all SQL Server instances than run on your local and remote machine. The return result is ADO.NET datatable.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Let’s implement SMO into .NET project here. Fire up Visual Studio 2008. Add 4 SMO references (Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended, Microsoft.SqlServer.Management.Sdk.Sfc). Switch on code behind of Form1 user interface and put 2 SMO-related namespace here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;using Microsoft.SqlServer.Management.Common;&lt;br /&gt;using Microsoft.SqlServer.Management.Smo;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;On Form1 user interface, draw 1 button and 1 DataGridView. Double click on the button so that Visual Studio will automatically create “click” event handler for the button. Inside event handler, you specify the code below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;DataTable dt = SmoApplication.EnumAvailableSqlServers (true);&lt;br /&gt;DataGridView1.DataSource = dt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;I would like to get list of local SQL Server so I pass true value into EnumAvailableSqlServers method. The result is shown on the screenshot below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/Get%20List%20of%20SQL%20Server%20Instances%20with%20SMO/iterate%20server.JPG" width="645" height="301" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;I find out that creating SMO application is easy and give additional security layer to your SQL Server.&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx&amp;amp;subject=Get List of SQL Server Instances with SMO" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx&amp;amp;t=Get+List+of+SQL+Server+Instances+with+SMO" target="_blank" title="Submit Get List of SQL Server Instances with SMO to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx&amp;amp;title=Get+List+of+SQL+Server+Instances+with+SMO" target="_blank" title="Submit Get List of SQL Server Instances with SMO to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx&amp;amp;phase=2" target="_blank" title="Submit Get List of SQL Server Instances with SMO to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/get-list-of-sql-server-instances-with-smo.aspx&amp;amp;title=Get+List+of+SQL+Server+Instances+with+SMO" target="_blank" title="Add Get List of SQL Server Instances with SMO to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185471" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Building First SMO (SQL Server Management Object) Application</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx</link><pubDate>Sat, 16 Jan 2010 21:59:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185470</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185470</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Building First SMO (SQL Server Management Object) Application&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCDBA, MCITP&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;With limitless idea exposed by classes in SMO, you could build full-fledged administrative tool which is similar or even more complete than SQL Server Management Studio (SSMS). Here I show important steps to build SMO application. These steps will apply from simplest until most complex SMO application.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To get started to build first application with SMO, let’s fire up Visual Studio 2008. Choose any C#/VB.NET project type. For example in this posting, I choose C# windows form application. Add Project Reference and pick up 4 DLLs, i.e. Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended, Microsoft.SqlServer.Management.Sdk.Sfc.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Switch on code behind of Form1 user interface and put 2 SMO-related namespace here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;using Microsoft.SqlServer.Management.Common;&lt;br /&gt;using Microsoft.SqlServer.Management.Smo;&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;On Form1 user interface, draw 3 textbox and 1 button, name them txtServer, txtUserName, txtPassword and btnLogin. Double click on btnLogin so that Visual Studio will automatically create “click” event handler for the button. Inside event handler, you specify the code below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;ServerConnection conn = new ServerConnection();&lt;br /&gt;conn.ServerInstance = txtServer.txt;&lt;br /&gt;&lt;br /&gt;conn.LoginSecure = false;&lt;br /&gt;conn.Login = txtUserName.txt;&lt;br /&gt;conn.Password = txtPassword.txt;&lt;br /&gt;try{&lt;br /&gt;Server localServer = new Server(conn);&lt;br /&gt;Messagebox.Show (“connected”);&lt;br /&gt;} &lt;br /&gt;catch (SmoException exSMO){&lt;br /&gt;MessageBox.Show (exSMO.ToString());&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;This code above just simply logins into specified SQL Server instance with supplied user name and password, and that’s SQL Server authentication mode. ServerConnection object (conn variable) represents instance of SQL Server and assign connection to instance of Server object (localServer variable). If connection is made with SQL Server authentication mode, you need to set LoginSecure property is false otherwise it is true (Windows authentication mode). For windows authentication mode, it is not necessary to supply value to Login and Password property.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Next code is “Server localServer = new Server (conn);”. It makes connection and if successfully authenticated, conn object will assign connection state into Server instance and pop up message “connected” to end-user. If failed to connect, then the code pass to SmoException.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;That’s the simple SMO example for getting started. With important initial steps to setup SMO solution, you have basic knowledge to get ready to build more complex SMO application.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx&amp;amp;subject=Building First SMO (SQL Server Management Object) Application" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx&amp;amp;t=Building+First+SMO+(SQL+Server+Management+Object)+Application" target="_blank" title="Submit Building First SMO (SQL Server Management Object) Application to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx&amp;amp;title=Building+First+SMO+(SQL+Server+Management+Object)+Application" target="_blank" title="Submit Building First SMO (SQL Server Management Object) Application to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx&amp;amp;phase=2" target="_blank" title="Submit Building First SMO (SQL Server Management Object) Application to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/building-first-smo-sql-server-management-object-application.aspx&amp;amp;title=Building+First+SMO+(SQL+Server+Management+Object)+Application" target="_blank" title="Add Building First SMO (SQL Server Management Object) Application to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185470" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SMO (SQL Server Management Object) in SQL Server 2005/2008</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx</link><pubDate>Sat, 16 Jan 2010 21:56:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185469</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185469</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;SMO (SQL Server Management Object) in SQL Server 2005/2008&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;tab-stops:228.75pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;tab-stops:228.75pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SMO has been introduced since SQL Server 2005. The earlier version of SMO is DMO (Distributed Management Object) which is used by previous version of SQL Server 2005. What is purpose of SMO and DMO? The purpose of SMO and DMO is to bring SQL Server administrative feature into flexibility format to be reused by application developer to build custom SQL Server administration tool. Examples of SQL Server administration activities that might be incorporated into custom application are attaching database when an application setup is installed or building simple database security management as part of an application or building automated backup restore that runs without SQL Server Agent. Both SMO and DMO come in form of APIs library (wrapped into assembly) that contains libraries to accomplish the above task examples.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SMO comes in assembly called Microsoft.SqlServer.Smo.dll, and it is in Program Files\Microsoft SQL Server\100\SDK\Assemblies folder for 32 bit.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Below are list of useful SMO namespaces with the description :&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Common&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It contains SMO common class and RMO (Replication Management Object).&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It contains core classes and enumerations for manipulating SQL Server&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo.Agent&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It contains classes for SQL Server Agent.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo.Wmi&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It used when implement Wmi functionality (conjunction with assembly Microsoft.SqlServer.SqlWmiManagement.dll)&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo.RegisteredServers&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It is used when working with registered servers (conjunction with assembly Microsoft.SqlServer.SmoExtended.dll)&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;6.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo.Mail&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;It is used when implementing database mail&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;7.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Microsoft.SqlServer.Management.Smo.Broker&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt 0.5in;" class="MsoListParagraphCxSpLast"&gt;&lt;font size="3" face="Calibri"&gt;It is used for SQL Server Service broker functionality&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SMO could be used to administer from SQL Server 7.0 until latest release of SQL Server (SQL Server 2008).&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-ALIGN:justify;MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If administration functionality could be delivered with Transact SQL (T-SQL), why do we bother to use SMO? The answer is because of security. T-SQL execution exposes risk of SQL injection, SMO reduces attack surface because developer defines their own functions when interacting to SQL Server through compiled .NET code. It is not possible to attack with SQL injection when administration function is done through SMO and compiled .NET code.&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx&amp;amp;subject=SMO (SQL Server Management Object) in SQL Server 2005/2008" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx&amp;amp;t=SMO+(SQL+Server+Management+Object)+in+SQL+Server+2005%2f2008" target="_blank" title="Submit SMO (SQL Server Management Object) in SQL Server 2005/2008 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx&amp;amp;title=SMO+(SQL+Server+Management+Object)+in+SQL+Server+2005%2f2008" target="_blank" title="Submit SMO (SQL Server Management Object) in SQL Server 2005/2008 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx&amp;amp;phase=2" target="_blank" title="Submit SMO (SQL Server Management Object) in SQL Server 2005/2008 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/17/smo-sql-server-management-object-in-sql-server-2005-2008.aspx&amp;amp;title=SMO+(SQL+Server+Management+Object)+in+SQL+Server+2005%2f2008" target="_blank" title="Add SMO (SQL Server Management Object) in SQL Server 2005/2008 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185469" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Passing Table-Valued Parameter in SSIS 2008</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx</link><pubDate>Tue, 12 Jan 2010 11:50:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185338</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185338</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Passing Table-Valued Parameter in SSIS 2008&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:128.25pt;" class="MsoNormal"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;One of new TSQL enhancements in SQL Server 2008 is table-valued parameter. The challenge is how to pass table valued parameter into stored procedure from SSIS. This process involves 2 major steps. First step is to save the resultset into SSIS object-type variable. Second step is to fill SSIS object-type into ADO.NET datatable, which, in turns, pass the data table into stored procedure table valued input parameter.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Let’s try to scenario here. You need to pass customer information (first name and last name) from 1 database (AdventureWorks) to other database (let’s say tempdb database). The tempdb database contains customer table here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;CREATE TABLE dbo.Customer&lt;br /&gt;(&lt;br /&gt;FirstName VARCHAR(50),&lt;br /&gt;LastName VARCHAR(50))&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You create the stored procedure to insert new data into Customer table here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;CREATE PROCEDURE dbo.InsertCustomer&lt;br /&gt;(&lt;br /&gt;@CustomerInfo AS CustomerInfoType READONLY&lt;br /&gt;) &lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SET NOCOUNT ON;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;INSERT INTO dbo.Customer (FirstName, LastName)&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;SELECT FirstName, LastName FROM @CustomerInfo;&lt;br /&gt;END;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Notice that CustomerInfoType&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;is user defined type with table type, the definition of the type is shown here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;CREATE TYPE CustomerInfoType AS TABLE&lt;br /&gt;(&lt;br /&gt;FirstName VARCHAR(50) NULL,&lt;br /&gt;LastName VARCHAR(50) NULL&lt;br /&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Create the type first before you create the stored procedure.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now you open new SSIS project from Visual Studio 2008. Create new package.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;First step is to save source data into SSIS&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;object-type variable. So create SSIS variable with object type and name it tempCustomer. Drag Data Flow Task into Control Flow designer and double click on it to switch into Data Flow designer. At this stage, we need to specify source data where customer information comes from. Drag OLEDB source, and double click to open OLEDB source editor. Click New button to specify new OLE DB connection manager, with database name : AdventureWorks and click Test Connection button. Once OLE DB connection manager has been created and selected on OLE DB Source Editor, choose data access mode : Table or View and table name : Person.Contact.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Click “Columns” on left pane, and select only FirstName and LastName by ticking the check boxes and click OK to close OLE DB Source Editor dialog window. Now you are returned back to Data Flow designer. From SSIS toolbox, drag Recordset Destination onto Data Flow designer and drag connection arrow from the OLE DB Source to the Recordset Destination. Double click on the Recordset Destination instance and set SSIS variable (tempCustomer) into the instance property called VariableName. Move to second tab (Input Columns) and make sure 2 columns (FirstName and LastName) are selected and click OK to return back to Data Flow Designer. You need to create 1 connection manager as destination of data transformation with ADO.NET Destination type. Double click on the new connection manager, and specify database name is tempdb where dbo.Customer and its stored procedure reside. Click OK to close the connection manager. You can rename the ADO.NET destination connection manager to remember easily, for example : &lt;b style="mso-bidi-font-weight:normal;"&gt;destination&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now you will configure how SSIS variable will be passed into table valued type stored procedure. I will tell you how at second step below.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Switch to Control Flow designer and drag Script Task into the designer and connect arrow from Data Flow Task to Script Task. Double click on Script Task to open Script Task Editor. At Script page, select your language preference (VB.NET or C#), by default it is C#. Specify ReadOnlyVariables to SSIS variable : tempCustomer. Then click Edit Script button to open Visual Studio Tools For Application (VSTO).&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In the VSTO, specify 2 namespaces (using System.Data.Oledb and System.Data.SqlClient). Move to Main routine and create 3 instance here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;OleDbDataAdapter oledbDA = new OleDbDataAdapter();&lt;br /&gt;SqlCommand cmd = new SqlCommand();&lt;br /&gt;DataTable dt = new DataTable();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Next code is to fill datatable from SSIS variable through data adapter here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;oledbDA.Fill (dt, Dts.Variables[“User::tempCustomer”].Value;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Next step is to create instance of destination connection (created before second step, named &lt;b style="mso-bidi-font-weight:normal;"&gt;destination&lt;/b&gt;) here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SqlConnection conn = (SqlConnection)Dts.Connections[“destination”].AcquireConnection(Dts.Transaction);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The remaining step here is typical steps to execute stored procedure in .NET.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;cmd.Connection = conn;&lt;br /&gt;cmd.CommandText = “dbo.InsertCustomer”;&lt;br /&gt;cmd.CommandType = CommandType.StoredProcedure;&lt;br /&gt;cmd.Parameters.AddWithValue(“@CustomerInfo”, dt);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If (conn.State == ConnectionState.Closed) {conn.Open(); }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;cmd.ExecuteNonQuery();&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If (conn.State == ConnectionState.Open) {conn.Close(); }&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Dts.TaskResult = (int) ScriptResults.Success;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Save the code and compile it. Close all dialog windows and run the package. If it runs successfully, check into destination table to see all customer information has been populated into destination.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;That’s the way how you could leverage TSQL new feature in SQL Server 2008 in SSIS.&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx&amp;amp;subject=Passing Table-Valued Parameter in SSIS 2008" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx&amp;amp;t=Passing+Table-Valued+Parameter+in+SSIS+2008" target="_blank" title="Submit Passing Table-Valued Parameter in SSIS 2008 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx&amp;amp;title=Passing+Table-Valued+Parameter+in+SSIS+2008" target="_blank" title="Submit Passing Table-Valued Parameter in SSIS 2008 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx&amp;amp;phase=2" target="_blank" title="Submit Passing Table-Valued Parameter in SSIS 2008 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/12/passing-table-valued-parameters-in-ssis.aspx&amp;amp;title=Passing+Table-Valued+Parameter+in+SSIS+2008" target="_blank" title="Add Passing Table-Valued Parameter in SSIS 2008 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185338" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Practical Steps of Configuring Transparent Data Encryption</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx</link><pubDate>Sun, 10 Jan 2010 11:04:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185284</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185284</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Practical Steps of Configuring Transparent Data Encryption &lt;br /&gt;(SQL Server 2008)&lt;/font&gt;&lt;/h1&gt;
&lt;p style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Transparent Data Encryption (TDE) is new feature of SQL Server 2008. I can say it is security feature. The feature will encrypt database files into encrypted format in SQL Server 2008 Enterprise or Developer edition. Books Online describes more detail about TDE. What I would focus on this posting is how to configure TDE.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The case is that you will encrypt AdventureWorks2008 OLTP database. So here is following steps to configure :&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Open SQL Server Management Studio and open new query window.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Switch to &lt;b style="mso-bidi-font-weight:normal;"&gt;master&lt;/b&gt; database context.&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Create master key encrypted by password here :&lt;br /&gt;CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘123’;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Create certificate. The certificate will be encrypted by master key.&lt;br /&gt;CREATE CERTIFICATE mycert WITH SUBJECT = ‘Tde certificate’;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Backup certificate. The certificate is required for restoring database backup into other SQL Server instance.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;BACKUP CERTIFICATE mycert TO FILE =’C:\mycert_bkup.cer’&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;WITH PRIVATE KEY&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;(&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;FILE = ‘C:\mycert_pvt.cer’,&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;ENCRYPTION BY PASSWORD = ‘456’&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;);&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;6.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Switch to AdventureWorks2008 database context&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;7.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Create database encryption key.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;CREATE DATABASE ENCRYPTION KEY&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;WITH ALGORITHM = AES_256&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;ENCRYPTION BY SERVER CERTIFICATE mycert;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;8.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Turn on encryption option on AdventureWorks2008&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;font size="3" face="Calibri"&gt;ALTER DATABASE AdventureWorks2008&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 0.5in;" class="MsoListParagraphCxSpLast"&gt;&lt;font size="3" face="Calibri"&gt;SET ENCRYPTION ON;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 0.5in;" class="MsoListParagraphCxSpLast"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To monitor progress of encryption process, you could query into new dynamic management view here:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT DB_NAME(DATABASE_ID), ENCRYPTION_STATE FROM SYS.DM_DATABASE_ENCRYPTION_KEYS&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx&amp;amp;subject=Practical Steps of Configuring Transparent Data Encryption" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx&amp;amp;t=Practical+Steps+of+Configuring+Transparent+Data+Encryption" target="_blank" title="Submit Practical Steps of Configuring Transparent Data Encryption to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx&amp;amp;title=Practical+Steps+of+Configuring+Transparent+Data+Encryption" target="_blank" title="Submit Practical Steps of Configuring Transparent Data Encryption to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx&amp;amp;phase=2" target="_blank" title="Submit Practical Steps of Configuring Transparent Data Encryption to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/practical-steps-of-configuring-transparent-data-encryption.aspx&amp;amp;title=Practical+Steps+of+Configuring+Transparent+Data+Encryption" target="_blank" title="Add Practical Steps of Configuring Transparent Data Encryption to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185284" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Get Spatial Position for Geography Data Type in SQL 2008</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx</link><pubDate>Sun, 10 Jan 2010 10:23:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:185283</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=185283</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Get&amp;nbsp;Spatial Position for Geography Data Type in SQL 2008&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SQL Server 2008 introduces new data type, one of them is regarding to position and area, which are geometry and geography data type. Geometry data type covers could be used for small area whereas geography should be used when you need to cover a big area in your database solution, such as between 2 towns or even spanning across countries. This posting discuss about geography data type, specifically to show where you could get your latitude and longitude which are used across a globe.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;There are many tools to help you to determine latitude and longitude of an object position on earth. One of them is idvSolutions Spatial wiki. The url is &lt;/font&gt;&lt;a href="http://silverlight.idvsolutions.com/"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;http://silverlight.idvsolutions.com/&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;. The url uses silverlight technology. If your browser doesn’t have silverlight installed, you need to download silverlight from &lt;/font&gt;&lt;a href="http://www.microsoft.com/silverlight/"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;http://www.microsoft.com/silverlight/&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; and install the add-on into your browser.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You will find out world map at the website. &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/01.jpg" width="800" height="600" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Click new button (near upper right corner) to start determine position of an object in world map. For example, I would like to draw area of Madagascar Island. Fill in Title (at least), so I fill into the textbox as Madagascar Island. Next click drawing tool to select Area as shown on the following screenshot.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/02.jpg" width="800" height="600" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Click OK button, and click Save button to save the area into website and wait for some time as shown in pic below.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/03.jpg" width="800" height="600" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now, the item (titled : Madagascar Island) has been saved into the website. The next step is to export latitude and longitude data into SQL Server 2008 geography data type format by clicking icon beside the item as shown at below screenshot&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/04.jpg" width="379" height="383" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Choose SQL Server 2008 and click open to see geography data which is ready as input into SQL Server 2008 geography spatial data type below.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/05.jpg" width="800" height="600" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&amp;nbsp;&lt;img border="0" alt="" align="middle" src="http://geeks.netindonesia.net/blogs/kasim.wirama/geography%20data%20type/06.jpg" width="1035" height="206" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;That’s the geography data we get, you need to get map as well. One of website that provide map is &lt;a href="http://www.openstreetmap.org/"&gt;&lt;font color="#800080"&gt;http://www.openstreetmap.org/&lt;/font&gt;&lt;/a&gt;. it is open source project, from there you could get global map.&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx&amp;amp;subject=Get Spatial Position for Geography Data Type in SQL 2008" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx&amp;amp;t=Get+Spatial+Position+for+Geography+Data+Type+in+SQL+2008" target="_blank" title="Submit Get Spatial Position for Geography Data Type in SQL 2008 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx&amp;amp;title=Get+Spatial+Position+for+Geography+Data+Type+in+SQL+2008" target="_blank" title="Submit Get Spatial Position for Geography Data Type in SQL 2008 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx&amp;amp;phase=2" target="_blank" title="Submit Get Spatial Position for Geography Data Type in SQL 2008 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2010/01/10/get-spatial-position-for-geography-data-type-in-sql-2008.aspx&amp;amp;title=Get+Spatial+Position+for+Geography+Data+Type+in+SQL+2008" target="_blank" title="Add Get Spatial Position for Geography Data Type in SQL 2008 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=185283" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Looking Inside SQL Server Data Row for Variable Length Column</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx</link><pubDate>Tue, 29 Dec 2009 22:42:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184965</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=184965</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Looking Inside SQL Server Data Row for Variable Length Column&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;I have shown information on hexadecimal value on fixed length column in my recent posting &lt;/font&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;Looking Inside SQL Server Data Row&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;. Now let’s have a look how variable length columns are stored in SQL Server storage engine.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Add more column on the sample table or re-create the table in tempdb database below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;USE tempdb;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;GO&lt;/font&gt;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;CREATE TABLE dbo.Test&lt;br /&gt;(col1 CHAR(2) NOT NULL,&lt;br /&gt;col2&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;INT NULL,&lt;br /&gt;col3 VARCHAR(10) NOT NULL,&lt;br /&gt;col4 VARCHAR(10) NULL,&lt;br /&gt;col5 VARCHAR(10) NULL&lt;br /&gt;);&lt;br /&gt;GO&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;INSERT INTO dbo.Test VALUES (‘aa’,123,’ccc’,’ddd’,’eee’);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;To find file id and page id, run DBCC IND (read &lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/locate-sql-server-data-in-sql-server-storage-engine.aspx" target="_blank"&gt;&lt;span style="COLOR:purple;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;Locate SQL Server Data in SQL Server Storage Engine&lt;/span&gt;&lt;/a&gt;).&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;DBCC IND (tempdb, ‘dbo.Test’,-1);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;The file id and page id is taken from PageType = 1 on the returned resultset.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Turn on trace flag 3604 and run DBCC PAGE with print option 1 to get information about data row below:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;DBCC TRACEON (3604);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;GO&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;DBCC PAGE (tempdb, 1, 193, 1);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;The returned result set for DATA section is :&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;00000000:&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;30000a00 61617b00 00000500 00030018 &lt;/b&gt;†0...aa{.........&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;00000010:&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;001b001e 00636363 64646465 6565&lt;/b&gt;††††††.....cccdddeee&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;span style="mso-ansi-language:EN;"&gt;Let’s focus on bold ones here (&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;30000a00 61617b00 00000500 00030018 001b001e 00636363 64646465 6565&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;30 – &lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;"&gt;if it is converted into bit, the value is 0011 0000. Read from right to left :&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 0 – versioning information. For SQL Server 2008, it is 0.&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 1 to 3,&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;000 – it is primary record (data itself)&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;001 – it forwarded record&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;010 – it is forwarding stub&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;011 – it is index&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;100 – it is BLOB or row-overflow data&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;101 – it is ghost index&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;110 – it is ghost data&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;111 – it is ghost version data&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 4 indicates whether NULL exists, because there is at least one NULL column definition (col2, col4 and col5) then it is 1&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 5 indicates whether there is any variable length column. In this sample there are 3 variable length varchar columns&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 6 indicates whether the row contains versioning information. No versioning at the moment so it is 0.&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="FONT-FAMILY:Symbol;mso-bidi-font-family:Symbol;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:7pt;mso-fareast-font-family:Symbol;mso-ansi-language:EN;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN;"&gt;Bit 7 is 0.&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;000a00 61617b00 0000&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-no-proof:yes;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt; – see explanation on my posting &lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/locate-sql-server-data-in-sql-server-storage-engine.aspx"&gt;&lt;font color="#800080"&gt;Looking Inside SQL Server Data Row&lt;/font&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;0500&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;"&gt; &lt;/span&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;– shows number of columns. There are 5 columns.&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;"&gt;00&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;"&gt; &lt;/span&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;– shows NULL and NOT NULL columns. Because the total column is less than 8 bit, so the size is 1 byte. If more then 8 bit then divide by 8 and round up the value. 2 decimal is represented as 10 in bit. 1 shows NULLABLE column or unused bit and 0 shows NON NULLABLE column. In the table all columns have value so the value is 0.&lt;/span&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;0300&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – shows number of variable length columns.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;1800&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – shows position where position of first variable length column ends. It should be swapped to 00 18 (it ends in position of 24 in decimal). The size is 2 bytes.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;1b00&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – similar to 1800, the position is 00 1b (ends in position 27), it is for col4 (‘ddd’)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;1e00&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – similar to 1800, the position is 00 1e (ends in position 30) , it is for col5 (‘eee’)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;636363&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – is data for col3 (‘ccc’)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;646464&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – is data for col4 (‘ddd’)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:176.25pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;656565&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt; – is data for col5 (‘eee’)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:176.25pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="mso-ansi-language:EN;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;From the example above, the pattern for variable length column is &amp;lt;total number of variable length columns&amp;gt; + &amp;lt;offset position for variable length col1&amp;gt; + &amp;lt;offset position for variable length col2&amp;gt; + … + &amp;lt;actual value for col1&amp;gt; + &amp;lt;actual value for col2&amp;gt; + ….&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx&amp;amp;subject=Looking Inside SQL Server Data Row for Variable Length Column" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx&amp;amp;t=Looking+Inside+SQL+Server+Data+Row+for+Variable+Length+Column" target="_blank" title="Submit Looking Inside SQL Server Data Row for Variable Length Column to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx&amp;amp;title=Looking+Inside+SQL+Server+Data+Row+for+Variable+Length+Column" target="_blank" title="Submit Looking Inside SQL Server Data Row for Variable Length Column to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx&amp;amp;phase=2" target="_blank" title="Submit Looking Inside SQL Server Data Row for Variable Length Column to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/30/looking-inside-sql-server-data-row-for-variable-length-column.aspx&amp;amp;title=Looking+Inside+SQL+Server+Data+Row+for+Variable+Length+Column" target="_blank" title="Add Looking Inside SQL Server Data Row for Variable Length Column to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184965" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Integrity Check Order in SQL Server</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx</link><pubDate>Thu, 24 Dec 2009 11:13:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184885</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=184885</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Integrity Check Order in SQL Server&lt;/font&gt;&lt;/h1&gt;
&lt;p style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&amp;nbsp; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SQL Server has 7 table constraints. They are DEFAULT constraint, NOT NULL constraint, CHECK constraint, FOREIGN KEY constraint, UNIQUE constraint, PRIMARY KEY constraint and trigger. They are part of data integrity enforcement from database. The order of data integrity enforcement from first until last order is:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;DEFAULT constraint check.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;NOT NULL constraint check.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;CHECK constraint check.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;FOREIGN KEY constraint check from referencing table.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;FOREIGN KEY constraint check from referenced table.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;6.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;UNIQUE and PRIMARY KEY constraint check.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 10pt 0.5in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3" face="Calibri"&gt;7.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Trigger constraint check.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;From the steps above, trigger is last constraint check and that’s the reason why trigger could slow down manipulation operation (INSERT/UPDATE/DELETE) on database level; and probably could presents concurrency issues which is usually complex to troubleshoot.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Those constraints are derived from conceptual database constrains. Conceptual database constraints are entity integrity, domain integrity and referential integrity. I always here DRI (Database Referential Integrity) and actually DRI is one of 3 pillars of database integrity.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Entity integrity means that each row should be uniquely identified either UNIQUE constraint or PRIMARY KEY constraints. Trigger could be also used.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Domain integrity means that you enforce particular one or range of value to be applied on an entity (table) attribute (column). FOREIGN KEY, CHECK, DEFAULT are created for enforcing domain integrity. NOT NULL could be regarded for domain integrity check when combined with the 3 domain constraints. Example of domain integrity check is Age column should be between 0 and 100.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-fareast-font-family:Calibri;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-fareast-font-family:Calibri;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Referential integrity check involves column value check on referencing table to make sure value entered exist on value of referenced table column.&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx&amp;amp;subject=Integrity Check Order in SQL Server" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx&amp;amp;t=Integrity+Check+Order+in+SQL+Server" target="_blank" title="Submit Integrity Check Order in SQL Server to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx&amp;amp;title=Integrity+Check+Order+in+SQL+Server" target="_blank" title="Submit Integrity Check Order in SQL Server to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx&amp;amp;phase=2" target="_blank" title="Submit Integrity Check Order in SQL Server to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/integrity-check-order-in-sql-server.aspx&amp;amp;title=Integrity+Check+Order+in+SQL+Server" target="_blank" title="Add Integrity Check Order in SQL Server to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184885" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Question and Answer about SQL Server I/O Subsystem Issue</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx</link><pubDate>Thu, 24 Dec 2009 10:48:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184884</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=184884</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Question and Answer about SQL Server I/O Subsystem Issue&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&amp;nbsp; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;In SQL Server Indo mailing list, there was question about slow query performance on one SQL Server instance but not for the other SQL Server instance. This is something to do either with I/O subsystem or the query itself. I haven’t been aware until the other member replied the mailing list thread with my previous post here. Here is my reply to the first mailing list member that I gave the solution. In case you find performance issue problem, first check on what I have given steps to investigate here.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;There are 2 probabilities, either the I/O subsystem issue or the query workload that demands high I/O request to exceed I/O throughput.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To investigate first probability, check on your performance monitor counter below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;PhysicalDiskObject : Avg. Disk Sec/Read and Avg. Disk Sec/Write.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If either of the result shows less than 10 ms, so it is no issue on I/O subsystem. If it is between 10-20 ms, it is still okay. And if it is over 20 ms, then the issue is on I/O subsystem. The solution is to locate on fast I/O subsystem.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The issue is complicated if the database has several data files on same physical I/O. You need to determine which data files that has the issue by querying into sys.dm_io_virtual_stats Dynamic Management Function (DMF) here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT DB_NAME(database_id), file_id, io_stall_ms, io_stall_write&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM SYS.DM_IO_VIRTUAL_STATS (NULL, NULL);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If you find either io_stall_ms or io_stall_write is very big number, it is indication on which database files that have big I/O request. Other mailing list member asks how to know filename because there is only file_id. The answer is that you need to query into other DMV, namely SYS.MASTER_FILES&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT file_id, physical_name&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM SYS.MASTER_FILES&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;WHERE database_id = DB_ID(‘tempdb’);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To investigate second probability, the below DMV query could identify which query causes performance issue here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;select top 5 &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;(total_logical_ read/execution_ count) as avg_logical_ reads, &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;(total_logical_ writes/execution _count) as avg_logical_ writes, &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;(total_physical_ reads/execution_ count) as avg_phys_reads, &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;execution_count, &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;(select substring (text,statement_ start_offset/ 2 + 1, (case when statement_end_ offset = -1 then len(convert( nvarchar( max),text) ) * 2 &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;else statement_end_ offset &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;end - statement_start_ offset) / 2) &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;from sys.dm_exec_ sql_text( sql_handle) ) as query_text, &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;plan_handle &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;from sys.dm_exec_ query_stats &lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;order by (total_logical_ reads + total_logical_ writes) desc;&lt;/font&gt;&lt;/p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-fareast-font-family:Calibri;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Information from the above query could be used to tune your query further. That’s the area of query tuning (either index tuning or rewrite query for performance boost).&lt;/span&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx&amp;amp;subject=Question and Answer about SQL Server I/O Subsystem Issue" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx&amp;amp;t=Question+and+Answer+about+SQL+Server+I%2fO+Subsystem+Issue" target="_blank" title="Submit Question and Answer about SQL Server I/O Subsystem Issue to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx&amp;amp;title=Question+and+Answer+about+SQL+Server+I%2fO+Subsystem+Issue" target="_blank" title="Submit Question and Answer about SQL Server I/O Subsystem Issue to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx&amp;amp;phase=2" target="_blank" title="Submit Question and Answer about SQL Server I/O Subsystem Issue to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/question-and-answer-about-sql-server-i-o-subsystem-issue.aspx&amp;amp;title=Question+and+Answer+about+SQL+Server+I%2fO+Subsystem+Issue" target="_blank" title="Add Question and Answer about SQL Server I/O Subsystem Issue to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184884" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Determine Row Size in SQL Server</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx</link><pubDate>Thu, 24 Dec 2009 10:22:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184882</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=184882</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Determine Row Size in SQL Server&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To be able to determine the number of rows for a page, you need to determine the row size for respective row. SQL Server could give you information through catalogue view. First let’s we have a look a table with only fixed-length columns and second we will have a look a table with fixed and variable-length columns.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;To determine overall size of a row, you could query from sys.indexes. There is undocumented property value of INDEXPROPERTY, it is minlen. Let’s examine table I created on my last posting, &lt;/font&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/locate-sql-server-data-in-sql-server-storage-engine.aspx"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;Locate SQL Server Data in SQL Server Storage Engine&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;. Run the query to sys.columns here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;USE tempdb&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;GO&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT INDEXPROPERTY(object_id, name, ‘minlen’) AS total_length&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM Sys.indexes&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;WHERE object_id = object_id(‘dbo.test’).&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You will get total row size is 10. Let’s see size of each columns by running query to Sys.Columns catalog view here :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT name, column_id, max_length&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM Sys.columns&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;WHERE object_id = object_id(‘dbo.test’)&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You will get value 2 for max_length of col1 and 4 for col2. Total of them is 6. Where is the other 4 byte? That’s the row overhead used internally by SQL Server storage engine.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now add one variable column here to test table :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;ALTER TABLE test&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;ADD col3 varchar(MAX) NULL;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Run again the query below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT INDEXPROPERTY(object_id, name, ‘minlen’) AS total_length&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM Sys.indexes&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;WHERE object_id = object_id(‘dbo.test’).&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;It still has value 10 though a new variable length column is added. In this case, it would become minimum length instead of total_length.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now re-run the query below :&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;SELECT name, column_id, max_length&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;FROM Sys.columns&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;WHERE object_id = object_id(‘dbo.test’)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-fareast-font-family:Calibri;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-fareast-font-family:Calibri;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Interestingly, you will find out col3 has max_length equal to -1. That means that that’s LOB column.&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx&amp;amp;subject=Determine Row Size in SQL Server" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx&amp;amp;t=Determine+Row+Size+in+SQL+Server" target="_blank" title="Submit Determine Row Size in SQL Server to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx&amp;amp;title=Determine+Row+Size+in+SQL+Server" target="_blank" title="Submit Determine Row Size in SQL Server to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx&amp;amp;phase=2" target="_blank" title="Submit Determine Row Size in SQL Server to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/24/determine-row-size-in-sql-server.aspx&amp;amp;title=Determine+Row+Size+in+SQL+Server" target="_blank" title="Add Determine Row Size in SQL Server to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184882" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Looking Inside SQL Server Data Row</title><link>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx</link><pubDate>Tue, 22 Dec 2009 11:41:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:184858</guid><dc:creator>Kasim.Wirama</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/kasim.wirama/rsscomments.aspx?PostID=184858</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx#comments</comments><description>&lt;h1 style="TEXT-ALIGN:center;MARGIN:24pt 0in 0pt;" align="center"&gt;&lt;font color="#365f91" size="5" face="Cambria"&gt;Looking Inside SQL Server Data Row&lt;/font&gt;&lt;/h1&gt;
&lt;h2 style="TEXT-ALIGN:center;MARGIN:10pt 0in 0pt;" align="center"&gt;&lt;font color="#4f81bd" size="4" face="Cambria"&gt;By : Kasim Wirama, MCITP, MCDBA&lt;/font&gt;&lt;/h2&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;If you have read my 2 previous postings (&lt;/font&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/20/examining-sql-server-data-page-via-undocumented-dbcc-command.aspx"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;Review SQL Server Data Page via Undocumented DBCC Command&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; and &lt;/font&gt;&lt;a href="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/locate-sql-server-data-in-sql-server-storage-engine.aspx"&gt;&lt;font color="#800080" size="3" face="Calibri"&gt;Locate SQL Server Data in SQL Server Storage Engine&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;) about the use of DBCC PAGE and how to locate data page, you will know how data is represented as 4 eight digit hexadecimal. What does the 4 eight digit hexadecimal give information? Let’s go back the data page for test table in tempdb database by running DBCC PAGE below.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Use tempdb;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;GO&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;DBCC TRACEON (3604);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;GO&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;DBCC PAGE (tempdb, 1, 164, 1);&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The result is shown below :&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;PAGE: (1:164)&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;BUFFER:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;BUF @0x03A1916C&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;bpage = 0x09082000&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bhash = 0x00000000&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bpageno = (1:164)&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;bdbid = 2&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;breferences = 0&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bUse1 = 64196&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;bstat = 0x1c0000b&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;blog = 0xbbbcbcbb&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bnext = 0x00000000&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;PAGE HEADER:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Page @0x09082000&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_pageId = (1:164)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_headerVersion = 1&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_type = 1&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_typeFlagBits = 0x4&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_level = 0&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_flagBits = 0x8000&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_objId (AllocUnitId.idObj) = 5652&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_indexId (AllocUnitId.idInd) = 2560 &lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Metadata: AllocUnitId = 720575940749688832 &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Metadata: PartitionId = 720575940748771328&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Metadata: IndexId = 0&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Metadata: ObjectId = 69575286&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_prevPage = (0:0)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_nextPage = (0:0)&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;pminlen = 10&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;m_slotCnt = 1&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_freeCnt = 8081&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_freeData = 109&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_reservedCnt = 0&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_lsn = (23:285:258)&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_xactReserved = 0&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_xdesId = (0:0)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;m_ghostRecCnt = 0&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;m_tornBits = 0&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Allocation Status&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;GAM (1:2) = ALLOCATED&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SGAM (1:3) = ALLOCATED&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;PFS (1:1) = 0x61 MIXED_EXT ALLOCATED&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;50_PCT_FULL&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DIFF (1:6) = CHANGED&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;ML (1:7) = NOT MIN_LOGGED&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;DATA:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Slot 0, Offset 0x60, Length 13, DumpStyle BYTE&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Record Type = PRIMARY_RECORD&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Record Attributes =&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;NULL_BITMAP&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Record Size = 13&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Memory Dump @0x6207C060&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;00000000:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;10000a00 61617b00 00000200 00††††††††....aa{......&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;OFFSET TABLE:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;Row - Offset&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;FONT-SIZE:8pt;mso-no-proof:yes;"&gt;0 (0x0) - 96 (0x60)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Let’s dissect the DATA slot section (bold one) here :&lt;/font&gt;&lt;/p&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;00000000:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;10000a00 61617b00 00000200 00††††††††....aa{......&lt;/b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;10 – shows status bit A. Inside status bit A, there is 8 bit from least significant bit to most significant here:&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 0 – versioning information. For SQL Server 2008, it is 0.&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 1 to 3,&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;000 – it is primary record (data itself)&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;001 – it forwarded record&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;010 – it is forwarding stub&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;011 – it is index&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;100 – it is BLOB or row-overflow data&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;101 – it is ghost index&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;110 – it is ghost data&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1.5in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-fareast-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;o&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;111 – it is ghost version data&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 4 indicates whether NULL exists, because there is one NULL on column definition (col2) then it is 1&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 5 indicates whether there is any variable length column&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 0pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 6 indicates whether the row contains versioning information&lt;/font&gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:-0.25in;MARGIN:0in 0in 10pt 1in;mso-list:l0 level1 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Bit 7 is 0.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;00 – shows status bit B, status bit B is used to show whether the record is ghost forwarded record. For new record (not deleted), it is 0.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;0a00 – shows total length for fixed-length column. Swap the value becomes 00 0a, you will get 10 (decimal) for fixed length column.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;6161 – 2 bytes - shows data. 61 is ASCII code for a. because cola contains value ‘aa’ then the hexadecimal value is double 61.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;7b00 0000 - 4 bytes as int has – shows data as well. Swap and flip the value, it will gives value 123, which is exactly what colb has the value.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:69.75pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:69.75pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;0200 – shows number of columns. There are 2 columns.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:69.75pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:69.75pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;00 – shows NULL and NOT NULL columns. Because the total column is less than 8 bit, so the size is 1 byte. If more then 8 bit then divide by 8 and &lt;/font&gt;&lt;font size="3" face="Calibri"&gt;round up the value. 2 decimal is represented as 10 in bit. 1 shows NULLABLE column or unused bit and 0 shows NON NULLABLE column. In the table all columns have value so the value is 0 both cola and colb.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;tab-stops:69.75pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:11pt;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Decode value from hexadecimal value is straightforward but the behavior of how to decode data is different when the row is compressed in SQL Server 2008.&lt;/span&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx&amp;amp;subject=Looking Inside SQL Server Data Row" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx&amp;amp;t=Looking+Inside+SQL+Server+Data+Row" target="_blank" title="Submit Looking Inside SQL Server Data Row to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx&amp;amp;title=Looking+Inside+SQL+Server+Data+Row" target="_blank" title="Submit Looking Inside SQL Server Data Row to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx&amp;amp;phase=2" target="_blank" title="Submit Looking Inside SQL Server Data Row to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/kasim.wirama/archive/2009/12/22/looking-inside-sql-server-data-row.aspx&amp;amp;title=Looking+Inside+SQL+Server+Data+Row" target="_blank" title="Add Looking Inside SQL Server Data Row to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=184858" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/kasim.wirama/archive/tags/SQL+Server/default.aspx">SQL Server</category></item></channel></rss>