<?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>code.commongroove.com &#187; T-SQL</title>
	<atom:link href="http://code.commongroove.com/category/t-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://code.commongroove.com</link>
	<description>C#, T-SQL, and general IT mojo</description>
	<lastBuildDate>Thu, 26 Jan 2012 03:00:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>T-SQL: Rebuild all user table indexes dynamically</title>
		<link>http://code.commongroove.com/2011/04/27/t-sql-rebuild-all-user-table-indexes-dynamically/</link>
		<comments>http://code.commongroove.com/2011/04/27/t-sql-rebuild-all-user-table-indexes-dynamically/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 14:17:56 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/?p=282</guid>
		<description><![CDATA[The more complex the schema, the more indexes you probably have on your tables. Here&#8217;s some T-SQL to rebuild all those indexes without having to write out the SQL for each one. DECLARE @TABLE VARCHAR&#40;255&#41; DECLARE @cmd NVARCHAR&#40;500&#41; DECLARE @fillfactor &#8230; <a href="http://code.commongroove.com/2011/04/27/t-sql-rebuild-all-user-table-indexes-dynamically/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The more complex the schema, the more indexes you probably have on your tables. Here&#8217;s some T-SQL to rebuild all those indexes without having to write out the SQL for each one.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">DECLARE</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @cmd NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @fillfactor <span style="color: #993333; font-weight: bold;">INT</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @fillfactor <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">92</span><br />
<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> table_cursor CURSOR<br />
<span style="color: #993333; font-weight: bold;">FOR</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> table_catalog <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'.'</span> <span style="color: #66cc66;">+</span> table_schema <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'.'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">TABLE_NAME</span> <span style="color: #993333; font-weight: bold;">AS</span> full_table_name<br />
<span style="color: #993333; font-weight: bold;">FROM</span> MyDatabase<span style="color: #66cc66;">.</span>INFORMATION_SCHEMA<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">TABLES</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> table_type <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'BASE TABLE'</span><br />
<br />
<span style="color: #993333; font-weight: bold;">OPEN</span> table_cursor<br />
<br />
FETCH <span style="color: #993333; font-weight: bold;">NEXT</span> <span style="color: #993333; font-weight: bold;">FROM</span> table_cursor <span style="color: #993333; font-weight: bold;">INTO</span> @<span style="color: #993333; font-weight: bold;">TABLE</span><br />
WHILE @@FETCH_STATUS <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @cmd <span style="color: #66cc66;">=</span>&nbsp; <span style="color: #ff0000;">'ALTER INDEX ALL ON '</span> <span style="color: #66cc66;">+</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">' '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">'REBUILD WITH (FILLFACTOR = '</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>@fillfactor<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">')'</span><br />
<span style="color: #993333; font-weight: bold;">EXEC</span> <span style="color: #66cc66;">&#40;</span>@cmd<span style="color: #66cc66;">&#41;</span><br />
<br />
FETCH <span style="color: #993333; font-weight: bold;">NEXT</span> <span style="color: #993333; font-weight: bold;">FROM</span> table_cursor <span style="color: #993333; font-weight: bold;">INTO</span> @<span style="color: #993333; font-weight: bold;">TABLE</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
CLOSE table_cursor<br />
DEALLOCATE table_cursor</div></div>
<p>You will most likely want to adjust the fill factor and/or the actual ALTER INDEX statement to suit the indexes that you have defined on your tables.</p>
<p>Also, I don&#8217;t use DBCC DBREINDEX because it has been deprecated by Microsoft.</p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2011/04/27/t-sql-rebuild-all-user-table-indexes-dynamically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL Server: Quick T-SQL to Delete All User Table Data</title>
		<link>http://code.commongroove.com/2011/03/29/ms-sql-server-quick-t-sql-to-delete-all-user-table-data/</link>
		<comments>http://code.commongroove.com/2011/03/29/ms-sql-server-quick-t-sql-to-delete-all-user-table-data/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 15:28:20 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/?p=266</guid>
		<description><![CDATA[Here&#8217;s a quick (hack) way to delete all user table data from a Microsoft SQL Server database using the undocumented procedure sp_MSforeachtable. As the name hints, this procedure repeats a SQL statement against all user tables within a database. This &#8230; <a href="http://code.commongroove.com/2011/03/29/ms-sql-server-quick-t-sql-to-delete-all-user-table-data/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick (hack) way to delete all user table data from a Microsoft SQL Server database using the undocumented procedure <em>sp_MSforeachtable</em>. As the name hints, this procedure repeats a SQL statement against all user tables within a database.</p>
<p>This example assumes all identity columns are seeded at 1. You may not be able to do that in your environment.</p>
<p>Also note, you could use TRUNCATE TABLE, but only if you no foreign key constraints on your tables.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'<br />
EXEC sp_MSforeachtable 'DELETE ?'<br />
EXEC sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'<br />
EXEC sp_MSforeachtable 'IF (OBJECTPROPERTY(object_id(''?''), ''TableHasIdentity'') = 1) DBCC CHECKIDENT(''?'',RESEED,1)'</div></div>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2011/03/29/ms-sql-server-quick-t-sql-to-delete-all-user-table-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a SQL CLR User Defined Function</title>
		<link>http://code.commongroove.com/2011/03/07/creating-a-sql-clr-user-defined-function/</link>
		<comments>http://code.commongroove.com/2011/03/07/creating-a-sql-clr-user-defined-function/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 20:28:07 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/?p=254</guid>
		<description><![CDATA[Starting with SQL Server 2005, Microsoft added the awesome ability to reference .Net assemblies from your T-SQL procedures.  Here&#8217;s a quick 5 step overview on how to get up and running with your code-based User Defined Function. 1) Create a &#8230; <a href="http://code.commongroove.com/2011/03/07/creating-a-sql-clr-user-defined-function/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Starting with SQL Server 2005, Microsoft added the awesome ability to reference .Net assemblies from your T-SQL procedures.  Here&#8217;s a quick 5 step overview on how to get up and running with your code-based User Defined Function.</p>
<p>1) Create a project from the Visual C# SQL CLR Database Project template (just so you can get the correct references and get a test harness going).</p>
<p>2) Add a class containing your UDFs.  This one does a basic Regular Expression comparison:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> MyUdf<br />
<span style="color: #008000;">&#123;</span><br />
<span style="color: #008000;">&#91;</span>Microsoft<span style="color: #008000;">.</span><span style="color: #0000FF;">SqlServer</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Server</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SqlFunction</span><span style="color: #008000;">&#40;</span>IsDeterministic <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span><br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> SqlBoolean FnRegExMatch<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> source, <span style="color: #6666cc; font-weight: bold;">string</span> pattern<span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
Match m <span style="color: #008000;">=</span> Regex<span style="color: #008000;">.</span><span style="color: #0000FF;">Match</span><span style="color: #008000;">&#40;</span>source, pattern,<br />
RegexOptions<span style="color: #008000;">.</span><span style="color: #0000FF;">CultureInvariant</span> <span style="color: #008000;">|</span><br />
RegexOptions<span style="color: #008000;">.</span><span style="color: #0000FF;">IgnoreCase</span> <span style="color: #008000;">|</span><br />
RegexOptions<span style="color: #008000;">.</span><span style="color: #0000FF;">Singleline</span><br />
<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">return</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">Success</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>3) Enable the CLR on your SQL Server instance through the configuration options:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">EXEC</span> sp_configure <span style="color: #ff0000;">'show advanced options'</span> <span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'1'</span><br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
RECONFIGURE<br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
<span style="color: #993333; font-weight: bold;">EXEC</span> sp_configure <span style="color: #ff0000;">'clr enabled'</span> <span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'1'</span><br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
RECONFIGURE<br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
<span style="color: #993333; font-weight: bold;">EXEC</span> sp_configure <span style="color: #ff0000;">'show advanced options'</span> <span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'0'</span>;<br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
<p>4) Add the assembly and then create a reference to your UDF:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> ASSEMBLY <span style="color: #66cc66;">&#91;</span>MyUdfs<span style="color: #66cc66;">&#93;</span><br />
AUTHORIZATION <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #ff0000;">'C:<span style="color: #000099; font-weight: bold;">\S</span>qlServerClr<span style="color: #000099; font-weight: bold;">\M</span>yUdf.dll'</span><br />
<span style="color: #993333; font-weight: bold;">WITH</span> PERMISSION_SET <span style="color: #66cc66;">=</span> SAFE <span style="color: #808080; font-style: italic;">-- we only have &quot;safe&quot; calls in our lib</span><br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>FnRegExMatch<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#40;</span><br />
@<span style="color: #993333; font-weight: bold;">SOURCE</span> nvarchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
@pattern nvarchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4000</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">RETURNS</span> BIT<br />
<span style="color: #993333; font-weight: bold;">WITH</span> <span style="color: #993333; font-weight: bold;">EXECUTE</span> <span style="color: #993333; font-weight: bold;">AS</span> CALLER<br />
<span style="color: #993333; font-weight: bold;">AS</span><br />
EXTERNAL NAME <span style="color: #66cc66;">&#91;</span>MyUdf<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>FnRegExMatch<span style="color: #66cc66;">&#93;</span><br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
<p>5) Now you should be able to call your function:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> dbo<span style="color: #66cc66;">.</span>FnRegExMatch<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'my test string'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\b</span>test<span style="color: #000099; font-weight: bold;">\b</span>'</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Of course this is just the barest of essentials to get you going with SQL CLR UDFs, but I hope it helps!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2011/03/07/creating-a-sql-clr-user-defined-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>T-SQL: Backup All User Databases</title>
		<link>http://code.commongroove.com/2010/08/18/t-sql-backup-all-user-databases/</link>
		<comments>http://code.commongroove.com/2010/08/18/t-sql-backup-all-user-databases/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 14:35:07 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/?p=189</guid>
		<description><![CDATA[Here&#8217;s an easy, generic way to back up all user databases on a SQL Server instance: DECLARE @name VARCHAR&#40;50&#41; -- database name DECLARE @path VARCHAR&#40;256&#41; -- path for backup files DECLARE @fileName VARCHAR&#40;256&#41; -- filename for backup DECLARE @fileDate VARCHAR&#40;20&#41; -- &#8230; <a href="http://code.commongroove.com/2010/08/18/t-sql-backup-all-user-databases/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an easy, generic way to back up all user databases on a SQL Server instance:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">DECLARE</span> @name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- database name</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @path <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- path for backup files</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @fileName <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- filename for backup</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @fileDate <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- used for file name</span><br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> @path <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'D:<span style="color: #000099; font-weight: bold;">\l</span>ocalBackups<span style="color: #000099; font-weight: bold;">\'</span> -- has to be a local path<br />
<br />
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)<br />
<br />
DECLARE db_cursor CURSOR FOR<br />
SELECT name<br />
FROM master.dbo.sysdatabases<br />
WHERE name NOT IN ('</span>master<span style="color: #ff0000;">','</span>model<span style="color: #ff0000;">','</span>msdb<span style="color: #ff0000;">','</span>tempdb<span style="color: #ff0000;">')<br />
<br />
OPEN db_cursor<br />
FETCH NEXT FROM db_cursor INTO @name<br />
<br />
WHILE @@FETCH_STATUS = 0<br />
BEGIN<br />
SET @fileName = @path + @name + '</span>_<span style="color: #ff0000;">' + @fileDate + '</span><span style="color: #66cc66;">.</span>BAK<span style="color: #ff0000;">'<br />
BACKUP DATABASE @name TO DISK = @fileName<br />
<br />
FETCH NEXT FROM db_cursor INTO @name<br />
END<br />
<br />
CLOSE db_cursor<br />
DEALLOCATE db_cursor</span></div></div>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2010/08/18/t-sql-backup-all-user-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stored Procedure to Export a Table via BCP</title>
		<link>http://code.commongroove.com/2010/08/04/stored-procedure-to-export-a-table-via-bcp/</link>
		<comments>http://code.commongroove.com/2010/08/04/stored-procedure-to-export-a-table-via-bcp/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:18:28 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/?p=170</guid>
		<description><![CDATA[If you are looking for a generic way to export table data via BCP, here&#8217;s how: CREATE PROCEDURE &#91;dbo&#93;.&#91;u_ExportDataViaBcp&#93; &#40; @name VARCHAR&#40;100&#41;, -- this is the table (or table function) name to export @file VARCHAR&#40;200&#41;, -- output file @fmt_date INT &#8230; <a href="http://code.commongroove.com/2010/08/04/stored-procedure-to-export-a-table-via-bcp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you are looking for a generic way to export table data via BCP, here&#8217;s how:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> <span style="color: #66cc66;">&#91;</span>dbo<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>u_ExportDataViaBcp<span style="color: #66cc66;">&#93;</span><br />
<span style="color: #66cc66;">&#40;</span><br />
@name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #808080; font-style: italic;">-- this is the table (or table function) name to export</span><br />
@file <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #808080; font-style: italic;">-- output file</span><br />
@fmt_date <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">121</span><span style="color: #66cc66;">,</span><br />
@fmt_decimal <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">128</span><span style="color: #66cc66;">,</span><br />
@fmt_money <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><br />
@fmt_float <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
@quoted BIT <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #808080; font-style: italic;">-- whether or not varchar fields should be quoted on output</span><br />
<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">AS</span><br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> NOCOUNT <span style="color: #993333; font-weight: bold;">ON</span><br />
<br />
<span style="color: #808080; font-style: italic;">--- get the current server instance</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @server NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @server <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span>NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> SERVERPROPERTY<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'servername'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #808080; font-style: italic;">-- get the current db</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @db NVARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @db <span style="color: #66cc66;">=</span> DB_NAME<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- make sure these tmp tables will be unique</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @tmpUniqueId <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpUniqueId <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>NEWID<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- sql that gets executed</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @tmpSql <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8000</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- the temp tables used</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @export_temp <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @export_temp <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'##BcpExportTmp_'</span> <span style="color: #66cc66;">+</span> @tmpUniqueId<br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @export_temp2 <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @export_temp2 <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'##BcpExportTmp2_'</span> <span style="color: #66cc66;">+</span> @tmpUniqueId<br />
<br />
<span style="color: #808080; font-style: italic;">-- Make sure the (global) temp tables have been cleaned up</span><br />
<span style="color: #993333; font-weight: bold;">IF</span> OBJECT_ID<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb..'</span> <span style="color: #66cc66;">+</span> @export_temp<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'DROP TABLE '</span> <span style="color: #66cc66;">+</span> @export_temp<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">IF</span> OBJECT_ID<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb..'</span> <span style="color: #66cc66;">+</span> @export_temp2<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'DROP TABLE '</span> <span style="color: #66cc66;">+</span> @export_temp2<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- in case we have an error</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span> @error <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">200</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- USE the database</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'USE '</span> <span style="color: #66cc66;">+</span> @db <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">';'</span><br />
PRINT @tmpSql<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- Execute the use and the select</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'SELECT * INTO '</span> <span style="color: #66cc66;">+</span> @export_temp <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">' FROM '</span> <span style="color: #66cc66;">+</span> @name &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #ff0000;">';'</span><br />
PRINT @tmpSql<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- Build 2 lists</span><br />
<span style="color: #808080; font-style: italic;">-- 1. column names</span><br />
<span style="color: #808080; font-style: italic;">-- 2. columns converted to nvarchar from their original type</span><br />
<span style="color: #993333; font-weight: bold;">DECLARE</span><br />
@columnNames <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">MAX</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
@columnConversions <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">MAX</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span><br />
@columnNames <span style="color: #66cc66;">=</span><br />
<span style="color: #993333; font-weight: bold;">COALESCE</span><span style="color: #66cc66;">&#40;</span>@columnNames <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">','</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">'['</span> <span style="color: #66cc66;">+</span> column_name <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">']'</span><span style="color: #66cc66;">,</span><br />
@columnConversions <span style="color: #66cc66;">=</span><br />
<span style="color: #993333; font-weight: bold;">COALESCE</span><span style="color: #66cc66;">&#40;</span>@columnConversions &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #ff0000;">','</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #993333; font-weight: bold;">CASE</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> data_type <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'VARCHAR'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'NVARCHAR'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> @quoted <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">''</span><span style="color: #ff0000;">'&quot;'</span><span style="color: #ff0000;">' + ['</span> <span style="color: #66cc66;">+</span> column_name <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'] + '</span><span style="color: #ff0000;">'&quot;'</span><span style="color: #ff0000;">''</span> <span style="color: #808080; font-style: italic;">-- throw some quotes around it</span><br />
<span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #808080; font-style: italic;">-- do some conversion</span><br />
<span style="color: #ff0000;">'CONVERT(VARCHAR(255),['</span> <span style="color: #66cc66;">+</span> column_name <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">']'</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #993333; font-weight: bold;">CASE</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> data_type <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'NUMERIC'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'DECIMAL'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">CASE</span> <span style="color: #993333; font-weight: bold;">WHEN</span> @fmt_decimal <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">,</span> @fmt_decimal<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> data_type <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'MONEY'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'SMALLMONEY'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">CASE</span> <span style="color: #993333; font-weight: bold;">WHEN</span> @fmt_money <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">,</span> @fmt_money<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> data_type <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'DATETIME'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'SMALLDATETIME'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">CASE</span> <span style="color: #993333; font-weight: bold;">WHEN</span> @fmt_date <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">+</span> &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">,</span> @fmt_date<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> data_type <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'FLOAT'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'REAL'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #993333; font-weight: bold;">CASE</span> <span style="color: #993333; font-weight: bold;">WHEN</span> @fmt_float <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">THEN</span> <span style="color: #ff0000;">','</span> <span style="color: #66cc66;">+</span> &nbsp;<span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">CONVERT</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">,</span> @fmt_float<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">ELSE</span> <span style="color: #ff0000;">''</span><br />
<span style="color: #993333; font-weight: bold;">END</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">')'</span><br />
<span style="color: #993333; font-weight: bold;">END</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' AS ['</span> <span style="color: #66cc66;">+</span> column_name <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">']'</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> tempdb<span style="color: #66cc66;">.</span>INFORMATION_SCHEMA<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">COLUMNS</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">TABLE_NAME</span> <span style="color: #66cc66;">=</span> @export_temp<br />
<br />
<span style="color: #808080; font-style: italic;">-- execute select query to insert data and column names into new temp table</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span><br />
<span style="color: #ff0000;">'SELECT '</span> <span style="color: #66cc66;">+</span> @columnNames <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">' '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">'INTO '</span> <span style="color: #66cc66;">+</span> @export_temp2 <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">' '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">'FROM ( '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' SELECT '</span> <span style="color: #66cc66;">+</span> @columnConversions <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">', 2 AS tmpsort FROM '</span> <span style="color: #66cc66;">+</span> @export_temp <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">' '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' UNION ALL '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' SELECT '</span><span style="color: #ff0000;">''</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span>@columnNames<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">','</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">''</span><span style="color: #ff0000;">', '</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'['</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">']'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">''</span><span style="color: #ff0000;">', 1 AS tmpsort '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' ) AS x '</span> <span style="color: #66cc66;">+</span><br />
<span style="color: #ff0000;">' ORDER BY x.tmpsort; '</span>;<br />
<br />
PRINT @tmpSql<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- Execute the BCP to create the file</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'bcp &quot;SELECT * FROM '</span> <span style="color: #66cc66;">+</span> @export_temp2 <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'&quot; queryout &quot;'</span> <span style="color: #66cc66;">+</span> @file <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'&quot; -c -C RAW -t, -T -S'</span> <span style="color: #66cc66;">+</span> @server<br />
<span style="color: #993333; font-weight: bold;">EXEC</span> master<span style="color: #66cc66;">.</span>sys<span style="color: #66cc66;">.</span>xp_cmdshell @tmpSql<br />
<span style="color: #993333; font-weight: bold;">IF</span> @@ERROR &amp;gt; <span style="color: #cc66cc;">0</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @error <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'Couldn'</span><span style="color: #ff0000;">'t execute the bcp: '</span><span style="color: #ff0000;">''</span> <span style="color: #66cc66;">+</span> @tmpSql;<br />
RAISERROR<span style="color: #66cc66;">&#40;</span>@error<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- Make sure the (global) temp tables have been cleaned up</span><br />
<span style="color: #993333; font-weight: bold;">IF</span> OBJECT_ID<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb..'</span> <span style="color: #66cc66;">+</span> @export_temp<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'DROP TABLE '</span> <span style="color: #66cc66;">+</span> @export_temp<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #993333; font-weight: bold;">IF</span> OBJECT_ID<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'tempdb..'</span> <span style="color: #66cc66;">+</span> @export_temp2<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> @tmpSql <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'DROP TABLE '</span> <span style="color: #66cc66;">+</span> @export_temp2<br />
<span style="color: #993333; font-weight: bold;">EXEC</span><span style="color: #66cc66;">&#40;</span>@tmpSql<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
<p>This does use global temp tables as well as xp_cmdshell, but it also gets the job done.</p>
<p>This is a modified version of the suggestion found here:<br />
<a href="http://weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx">http://weblogs.sqlteam.com/mladenp/archive/2006/07/25/10771.aspx</a></p>
<p>Thanks to them for actually doing the hard work!  I just cleaned it up and made it support varied column names, quoted varchar/nvarchar output, and use the current server and database instance.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2010/08/04/stored-procedure-to-export-a-table-via-bcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shrinking your Transaction Log with SQL Server 2008 to Free Disk Space</title>
		<link>http://code.commongroove.com/2010/02/05/shrinking-your-transaction-log-with-sql-server-2008-to-free/</link>
		<comments>http://code.commongroove.com/2010/02/05/shrinking-your-transaction-log-with-sql-server-2008-to-free/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 00:02:53 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/archive/2010/02/04/shrinking-your-transaction-log-with-sql-server-2008-to-free.aspx</guid>
		<description><![CDATA[If you have been used to clearing up disk space on your development and test SQL server instance file systems with SQL Server 2000 or SQL Server 2005 by using the famous TRUNCATEONLY option on your transaction logs, you might be &#8230; <a href="http://code.commongroove.com/2010/02/05/shrinking-your-transaction-log-with-sql-server-2008-to-free/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you have been used to clearing up disk space on your development and test SQL server instance file systems with SQL Server 2000 or SQL Server 2005 by using the famous TRUNCATEONLY option on your transaction logs, you might be disheartened that they have removed this option from SQL Server 2008 (with good reason some might say).</p>
<p>If you do try to use it, you will get the infamous:</p>
<p><span style="font-family: Courier New; color: #ff0000;">&#8216;TRUNCATEONLY&#8217; is not a recognized BACKUP option.</span></p>
<p>To achieve the same effect with SQL Server 2008, you can toggle the recovery mode for the target database and then call your DBCC SHRINKFILE to clear up disk space hogged by your transaction log.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">USE</span> MyDatabase<br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
<span style="color: #993333; font-weight: bold;">ALTER</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> MyDatabase <span style="color: #993333; font-weight: bold;">SET</span> RECOVERY SIMPLE<br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
DBCC SHRINKFILE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'MyDatabase_log'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">GO</span><br />
<span style="color: #993333; font-weight: bold;">ALTER</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> MyDatabase <span style="color: #993333; font-weight: bold;">SET</span> RECOVERY <span style="color: #993333; font-weight: bold;">FULL</span><br />
<span style="color: #993333; font-weight: bold;">GO</span></div></div>
<p>(Of course if you are already using simple recovery, you wouldn&#8217;t need to toggle.)</p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2010/02/05/shrinking-your-transaction-log-with-sql-server-2008-to-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t get caught by ANSI PADDING, VARCHAR, and trailing whitespace!</title>
		<link>http://code.commongroove.com/2010/01/28/dont-get-caught-by-ansi-padding-varchar-and-trailing-whitespace/</link>
		<comments>http://code.commongroove.com/2010/01/28/dont-get-caught-by-ansi-padding-varchar-and-trailing-whitespace/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 01:01:12 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/archive/2010/01/27/dont-get-caught-by-ansi-padding-varchar-and-trailing-whitespace.aspx</guid>
		<description><![CDATA[One thing to be aware of when you have VARCHAR columns and are using ANSI PADDING: trailing whitespace is trimmed and not counted in your equality ( = / &#60;&#62; / LIKE) statements, so you might not get the results you are looking to be &#8230; <a href="http://code.commongroove.com/2010/01/28/dont-get-caught-by-ansi-padding-varchar-and-trailing-whitespace/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One thing to be aware of when you have VARCHAR columns and are using ANSI PADDING: trailing whitespace is trimmed and not counted in your equality ( = / &lt;&gt; / LIKE) statements, so you might not get the results you are looking to be returned from your query.</p>
<p>In the same vein, the len() function will return the same value for two strings if one has trailing whitespace.  If you need to compare those two fields including trailing whitespace values, use datalength() instead.</p>
<p>Here&#8217;s some example T-SQL:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">DECLARE</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">FIELD</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #993333; font-weight: bold;">INSERT</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'some text'</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">INSERT</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'some text &nbsp; &nbsp; &nbsp; '</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">INSERT</span> @<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">' &nbsp; &nbsp;some text'</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- returns 2 :</span><br />
<span style="color: #808080; font-style: italic;">-- trailing spaces trimmed,</span><br />
<span style="color: #808080; font-style: italic;">-- leading spaces count</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'&quot;'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">FIELD</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'&quot;'</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> @<span style="color: #993333; font-weight: bold;">TABLE</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">FIELD</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'some text'</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- also returns 2</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'&quot;'</span> <span style="color: #66cc66;">+</span> <span style="color: #993333; font-weight: bold;">FIELD</span> <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">'&quot;'</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> @<span style="color: #993333; font-weight: bold;">TABLE</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">FIELD</span> <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'some text'</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- shows the difference between len()</span><br />
<span style="color: #808080; font-style: italic;">-- and datalength()</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">,</span> LEN<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">'Length'</span><span style="color: #66cc66;">,</span> DATALENGTH<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">FIELD</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">'DataLength'</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> @<span style="color: #993333; font-weight: bold;">TABLE</span></div></div>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2010/01/28/dont-get-caught-by-ansi-padding-varchar-and-trailing-whitespace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>T-SQL: Change Collation on your LIKE Clause Using COLLATE</title>
		<link>http://code.commongroove.com/2009/07/24/t-sql-change-collation-on-your-like-clause-using-collate/</link>
		<comments>http://code.commongroove.com/2009/07/24/t-sql-change-collation-on-your-like-clause-using-collate/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 22:17:25 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://code.commongroove.com/archive/2009/07/24/t-sql-change-collation-on-your-like-clause-using-collate.aspx</guid>
		<description><![CDATA[Ever have trouble matching unicode letter equivalents in your T-SQL queries? For example, when you want &#8220;Québec&#8221; and &#8220;Quebec&#8221; to be equivalent in your text search query? This is where specifying Accent Insensative Collation (The &#8220;AI&#8221; in all those collation codes) comes &#8230; <a href="http://code.commongroove.com/2009/07/24/t-sql-change-collation-on-your-like-clause-using-collate/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ever have trouble matching unicode letter equivalents in your T-SQL queries? For example, when <span>you want &#8220;Qu<strong>é</strong>bec&#8221; and &#8220;Qu<strong>e</strong>bec&#8221; to be equivalent in your text search query?</span></p>
<p>This is where specifying <strong>Accent Insensative Collation</strong> (The &#8220;AI&#8221; in all those collation codes) comes to the rescue.  If your database is already set to an AI collation, then you are all set already, but if not, change your LIKE statement to use something like the following:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:550px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span><br />
<span style="color: #993333; font-weight: bold;">FROM</span> MyTable <span style="color: #66cc66;">&#40;</span>NOLOCK<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">WHERE</span> MyColumn <span style="color: #993333; font-weight: bold;">COLLATE</span> SQL_Latin1_General_CP1_CI_AI <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%quebec%'</span></div></div>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.commongroove.com/2009/07/24/t-sql-change-collation-on-your-like-clause-using-collate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

