<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Clever</title>
	<atom:link href="http://www.sqlclever.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sqlclever.com</link>
	<description>Database administration behind the scenes</description>
	<lastBuildDate>Tue, 03 Apr 2012 08:52:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>SQL Server and Storage: RAID Levels</title>
		<link>http://www.sqlclever.com/2012/04/02/sql-server-and-storage-raid-level/</link>
		<comments>http://www.sqlclever.com/2012/04/02/sql-server-and-storage-raid-level/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 18:29:42 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=69</guid>
		<description><![CDATA[Hi ! I know that are many people who think a DBA should know only about database. Ok, I&#8217;m sorry, this is wrong A good DBA should know about database, of course! But if you stop on this layer you will be a &#8220;dba&#8221; and not a &#8220;DBA&#8221;! Is highly important, for a DBA, the [...]]]></description>
			<content:encoded><![CDATA[<p>Hi !</p>
<p>I know that are many people who think a DBA should know only about database. Ok, I&#8217;m sorry, this is wrong <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
A good DBA should know about database, of course! But if you stop on this layer you will be a &#8220;dba&#8221; and not a &#8220;DBA&#8221;!<br />
Is highly important, for a DBA, the minimal knowledge about the OS behavior, and all I/O systems, as storage, network and memory.</p>
<p>Today, I will give some basic explanation about RAID levels. Which was also a gap on my knowledge.<br />
First, I need to mention that we have two options of RAID: Hardware RAID and Software RAID.<br />
In summary, the Software RAID is managed by OS, which implies in one more task to compete with the services running on it. So, for SQL Server environments, this is not recommended. Thus, I will focus on Hardware RAID Levels.</p>
<p>But, what are RAID Levels? Basically are the way that disks are grouped together, which is directly related with the Recoverability and performance.</p>
<p>I will talk about the most important for us: RAID 0, RAID 1, RAID 5, RAID 6, RAID 10 and RAID 0+1.</p>
<p><span style="text-decoration: underline;">RAID 0: Striping</span></p>
<ul>
<li>Splits the data, so each drive have an equal portion of the data</li>
<li>If 1TB is need, the capacity can be split in <em>N</em> drives arranged in a RAID 0</li>
<li>More drives added, the faster it will perform, but a higher risk of a data loss</li>
<li>Rarely seen in SQL Server implementations</li>
</ul>
<p><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/150px-RAID_0_svg.png"><img class="size-full wp-image-72 aligncenter" title="150px-RAID_0_svg" src="http://www.sqlclever.com/wp-content/uploads/2012/04/150px-RAID_0_svg.png" alt="" width="150" height="231" /></a></p>
<p><span style="text-decoration: underline;">RAID 1: Mirroring</span></p>
<ul>
<li>Keeps the same data on two (or more) HDs at all times.</li>
<li>Bad cost-benefit</li>
<li>Performance advantage for read operations because the same data exists on all drives</li>
<li>Depending of the RAID Controller and amount of cache, there may be a write penalty
<ul>
<li>In most case the penalty is minimal</li>
<li>When a drive fails no data is lost
<ul>
<li>The failed drive can be replaced and a new copy of the data will be build</li>
<li>During rebuild process, performance will be degraded</li>
<li>RAID Controllers can be configured to set lower or higher priority on rebuilds against OS queries</li>
<li><span style="text-decoration: underline;">SQL Server Logs can be placed on this RAID level</span></li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/150px-RAID_1_svg.png"><img class="size-full wp-image-73 aligncenter" title="150px-RAID_1_svg" src="http://www.sqlclever.com/wp-content/uploads/2012/04/150px-RAID_1_svg.png" alt="" width="150" height="231" /></a></p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">RAID 5: Striping with Parity</span></p>
<ul>
<li>Similar to RAID 0 in that each drive can share an equal part of the data</li>
<li>Adds a measure of data protection: Parity Data</li>
<li>Calculating this parity data is processor-intensive</li>
<li>The minimum number of drivers is three</li>
<li>Some hardware RAID controllers can add additional drivers on the fly</li>
<li>It cannot recover from the failure of more than one drive</li>
</ul>
<div><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/300px-RAID_5_svg.png"><img class="size-full wp-image-76 aligncenter" title="300px-RAID_5_svg" src="http://www.sqlclever.com/wp-content/uploads/2012/04/300px-RAID_5_svg.png" alt="" width="300" height="222" /></a></div>
<div></div>
<p><span style="text-decoration: underline;">RAID 6: Striping with Parity</span></p>
<ul>
<li>Similar to RAID 5</li>
<li>But the failure problem is solved storing more parity data throughout the array</li>
</ul>
<div><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/300px-RAID_6_svg.png"><img class="size-full wp-image-77 aligncenter" title="300px-RAID_6_svg" src="http://www.sqlclever.com/wp-content/uploads/2012/04/300px-RAID_6_svg.png" alt="" width="300" height="176" /></a></div>
<div></div>
<p><span style="text-decoration: underline;">RAID 0+1 and RAID 10 (Nested RAID Leves)</span></p>
<ul>
<li>Store two identical copies of the data on two separate sets of drive</li>
<li>What is the difference between RAID 0+1 and RAID 10?
<ul>
<li>RAID 0+1: the data is striped and then mirrored
<ul>
<li>Handles only the failure of a single drive in each side</li>
<li><span style="text-decoration: underline;">Best practice for <strong>log files</strong> and <strong>tempdb</strong></span></li>
<ul>
<li>Better protection from hardware failure and better write performance</li>
<li>&#8220;<em>In general RAID 1+0 will provide better throughput for write-intensive applications. The amount of performance gained will vary based on the HW vendor’s RAID implementations. Most common alternative to RAID 1+0 is RAID 5. Generally, RAID 1+0 provides better write performance than any other RAID level providing data protection, including RAID 5.</em>&#8220;</li>
</ul>
</ul>
</li>
<li>RAID 10: The data is mirrored and then striped</li>
<li>
<ul>
<li>Handles the failure of multiple drives in the same array, without loss.</li>
<li><span style="text-decoration: underline;">In write intensive applications such as database log or OLTP environments, is the better choice</span></li>
</ul>
</li>
</ul>
</li>
</ul>
<p><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/220px-RAID_0+1.png"><img class="size-full wp-image-74 aligncenter" title="220px-RAID_0+1" src="http://www.sqlclever.com/wp-content/uploads/2012/04/220px-RAID_0+1.png" alt="" width="220" height="236" /></a><a href="http://www.sqlclever.com/wp-content/uploads/2012/04/220px-RAID_10.png"><img class="alignnone size-full wp-image-75 aligncenter" title="220px-RAID_10" src="http://www.sqlclever.com/wp-content/uploads/2012/04/220px-RAID_10.png" alt="" width="220" height="236" /></a></p>
<p>&nbsp;</p>
<p>So, this is it! I hope it was helpful as an introduction <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>References:<br />
<a title="http://technet.microsoft.com/en-us/library/cc966534.aspx" href="http://technet.microsoft.com/en-us/library/cc966534.aspx" target="_blank">http://technet.microsoft.com/en-us/library/cc966534.aspx</a><br />
<a title="http://en.wikipedia.org/wiki/RAID" href="http://en.wikipedia.org/wiki/RAID" target="_blank">http://en.wikipedia.org/wiki/RAID<br />
</a><a href="http://www.amazon.com/gp/product/0470484284?ie=UTF8&amp;tag=sqlservertroubleshooting-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470484284" target="_blank">Christian Bolton , Justin Langford , Brent Ozar , James Rowland-Jones, Jonathan Kehayias, Cindy Gross, Steven, &#8220;Professional SQL Server 2008 Internals and Troubleshooting&#8221;,  ISBN-10: 0470484284 | ISBN-13: 978-0470484289</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2012/04/02/sql-server-and-storage-raid-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Most used/Unused tables stats</title>
		<link>http://www.sqlclever.com/2012/03/08/most-usedunused-tables-stats/</link>
		<comments>http://www.sqlclever.com/2012/03/08/most-usedunused-tables-stats/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 13:31:52 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=67</guid>
		<description><![CDATA[Here is a very useful query to distinguish the number of hits for each table, based on the index usage. This query can be useful in &#8220;housekeeping&#8221; situations, or on a performance analysis. The information takes in considering seeks, scans and lookups and outputs the date of the last operation of each kind. It&#8217;s important [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a very useful query to distinguish the number of hits for each table, based on the index usage. This query can be useful in &#8220;housekeeping&#8221; situations, or on a performance analysis.</p>
<p>The information takes in considering seeks, scans and lookups and outputs the date of the last operation of each kind.</p>
<p>It&#8217;s important to remark that this statistics are cleaned every time the service is restarted!</p>
<blockquote><p><span style="font-family: Courier New; font-size: x-small;"><span style="color: blue;">SELECT</span> <span style="color: fuchsia;"><em>Object_name</em></span><span style="color: maroon;">(</span><span style="color: maroon;">object_id</span><span style="color: maroon;">)</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_seeks</span><span style="color: maroon;">)</span>       <span style="color: maroon;">user_seeks</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_scans</span><span style="color: maroon;">)</span>       <span style="color: maroon;">user_scans</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_lookups</span><span style="color: maroon;">)</span>     <span style="color: maroon;">user_lookups</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>MAX</em></span><span style="color: maroon;">(</span><span style="color: maroon;">last_user_seek</span><span style="color: maroon;">)</span>   <span style="color: maroon;">last_user_seek</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>MAX</em></span><span style="color: maroon;">(</span><span style="color: maroon;">last_user_scan</span><span style="color: maroon;">)</span>   <span style="color: maroon;">last_user_scan</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>MAX</em></span><span style="color: maroon;">(</span><span style="color: maroon;">last_user_lookup</span><span style="color: maroon;">)</span> <span style="color: maroon;">last_user_lookup</span><br />
<span style="color: blue;">FROM</span>   <span style="color: maroon;">sys</span><span style="color: silver;">.</span><span style="color: maroon;">dm_db_index_usage_stats</span><br />
<span style="color: blue;">WHERE</span>  <span style="color: maroon;">database_id</span> <span style="color: silver;">=</span> <span style="color: fuchsia;"><em>Db_id</em></span><span style="color: maroon;">(</span><span style="color: maroon;">)</span><br />
<span style="color: blue;">GROUP</span>  <span style="color: blue;">BY</span> <span style="color: fuchsia;"><em>Object_name</em></span><span style="color: maroon;">(</span><span style="color: maroon;">object_id</span><span style="color: maroon;">)</span><br />
<span style="color: blue;">ORDER</span>  <span style="color: blue;">BY</span> <span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_seeks</span><span style="color: maroon;">)</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_scans</span><span style="color: maroon;">)</span><span style="color: silver;">,</span><br />
<span style="color: fuchsia;"><em>SUM</em></span><span style="color: maroon;">(</span><span style="color: maroon;">user_lookups</span><span style="color: maroon;">)</span> </span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2012/03/08/most-usedunused-tables-stats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2012 Virtual Launch Event</title>
		<link>http://www.sqlclever.com/2012/03/07/sql-server-2012-virtual-launch-event/</link>
		<comments>http://www.sqlclever.com/2012/03/07/sql-server-2012-virtual-launch-event/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 17:58:47 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=63</guid>
		<description><![CDATA[Hi guys The virtual launch sessions of the SQL Server 2012 are already available! http://www.sqlserverlaunch.com/ I recommend the session about AlwaysOn and ColumnStore Index. Good learning for you]]></description>
			<content:encoded><![CDATA[<p>Hi guys <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The virtual launch sessions of the SQL Server 2012 are already available!</p>
<p><a title="http://www.sqlserverlaunch.com/" href="http://www.sqlserverlaunch.com/" target="_blank">http://www.sqlserverlaunch.com/</a></p>
<p>I recommend the session about <a title="AlwaysOn" href="http://www.sqlserverlaunch.com/WW/theater?sid=630" target="_blank">AlwaysOn</a> and <a href="http://www.sqlserverlaunch.com/WW/theater?sid=633" target="_blank">ColumnStore Index</a>.</p>
<p>Good learning for you <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2012/03/07/sql-server-2012-virtual-launch-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script Component: Migrating a BlobColumn in a Text column (MySQL to SQL Server)</title>
		<link>http://www.sqlclever.com/2012/02/01/migrating-a-blobcolumn-in-a-text-column-mysql-to-sql-server/</link>
		<comments>http://www.sqlclever.com/2012/02/01/migrating-a-blobcolumn-in-a-text-column-mysql-to-sql-server/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 13:38:48 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[Reporting Services]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=55</guid>
		<description><![CDATA[Challenge: Migrate a table in a MySQL database to a table in a database in SQL Server. Problem 1: A column of type &#8220;Text&#8221; on the side of MySQL. Solution 1: Create a column of type &#8220;Text&#8221;, in this case isn&#8217;t Unicode, in SQL Server table side. Problem 2: In the package, I cannot assign [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Challenge:<br />
</strong>Migrate a table in a MySQL database to a table in a database in SQL Server.</p>
<p><strong>Problem 1</strong>:<br />
A column of type &#8220;Text&#8221; on the side of MySQL.<br />
<strong>Solution 1</strong>:<br />
Create a column of type &#8220;Text&#8221;, in this case isn&#8217;t Unicode, in SQL Server table side.</p>
<p><strong>Problem 2</strong>:<br />
In the package, I cannot assign values ​​to respective OutputBuffer column of type &#8220;Text&#8221; (source for SQL Server). The &#8220;ReadOnly error&#8221;.<br />
<strong>Solution 2</strong>:<br />
You should assign values ​​to this type of columns as follows (You should change the encoding type!):</p>
<blockquote><p>OutputBuffer..AddBlobData(Encoding.Default.GetBytes(&#8220;&lt;SOME_STRING&gt;&#8221;);</p></blockquote>
<p><strong>Problem 3:</strong><br />
How to read the contents of a &#8220;Text&#8221; column type (in MySQL side), returning a String?<br />
<strong>Solution 3:</strong><br />
The following strategy should be used:</p>
<blockquote><p>string str_notes = System.Text.Encoding.Unicode.GetString(Row.&lt;COLUMN_NAME&gt;.GetBlobData(0, Convert.ToInt32(Row.&lt;COLUMN_NAME&gt;.Length)));</p></blockquote>
<p>&nbsp;</p>
<p>I hope it helps and save you time <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2012/02/01/migrating-a-blobcolumn-in-a-text-column-mysql-to-sql-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Data vs. DBA</title>
		<link>http://www.sqlclever.com/2012/01/30/data-vs-dba/</link>
		<comments>http://www.sqlclever.com/2012/01/30/data-vs-dba/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:03:44 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=51</guid>
		<description><![CDATA[A DBA is focused in maintain a database system running, accessible and recoverable in any moment. Obviously, the data is the motivation of a database system and have to be safe in all aspects. As commonly known, a database administrator is faced with very sensitive data, and is not easy to know who is responsible [...]]]></description>
			<content:encoded><![CDATA[<p>A DBA is focused in maintain a database system running, accessible and recoverable in any moment. Obviously, the data is the motivation of a database system and have to be safe in all aspects. As commonly known, a database administrator is faced with very sensitive data, and is not easy to know who is responsible for what&#8230;So what are the borders that distinguish the DBA responsibilities?</p>
<p>In summary, is a DBA onus maintains total attention on the following points:</p>
<ul>
<li><strong>Security</strong><br />
The database server security is not a meaning of anti-hacking system (only). Through the operating system is possible to reach the database server and its resources, and through the database server is possible to reach the operation system. For this reason, is extremely important the teamwork between system administrators and database administrators.</li>
<li><strong>Isolation</strong><br />
This point could be a part of security, however is particularly important to isolate the access to each single database in the server, even though it is owned by the same entity.</li>
<li><strong>Recoverability</strong><br />
As the data is stored in database system managed files, it is required (most cases mandatory) for the DBA to maintainto maintain a reliable backup strategy implemented, to recover the databases when is needed.</li>
<li><strong>Confidentiality<br />
</strong>All the applications have to be owned by someone at some point, and only these (or those) people can allow changes in the data and sending chunks of data or even the entire database.</li>
</ul>
<p>&nbsp;</p>
<p>Is normal to a DBA be faced with data corruption. It can be caused by some database engine fail, by a &#8220;wicked&#8221; DML/DDL execution or even by the application itself. To take care of data, and protect the DBA, some important rules have to be created:</p>
<ul>
<li><strong>Data Changes (DML scripts)</strong><br />
Is mandatory to any data change be authorized by the application’s responsible. A DBA cannot change the data without the corresponding permission. Adding to it, every data change have to be requested by the application owner and the DML scripts sent to the DBA team to be approved and executed without online modifications.</li>
<li><strong>Structure Changes (DDL scripts)</strong><br />
A DDL script doesn’t change data directly, however, it can indirectly break the database integrity, corrupt data or carry performance problems in a non-distant future, because of it, a DBA&#8217;s verification before a creation or change of any database object is of high importance subject and must be followed carefully by the DBA.</li>
</ul>
<p>The objective of this article was to demonstrate some ideas, based on experience, of possible points of protection, because as we know, the DBA is always the first in the line of fire&#8230;</p>
<p>Developing each of these point, will help to improve the QoS and protect the DBA team of possible mistakes.</p>
<p>If you have more ideias, critics or suggestions, do not hesitate to contact me!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2012/01/30/data-vs-dba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listing all columns of all tables</title>
		<link>http://www.sqlclever.com/2011/11/11/listing-all-columns-of-all-tables/</link>
		<comments>http://www.sqlclever.com/2011/11/11/listing-all-columns-of-all-tables/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 09:43:12 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[Queries]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=46</guid>
		<description><![CDATA[Hi guys! Here comes a simple script to show a list of all columns of each table in a database. It could be useful to help the know about database model. DECLARE @obj_id INT DECLARE @obj_name VARCHAR(300) DECLARE @columns AS VARCHAR(MAX) IF Object_id(&#8216;tempdb..#tmp_table&#8217;) > 0 BEGIN DROP TABLE #tmp_table END CREATE TABLE #tmp_table ( table_name [...]]]></description>
			<content:encoded><![CDATA[<p>Hi guys!</p>
<p>Here comes a simple script to show a list of all columns of each table in a database.<br />
It could be useful to help the know about database model.</p>
<blockquote>
<p>DECLARE @obj_id INT<br />
DECLARE @obj_name VARCHAR(300)<br />
DECLARE @columns AS VARCHAR(MAX) </p>
<p>IF Object_id(&#8216;tempdb..#tmp_table&#8217;) > 0<br />
  BEGIN<br />
      DROP TABLE #tmp_table<br />
  END </p>
<p>CREATE TABLE #tmp_table<br />
  (<br />
     table_name VARCHAR(300),<br />
     columns    VARCHAR(MAX)<br />
  ) </p>
<p>SET @obj_id=100 </p>
<p>WHILE EXISTS (SELECT TOP 1 1<br />
              FROM   sys.tables<br />
              WHERE  object_id > @obj_id)<br />
  BEGIN<br />
      SELECT TOP 1 @obj_id = object_id,<br />
                   @obj_name = Schema_name(schema_id) + &#8216;.&#8217; + name<br />
      FROM   sys.tables<br />
      WHERE  object_id > @obj_id </p>
<p>      SET @columns=&#8221; </p>
<p>      SELECT @columns = @columns + name + &#8216;, &#8216;<br />
      FROM   sys.columns<br />
      WHERE  object_id = @obj_id<br />
      ORDER  BY name </p>
<p>      INSERT INTO #tmp_table<br />
      SELECT @obj_name,<br />
             Substring(@columns, 0, Len(@columns) &#8211; 1)<br />
  END </p>
<p>SELECT table_name, columns<br />
FROM   #tmp_table<br />
ORDER BY table_name
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2011/11/11/listing-all-columns-of-all-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copying Large Tables</title>
		<link>http://www.sqlclever.com/2011/09/01/copying-large-tables/</link>
		<comments>http://www.sqlclever.com/2011/09/01/copying-large-tables/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 13:33:26 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=37</guid>
		<description><![CDATA[Hi guys! Sorry for the lack of update, but my external disk was stolen with a lot of new pre-made articles inside So, now let&#8217;s start from the start again !! I expect that my lost articles can be useful for someone&#8230; Maybe we will have an ex-robber as DBA! This is &#8220;SQL Clever&#8221; helping [...]]]></description>
			<content:encoded><![CDATA[<p>Hi guys!</p>
<p>Sorry for the lack of update, but my external disk was stolen with a lot of new pre-made articles inside <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>So, now let&#8217;s start from the start again !! <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
I expect that my lost articles can be useful for someone&#8230; Maybe we will have an ex-robber as DBA! This is &#8220;SQL Clever&#8221; helping the world be a better place <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ok, let&#8217;s go to SQL Server!!!</p>
<p>How is the best way to import/export/copy large tables?</p>
<p>Last week I&#8217;d the challenge of copy 512Gb of data, distributed in 5 tables, and it brought me a doubt about the best way to do this. </p>
<p>What is, for me, &#8220;the best way&#8221;?<br />
&#8220;The best way&#8221; is a copy with some characteristics:<br />
- A short time transfer<br />
- Low CPU load<br />
- Controlled use of T-log and tempdb</p>
<p>To reach this, I tryed three solutions. The first was the &#8220;Import/Export Wizard&#8221; from SSMS (SQL Server Management Studio), but in a simulation with 1% of a table did me exclude this hypothesis. I wasted 55 minutes to conclude the task.</p>
<p>After the first &#8220;fail&#8221;, I tried a more inteligent thing: Insert blocks with intermediate commits. It sounds good!</p>
<p>Following, an example:</p>
<p>&#8211; 0 to 1000<br />
BEGIN TRANSACTION </p>
<p>INSERT INTO OrderDetails_copy (ID, Description, Discount)<br />
SELECT ID, Description, Discount<br />
FROM OrderDetails<br />
WHERE  ID BETWEEN 0 AND 1000</p>
<p>COMMIT TRANSACTION </p>
<p>&#8211; 1001 to 2000<br />
BEGIN TRANSACTION </p>
<p>INSERT INTO OrderDetails_copy (ID, Description, Discount)<br />
SELECT ID, Description, Discount<br />
FROM OrderDetails<br />
WHERE  ID BETWEEN 0 AND 1000</p>
<p>COMMIT TRANSACTION </p>
<p>This is a great solution!!! But not for me <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  My tables ID was VarChar!!!!! Nay, ALL THE COLUMNS was VarChar <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Ok&#8230;Thanks to Microsoft, we have BCP utility!<br />
The strategy is:</p>
<p>1) Copy from the database table to a file<br />
bcp &#8220;DATABASE.SCHEMA.TABLE_SOURCE&#8221; out FILENAME.bcp  -S&#8221;INSTANCENAME&#8221; -T -b10000 -n<br />
2) Copy from a file into the database table<br />
bcp &#8220;DATABASE.SCHEMA.TABLE_DESTINATION&#8221; in FILENAME.bcp -S&#8221;INSTANCENAME&#8221; -T -n -b10000</p>
<p>It&#8217;s done! <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
In this case, I&#8217;d used a batch size of 10000 rows, to optimize the process and reach &#8220;the best way&#8221; <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The BCP Utility has a lot of parameters, for more info about BCP:<br />
<a href="http://msdn.microsoft.com/en-us/library/aa174646(v=sql.80).aspx" title="http://msdn.microsoft.com/en-us/library/aa174646(v=sql.80).aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa174646(v=sql.80).aspx</a></p>
<p>I know that each case is a case, each database has its own behavior, each server has different limitations than others, but this article is only a baseline to help </p>
<p>in a startpoint. Maybe you can find/know a better way to do this (SSIS packages?), but here are a simple and efficient way to do the job.</p>
<p>Thank you for reading!<br />
See ya <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2011/09/01/copying-large-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDE (Transparent data encryption)</title>
		<link>http://www.sqlclever.com/2011/07/12/sql_server_tde_transparent_data_encryption/</link>
		<comments>http://www.sqlclever.com/2011/07/12/sql_server_tde_transparent_data_encryption/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 10:47:39 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=32</guid>
		<description><![CDATA[A encriptação é o processo de ofuscar dados através do uso de uma chave ou password. Esta técnica permite tornar os dados inúteis sem a correspondente chave/password. A encriptação não resolve problemas de acesso. No entanto, aumenta a segurança limitando a disponibilidade da informação caso o sistema de segurança falhe. Neste artigo iremos abordar o [...]]]></description>
			<content:encoded><![CDATA[<p>A encriptação é o processo de ofuscar dados através do uso de uma chave ou password. Esta técnica permite tornar os dados inúteis sem a correspondente chave/password. A encriptação não resolve problemas de acesso.</p>
<p>No entanto, aumenta a segurança limitando a disponibilidade da informação caso o sistema de segurança falhe.</p>
<p>Neste artigo iremos abordar o TDE (Transparent data encryption), que é o modelo de encriptação utilizado pelo SQL Server para cifrar arquivos de dados e logs de uma forma transparente, ou seja, sem a necessidade de alteração de código do software ou dos meios de acesso a instância. </p>
<p><strong>Como funciona o TDE?</strong></p>
<p>O método de encriptação TDE cifra instantaneamente a informação contida nos arquivos de log e de dados nas operações de I/O. A criptografia é feita baseada em uma &#8220;database encryption key&#8221; (DEK), que fica registrada na página de boot do banco de dados, o que permite a sua disponibilidade durante o recovery do BD.</p>
<blockquote><p> Mais informações sobre a &#8220;boot page&#8221;: <a href="http://www.sqlskills.com/BLOGS/PAUL/post/Search-Engine-QA-20-Boot-pages-and-boot-page-corruption.aspx">http://www.sqlskills.com/BLOGS/PAUL/post/Search-Engine-QA-20-Boot-pages-and-boot-page-corruption.aspx</a></p></blockquote>
<p> A DEK é uma chave simétrica protegida por um certificado guardado no &#8220;master&#8221; ou por uma chave assimétrica protegida pelo módulo EKM. </p>
<p>O TDE protege os dados nos arquivos de dados e log, o que faz com que sejam cumpridas algumas leis, regulamentos e guias estabelecidos em vários ramos da indústria. Assim, é permitido aos desenviolvedores a utilização dos algorítmos AES e 3DES sem alteração do código do software. </p>
<p>A encriptação é feita ao nível da página, isto é, as páginas de um banco de dados são encriptadas antes de serem escritas no disco e decifradas quando lidas para a memória. </p>
<p>Algumas considerações:</p>
<ul>
<li>O TDE passou a existir a partir do SQL Server 2008 apenas.</li>
<li>O TDE não encripta a comunicação.</li>
<li>O tamanho do banco de dados não irá aumentar com a ativação do TDE.</li>
<li>Backups comprimidos terão pouca efetividade.</li>
<li>Nenhum filegroup pode estar marcado como read-only, caso contrário o processo de ativação do TDE irá falhar.</li>
<li>Os dados FILESTREAM não são criptografados, mesmo quando TDE é habilitado.</li>
<li>A tempdb passa a ser encriptada, se houver pelo menos um banco de dados encriptado na instância. Por este motivo, a performance em BDs não encriptados pode ser prejudicada</li>
<li>Logo após a ativação do TDE é regra a execução do backup do certificado e chaves, caso contrário a base de dados poderá ser perdida em uma situação de desastre.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Usando o TDE</strong></p>
<p>Para ativar o TDE em um banco de dados, deve-se executar o seguinte:</p>
<ol>
<li>Criar uma master key</li>
<li>Criar ou obter um certificado protegido pela master key</li>
<li>Criar uma DEK (databse encryption key) e protege-la com o certificado do ponto 2</li>
<li>Habilitar o uso da criptografia no BD</li>
</ol>
<p><strong> Como fazer isso na prática?</strong></p>
<p>Abaixo passo o código passo-a-passo de como ativar o TDE em um pseudo banco de dados &#8220;Certtest&#8221;. Criei uma pasta &#8220;temp&#8221; no disco &#8220;D&#8221; com objetivo de guardar os backups, que serão usados na segunda parte do exemplo. </p>
<blockquote><p>USE master;</p>
<p>&#8211; Create a master key</p>
<p>CREATE MASTER KEY ENCRYPTION BY PASSWORD = &#8216;masterkey123&#8242;;</p>
<p>&nbsp;</p>
<p>&#8211; Create or obtain a certificate protected by the master key</p>
<p>CREATE CERTIFICATE MyServerCert WITH SUBJECT = &#8216;TDE Certificate&#8217;</p>
<p>GO</p>
<p>&nbsp;</p>
<p>&#8211; Backup Master Key</p>
<p>OPEN MASTER KEY DECRYPTION BY PASSWORD = &#8216;masterkey123&#8242;;</p>
<p>BACKUP MASTER KEY TO FILE = &#8216;d:\temp\MasterKey.dat&#8217;</p>
<p>ENCRYPTION BY PASSWORD = &#8217;123&#8242;;</p>
<p>&nbsp;</p>
<p>&#8211; Backup certificate</p>
<p>BACKUP CERTIFICATE MyServerCert TO FILE = &#8216;d:\temp\MyServerCert.dat&#8217;</p>
<p>WITH PRIVATE KEY (FILE = &#8216;d:\temp\PrivateKey_MyServerCert.dat&#8217;,ENCRYPTION BY PASSWORD = &#8217;123&#8242;)</p>
<p>&nbsp;</p>
<p>&#8211; Backup service master key</p>
<p>BACKUP SERVICE MASTER KEY TO FILE = &#8216;d:\temp\S_Master_Key.dat&#8217; ENCRYPTION BY PASSWORD = &#8217;123&#8242;;</p>
<p>GO</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>use Certtest</p>
<p>go</p>
<p>&#8211; Create a database encryption key and protect it by the certificate</p>
<p>CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128</p>
<p>ENCRYPTION BY SERVER CERTIFICATE MyServerCert</p>
<p>GO</p>
<p>&#8211; Set the database to use encryption</p>
<p>ALTER DATABASE Certtest</p>
<p>SET ENCRYPTION ON;</p>
<p>GO</p></blockquote>
<p> No código acima, além dos passos básicos, foram feitos backups do certificado e chaves, o que garante que não iremos perder o banco de dados, caso haja um problema grave com a instância. </p>
<p>Feito isto, podemos verificar a ativação do TDE através das seguintes queries, que usam DMVs como recurso: </p>
<blockquote><p>USE Master<br />
SELECT DB_NAME(database_id), *<br />
FROM sys.dm_database_encryption_keys</p>
<p>SELECT * FROM sys.certificates</p></blockquote>
<p>&nbsp;</p>
<p>A primeira query devrá retornar duas linhas, com informação sobre o tempdb e Certtest, onde campos de interesse são: key_algorithm (algorítmo usado) e encryptor_thumbprint (hash do certificado que protege a chave). </p>
<p>Na segunda query, são exibidos todos os certificados do servidor. No nosso caso o iremos ver o certificado MyServerCert, que deverá ter o thumbprint igual ao apresentado na query anterior para o BD Certtest.</p>
<p><strong>Restaurar um banco de dados encriptado para outra instância </strong></p>
<p>Um grande problema dos BDs criptografados é a movimentação entre instâncias, por exemplo, um refresh de desenvolvimento. O que acontece é que se o BD está criptografado, a outra instância deverá ter o mesmo certificado e master key. Aqui temos duas opções:</p>
<ul>
<li>Desativar o TDE do banco antes de fazer a cópia e depois reativa-lo, o que não é recomendado.</li>
<li>Restaurar as chaves e certificado na outra instância e manter o TDE ativo</li>
</ul>
<p> A primeira abordagem não é elegante, mas é funcional. A segunda opção é elegante, mas no caso exemplificado (refresh de produção para uma instancia de desenvolvimento) pode fazer com que elementos da equipe de dev tenham acesso ao certificado e chaves de produção, isso porque muitas vezes os desenvolvedores fazem parte da server role Sysadmin na instância de desenvolvimento. Uma forma de dar a volta a este assunto, é restaurar o banco de dados e depois desativar o TDE, apagando o certificado e chaves, ou até mesmo usar uma instância intermédia para copiar o banco encriptado, desativar o TDE e somente depois fazer o refresh. </p>
<p>Independentemente do que for feito, segue o código para restaurar o certificado, as chaves e por fim o banco de dados com o TDE ativo (levando em conta o primeiro exemplo):</p>
<blockquote><p>&#8211; Restore service master key</p>
<p>RESTORE SERVICE MASTER KEY FROM FILE = &#8216;d:\temp\S_Master_Key.dat&#8217;</p>
<p>DECRYPTION BY PASSWORD = &#8217;123&#8242;;</p>
<p>&nbsp;</p>
<p>&#8211; Restore Master Key</p>
<p>RESTORE MASTER KEY FROM FILE = &#8216;d:\temp\MasterKey.dat&#8217;</p>
<p>DECRYPTION BY PASSWORD = &#8217;123&#8242;</p>
<p>ENCRYPTION BY PASSWORD = &#8216;masterkey123&#8242;</p>
<p>&nbsp;</p>
<p>OPEN MASTER KEY DECRYPTION BY PASSWORD = &#8216;masterkey123&#8242;;</p>
<p>            ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;</p>
<p>CLOSE MASTER KEY;</p>
<p>go</p>
<p>&nbsp;</p>
<p>&#8211; Restore certificate</p>
<p>USE Master;</p>
<p>OPEN MASTER KEY DECRYPTION BY PASSWORD = &#8216;masterkey123&#8242;</p>
<p>            CREATE CERTIFICATE MyServerCert FROM FILE = &#8216;d:\temp\MyServerCert.dat&#8217;</p>
<p>            WITH PRIVATE KEY (FILE = &#8216;d:\temp\PrivateKey_MyServerCert.dat&#8217;, DECRYPTION BY PASSWORD = &#8217;123&#8242;);</p>
<p>CLOSE MASTER KEY;</p>
<p>GO</p>
<p>&nbsp;</p>
<p>OPEN MASTER KEY DECRYPTION BY PASSWORD = &#8216;masterkey123&#8242;;</p>
<p>            RESTORE DATABASE [Certtest] FROM  DISK = N&#8217;D:\temp\Certtest.bak&#8217; WITH  FILE = 1, </p>
<p>            MOVE N&#8217;Certtest&#8217; TO N&#8217;&lt;path_de_dados&gt;\Certtest.mdf&#8217;, </p>
<p>            MOVE N&#8217;Certtest_log&#8217; TO N&#8217;&lt;path_de_logs&gt;\Certtest_1.ldf&#8217;, </p>
<p>            NOUNLOAD,  STATS = 10</p>
<p>CLOSE MASTER KEY;</p>
<p>go</p></blockquote>
<p>&nbsp;</p>
<p>Após esta operação, você terá uma cópia do banco de dados com o TDE ativo em outra instância. </p>
<p>Espero com este artigo ter atingido os principais pontos do TDE. Obviamente existe uma infinidade de situações que podem aparecer, como erros no restore do BD criptografado, mas é difícil expor tudo aqui. Caso surja alguma dúvida, sugestão ou correção de algo estarei disponível para ajudar ou atualizar o texto.</p>
<p> Links e referências:<br />
<a href="http://msdn.microsoft.com/en-us/library/bb934049.aspx">http://msdn.microsoft.com/en-us/library/bb934049.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2011/07/12/sql_server_tde_transparent_data_encryption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendendo o MS DTC</title>
		<link>http://www.sqlclever.com/2011/06/27/entendendo-o-ms-dtc/</link>
		<comments>http://www.sqlclever.com/2011/06/27/entendendo-o-ms-dtc/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 01:41:54 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[Cluster]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=22</guid>
		<description><![CDATA[O serviço MS DTC (Distributed Transaction Coordinator) é um componente das versões mais recentes do Windows, que é responsável por coordenar transações que abrangem vários gestores de recursos, como bancos de dados, filas de mensagens e sistemas de arquivos. O MS DTC foi incluído a partir do Windows 2000 e também foi disponibilizado para Windows [...]]]></description>
			<content:encoded><![CDATA[<p>O serviço MS DTC (Distributed Transaction Coordinator) é um componente das versões mais recentes do Windows, que é responsável por coordenar transações que abrangem vários gestores de recursos, como bancos de dados, filas de mensagens e sistemas de arquivos.</p>
<p>O MS DTC foi incluído a partir do Windows 2000 e também foi disponibilizado para Windows NT 4.0. Este recurso desempenha a função de coordenador de transações de arquiteturas COM e .NET. Na terminologia do MS DTC, o diretor (director) é chamado de gerenciador de transações (transaction manager).</p>
<p>No Windows Server 2008, o componente MS DTC suporta clusters ativo/ativo em que o recurso MS DTC em cluster (clustered MS DTC) coordena transações distribuídas em um grupo do cluster Windows.</p>
<p>Existem duas categorias de clusters para Windows Server: ativo/ativo e ativo/passivo.<br />
No ativo/passivo, o nó passivo é utilizado apenas quando o ativo falha, já o ativo/ativo todos os nós são usados.</p>
<p>As últimas versões do Windows Server, como Windows Server 2003 e Windows 2000 Server, suportam o MS DTC em um cluster activo/passivo. Porém, existem limitações. Por suportar apenas um recurso MS DTC por cluster, alguns pontos negativos passaram a transparecer:</p>
<ul>
<li>Podem ocorrer problemas de isolamento, pois aplicativos diferentes compartilham a mesma DTC para a coordenação.<br />
Como apenas um recurso MS DTC serve todo o cluster, se alguma coisa der errado com o cluster DTC, por conta de uma falha aplicacional, todas as aplicações com transações coordenadas através do cluster MS DTC podem ser afetadas.</li>
<li>O desempenho pode ser degradado, por conta da “falta de habilidade” de algumas aplicações em reagir a situações de failover.<br />
Por exemplo, quando um cluster MS DTC deve coordenar uma transação de uma aplicação que não está sendo executada no mesmo nó, pode existir alguma latência na mensagem de coordenação, o que pode gerar um timeout aplicacional.</li>
</ul>
<p>No Windows Server 2008, já é possível a criação de vários DTCs em um failover cluster, seguindo os seguintes passos:</p>
<ol>
<li>Criando múltiplos <em>cluster groups </em>no failover cluster.</li>
<li>Criando um recurso MS DTC para cada um destes grupos.</li>
</ol>
<p>Para se aproveitar ao máximo a potência de processamento do cluster, deve-se criar tantos grupos quantos nós existentes no cluster, e distribuir estes grupos pelos nós disponíveis. Segue-se uma lista de benefícios desta abordagem:</p>
<ul>
<li>A falha de uma aplicação em cluster, não irá necessariamente prejudicar as outras aplicações.<br />
No Windows Server 2008 existe a possibilidade de se criar um recurso MS DTC por cada grupo.</li>
<li>Não existem limitações de configuração para recursos MS DTC em cluster. Como é possível ter uma instância DTC em cada nó, alguns problemas, como a instalação de aplicações COM+ em e sua configuração em cluster foram resolvidos.</li>
<li>Como cada grupo pode ter seu próprio recurso MS DTC, as latências antes existentes praticamente deixam de existir, por este motivo é possível que se note uma melhoria de performance aplicacional.</li>
</ul>
<p>E o que é melhor para o SQL Server? A Microsoft sempre recomendou que não houvessem “misturas” no resource group do SQL Server, especialmente os que alteram as dependências. Porem, o sugerido é criar um recurso DTC por cada instância de SQL Server existente no cluster, adicionar este recurso no grupo da sua respectiva instância e apontar o log para um disco disponível no grupo.<br />
Não é nem um pouco recomendável que o SQL Server ou o SQL Server Agent sejam dependentes do DTC, pois qualquer alteração a nível do DTC, como alterações de propriedades ou até instalações de hotfixes, irá fazer com que os serviços citados sejam reiniciados. Como esta configuração o SQL Server terá um MS DTC dedicado ajudando em transações, que possam gerar bottlenecks, entre servidores .</p>
<p>Alguns fatos:</p>
<ul>
<li>Se não existirem recursos MS DTC no cluster, o SQL Server irá iniciar a conexão pela instância local do MS DTC.</li>
<li>Se existe um recurso MS DTC no cluster, então a primeira instância a ser usada será a padrão, utilizada pelas instâncias SQL Server. A instância MS DTC padrão poderá ser alterada através da <em>console </em>“Component Services Management”.</li>
<li>Se existe um MS DTC no grupo do SQL Server, este será usado.</li>
</ul>
<p>Criando um recurso MS DTC dentro de um grupo SQL Server:</p>
<ol>
<li>No <em>Failover Cluster Management</em>, clique no respectivo <em>resource group </em>com o botão direito do mouse.</li>
<li>Clique em <em>Add resource-&gt;Other resources-&gt;Distributed Transaction Coordinato</em>r.</li>
<li>Crie as dependencias do recurso MS DTC (<em>network name </em>e disco).</li>
<li>Clique com o botão direito sobre o recurso MS DTC e em seguida clique em “<em>Bring Online</em>”</li>
</ol>
<p>Código para testar um transação distribuída (deverá retornar a mensagem “Command(s) completed successfully.”):</p>
<blockquote><p>Begin Distributed transaction;<br />
Commit Transaction;</p></blockquote>
<p> </p>
<p>Guia com a resolução de alguns problemas relacionados com o MS DTC:<br />
<a href="http://www.sqlwebpedia.com/content/msdtc-troubleshooting" target="_blank">http://www.sqlwebpedia.com/content/msdtc-troubleshooting<br />
</a></p>
<p>Fontes:</p>
<ul>
<li><a href="http://technet.microsoft.com/en-us/library/cc730992%28WS.10%29.aspx" target="_blank">http://technet.microsoft.com/en-us/library/cc730992%28WS.10%29.aspx</a></li>
<li><a href="http://blogs.msdn.com/b/sqlserverfaq/archive/2010/06/04/can-i-listen-to-you-mr-msdtc.aspx" target="_blank">http://blogs.msdn.com/b/sqlserverfaq/archive/2010/06/04/can-i-listen-to-you-mr-msdtc.aspx</a></li>
<li><a href="http://weblogs.sqlteam.com/geoffh/archive/2008/07/31/DTC-configuration-for-Windows-2008-SQL-2005-Clusters.aspx" target="_blank">http://weblogs.sqlteam.com/geoffh/archive/2008/07/31/DTC-configuration-for-Windows-2008-SQL-2005-Clusters.aspx</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2011/06/27/entendendo-o-ms-dtc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hello world :)</title>
		<link>http://www.sqlclever.com/2011/06/12/hello-world/</link>
		<comments>http://www.sqlclever.com/2011/06/12/hello-world/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 18:27:03 +0000</pubDate>
		<dc:creator>murilomiranda</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sqlclever.com/?p=1</guid>
		<description><![CDATA[Antes de mais, dou as boas vindas a todos que visitarem este novo blog sobre SQL Server. Meu nome é Murilo Miranda, apenas mais um DBA neste mundo Porém espero que o blog SQL Clever não seja apenas mais um, e sim uma fonte de informação fiável e que principalmente traga algo de positivo aos [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de mais, dou as boas vindas a todos que visitarem este novo blog sobre SQL Server.</p>
<p>Meu nome é <a href="http://www.sqlclever.com/about-me/" target="_blank">Murilo Miranda</a>, apenas mais um DBA neste mundo <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Porém espero que o blog SQL Clever não seja apenas mais um, e sim uma fonte de informação fiável e que principalmente traga algo de positivo aos visitantes.</p>
<p>O objectivo deste blog, não é apenas partilhar os resultados das minhas vivências e desafios na administração de SQL Server, mas também aprender com as dúvidas de terceiros e solidificar o que já conheço, pois acredito que ensinando aprendemos cada vez mais.</p>
<p>Tentarei sempre trazer informação em Português, pois vejo alguma carência na web de bons sites de SQL Server na nossa língua.</p>
<p>Porque SQL Server?</p>
<ul>
<li>Primeiramente porque eu trabalho com SQL Server <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Por ser o DBMS que <a href="http://www.gartner.com/reprints/microsoft/106576.html" target="_blank">mais cresce desde 2001</a></li>
<li>É o produto <a href="http://www.sdtimes.com/content/article.aspx?ArticleID=28814">mais escolhido para novos projetos</a></li>
<li>Software de DBMS <a href="http://databases.about.com/library/weekly/aa060401a.htm">líder em plataforma Windows</a></li>
</ul>
<p>Bem, ao contrário do que possa parecer, não sou um defensor da Microsoft, do Windows ou mesmo do SQL Server&#8230;Admiro Oracle e DB2 por exemplo, mas este é um Blog sobre SQL Server, ok? <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hoje fico por aqui. Espero em breve disponibilizar algo de interessante para vocês.</p>
<p>Até a próxima!</p>
<p>&nbsp;</p>
<p><em>First of all, I welcome everyone on this new blog about SQL Server.</em></p>
<p><em>My name is <a href="http://www.sqlclever.com/about-me/" target="_blank">Murilo Miranda</a>, just one more DBA in this world <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  But I hope that SQL Clever doesn&#8217;t be just one more blog, but a reliable source of information and wich especially bring something positive to you.</em></p>
<p><em>The purpose of this blog is not just share the results of my experiences and challenges in SQL Server administration, but also learn from the doubts of others and solidify what I already know, because I believe that, teaching we learn more.</em></p>
<p><em>I always will try to bring information in Portuguese (and also in English), because I belive in a shortage of good Web sites for SQL Server in my mother tongue.</em></p>
<p><em>Why SQL Server?</em></p>
<ul>
<li><em>Primarily because I work with SQL Server:)</em></li>
<li><em>Because, since 2001, <a href="http://www.gartner.com/reprints/microsoft/106576.html" target="_blank">is the fastest growing DBMS</a></em></li>
<li><em></em><em>It&#8217;s the <a href="http://www.sdtimes.com/content/article.aspx?ArticleID=28814" target="_blank">first choice for new projects</a></em></li>
<li><em>Leader for <a href="http://databases.about.com/library/weekly/aa060401a.htm" target="_blank">Windows platform</a></em></li>
</ul>
<p><em>Well, I am not an advocate of Microsoft, Windows or SQL Server &#8230; I admire Oracle and DB2 for example, but this is a blog about SQL Server, ok? <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p><em>That&#8217;s all for today, I hope to offer something interesting for you soon.</em></p>
<p><em>See ya <img src='http://www.sqlclever.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sqlclever.com/2011/06/12/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

