<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblogcasts.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Piotr Rodak</title><subtitle type="html">if datepart(dw, getdate()) in (6, 7)&lt;br /&gt;
	&lt;b&gt;use pubs&lt;/b&gt;;

</subtitle><id>http://sqlblogcasts.com/blogs/piotr_rodak/atom.aspx</id><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/default.aspx" /><link rel="self" type="application/atom+xml" href="http://sqlblogcasts.com/blogs/piotr_rodak/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2007-10-23T21:55:00Z</updated><entry><title>ETL performance test - parallel package execution</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/06/13/etl-performance-test-parallel-package-execution.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/06/13/etl-performance-test-parallel-package-execution.aspx</id><published>2009-06-12T23:38:00Z</published><updated>2009-06-12T23:38:00Z</updated><content type="html">I was recently busy with testing performance of our ETL process. Each day we process a number of independent feeds, which will increase in the future. These feeds contain usually similar number of rows. At present we have over 100 hundred feeds that are run daily. We have implemented a C# application that executes SSIS packages programatically, adjusting their various settings and setting some variables at run time. One of tests that we perform is to run all feeds in one go. Obviously, it is not...(&lt;a href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/06/13/etl-performance-test-parallel-package-execution.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=11847" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="SSIS" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/SSIS/default.aspx" /><category term="performance" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/performance/default.aspx" /><category term="ETL" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/ETL/default.aspx" /><category term="errors" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/errors/default.aspx" /></entry><entry><title>BCP and numeric data field with scientific notation</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/05/17/bcp-and-numeric-data-field.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="7225" href="http://sqlblogcasts.com/blogs/piotr_rodak/attachment/11680.ashx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/05/17/bcp-and-numeric-data-field.aspx</id><published>2009-05-16T23:49:00Z</published><updated>2009-05-16T23:49:00Z</updated><content type="html">There is a known issue in SQL Server 2005 with importing data using bcp.exe or BULK INSERT methods from character files that contain numeric values written using scientific notation, like 2.044E10. It was not a problem in versions prior to 2005 because bcp for SQL Server 200 and 7.0 converted such values implicitly. Beginning with SQL Server 2005, BCP follows the same rules when converting data from input files as CONVERT does. Unfortunately, CONVERT doesn&amp;#39;t understand scientific notation if...(&lt;a href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/05/17/bcp-and-numeric-data-field.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=11680" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="t-sql" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/t-sql/default.aspx" /><category term="format files" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/format+files/default.aspx" /><category term="bulk insert" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/bulk+insert/default.aspx" /><category term="scientific notation" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/scientific+notation/default.aspx" /><category term="data import" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/data+import/default.aspx" /><category term="bcp" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/bcp/default.aspx" /><category term="bug" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/bug/default.aspx" /></entry><entry><title>MARS - does anyone use it?</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/04/08/mars-does-anyone-use-it.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/04/08/mars-does-anyone-use-it.aspx</id><published>2009-04-08T20:18:00Z</published><updated>2009-04-08T20:18:00Z</updated><content type="html">I read recently about MARS - Multiple Active Result Sets, functionality that came with SQL Server 2005. I tried to find some &amp;#39;real life&amp;#39; example of using MARS. Most of the resources I found showed examples on AdventureWorks database and they were, to say the least, showing how NOT to access the database. For example this article by Lawrence Moroney, shows two ways of updating inventory on AdventureWorks database. The first way requires opening the connection twice, once to read order details...(&lt;a href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/04/08/mars-does-anyone-use-it.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=11540" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="t-sql" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/t-sql/default.aspx" /><category term="MARS" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/MARS/default.aspx" /><category term="c#" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/c_2300_/default.aspx" /><category term="data access" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/data+access/default.aspx" /></entry><entry><title>Generate Create Database Snapshot script</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/03/26/generate-create-database-snapshot-script.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/03/26/generate-create-database-snapshot-script.aspx</id><published>2009-03-26T16:58:00Z</published><updated>2009-03-26T16:58:00Z</updated><content type="html">This post is about yet another way of skinning a cat. Recently I &amp;#39;discovered&amp;#39; usefulness of database snapshots. I find them extremely useful for testing environments, where it is important to be able to revert to initial state of environment in case of any issues. One thing that never stops amusing me though is, that SQL Server Management Studio 2005 doesn&amp;#39;t provide simple things as &amp;#39;Create snapshot&amp;#39; of selected database for example (There are other missing things of course!)...(&lt;a href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2009/03/26/generate-create-database-snapshot-script.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=11487" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="t-sql" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/t-sql/default.aspx" /></entry><entry><title>Numbers table</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2008/11/09/numbers-table.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2008/11/09/numbers-table.aspx</id><published>2008-11-09T20:33:00Z</published><updated>2008-11-09T20:33:00Z</updated><content type="html">&lt;p&gt;I haven&amp;#39;t been here for a while.. Quite busy time in my work, and also a bit of laziness, let&amp;#39;s be honest ;)&lt;/p&gt;&lt;p&gt;There are a few things that I came across druring last few months. I will try to write about them in following posts.&lt;/p&gt;&lt;p&gt;Today I would like to write about Numbers or Tally table. The idea of having a table that contains only numbers and is used in various scenarios is not entirely new. Jeff Moden&amp;nbsp; wrote an &lt;a href="http://www.sqlservercentral.com/articles/TSQL/62867/" title="Tally table" target="_blank"&gt;excellent article&lt;/a&gt; that contains a few ideas about how to use the tally table. These are really only a few samples and I would like to know about other implementations. I personally used one of the ideas from the article to implement string split functionality for parameters passed as CSV arrays. You may like them or not, but in some cases it is still much better to pass such a list than to do some twisted programming on DAL or business layer.&lt;/p&gt;&lt;p&gt;So, the split string is quite same as in Jeff&amp;#39;s article. I wrapped the functionality in UDF that returns table. The code requires that the list of values begins and ends with commas. I have lists of values that do not follow this requirement. Since I wanted to have single statement UDF and also pretty simple and clean way of calling it, I decided to use CTE to modify the parameter value so it is suitable for the split string code:&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New CE" size="2"&gt;C&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;REATE&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;function&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; [Admin]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;[fnListToTable]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;@list &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;),&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @separator &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;10&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;))&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;returns&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;table&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;as&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;return&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000" face="Courier New" size="2"&gt;--splits list of strings into a table. Uses Admin.tTally as indexer.&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;with&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ParamCte&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;GroupIDs&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;as&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/b&gt;&lt;/span&gt;

&lt;b&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;select&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @separator &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @list &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @separator&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;SELECT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;SUBSTRING&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;GroupIDs&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Number&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;CHARINDEX&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font face="Courier New" size="2"&gt;@separator&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;GroupIDs&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Number&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)-&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Number&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;-&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Field&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;FROM&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Admin&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;tTally&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;b&gt;ParamCte&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;WHERE&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Number &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;LEN&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;@list&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#808080" face="Courier New" size="2"&gt;and&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;SUBSTRING&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;GroupIDs&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;Number&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @separator&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;The other application for tally table I found very useful is to enable decoding of bit masks. I have a table that stores some simple scheduling information.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;CREATE&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;TABLE&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; [Control]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;[tFeedSchedule]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[ScheduleId] [int] &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;IDENTITY&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NOT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NULL,&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[FeedId] [int] &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NOT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NULL,&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[DaysOfWeek] [tinyint] &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NOT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NULL,&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[WindowOpen] [smallint] &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NOT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NULL,&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[WindowClose] [smallint] &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NOT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;NULL,&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;CONSTRAINT&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; [PK_tFeedSchedule] &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;PRIMARY&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;KEY&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;CLUSTERED&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;[ScheduleId] &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;ASC&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;

&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;&lt;span&gt;&lt;/span&gt;&lt;p&gt;&amp;nbsp;The DaysOfWeek column contains days of week when certain event is due to occur and WindowOpen and WindowClose numbers of minutes from midnight. Days of week are encoded as bit flags starting from Monday at 00000001 binary and ending at Sunday at 01000000 binary. There are some functions in my database that return real dates steming from the schedules defined in the above table. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;The function below is one of such functions: It returns table with time &amp;#39;windows&amp;#39; for specific feeds to come in week timeframe. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;CREATE&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;function&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; [Control]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;[fnGetScheduleDaysForFeed]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;@FeedID &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;int&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;null)&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;returns&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;table&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;as&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;return&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000" face="Courier New" size="2"&gt;--Returns list of days feed is scheduled to run in with their time windows&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;select&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; FeedID&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;@@datefirst&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 1 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Number &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Number &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 1 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;as&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; [DayOfWeek]&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowOpen WindowOpenMinutes&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowClose WindowCloseMinutes&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/span&gt;

&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff00ff" face="Courier New" size="2"&gt;convert&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;Dateadd&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;minute&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowOpen&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;DATEADD&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;day&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;DATEDIFF&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;day&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;GETDATE&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;()))),&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 108&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowOpenTime&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff00ff" face="Courier New" size="2"&gt;convert&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;Dateadd&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;minute&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowClose&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;DATEADD&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;day&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;DATEDIFF&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;day&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;GETDATE&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;()))),&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 108&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowCloseTime&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowOpen &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; WindowClose &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 1 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; CrossMidnight&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;from&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Control&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;tFeedSchedule a &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;inner&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;join&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Admin&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;tTally b&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;on&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; a&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;DaysOfWeek &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;amp;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;power&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;2&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Number&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;-&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;where&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; Number &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 8 &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;and&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;@FeedID &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;is&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;null&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;or&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; a&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;FeedID &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; @FeedID&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;

&lt;br /&gt;&lt;span&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;&amp;nbsp;There are many more possible applications of numbers table. I wonder, if it would be useful to create a library of such code snippets or ideas? If you know links to such resources, please put them in comments.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10992" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="Numbers table" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/Numbers+table/default.aspx" /><category term="Tally table" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/Tally+table/default.aspx" /></entry><entry><title>SSIS truncating BLOB fields from Sybase</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2008/04/19/ssis-truncating-blob-fields-from-sybase.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2008/04/19/ssis-truncating-blob-fields-from-sybase.aspx</id><published>2008-04-19T11:17:00Z</published><updated>2008-04-19T11:17:00Z</updated><content type="html">&lt;p&gt;Last week I struggled with issue that had been causing many problems in our work. We have implemented SSIS packages that synchronize Sybase and SQL Server databases. Some of tables contain text (on Sybase) columns that have to be passed to varchar(max) columns on SQL Server. It wasn&amp;#39;t apparent on the beginning, that only the first 32k of data are passed though. &lt;/p&gt;&lt;p&gt;I looked for an answer in many places. I tried to see if moving blobs via temporary files will help. Nope. Max size of such file was also 32k. Then I looked at script components, trying to find out if there is possibly an error truncating these data. There is a function &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.dts.pipeline.pipelinebuffer.getblobdata.aspx"&gt;GetBlobData&lt;/a&gt; that reads data from source. Max length of data returned by this function was 32k also. I thought, maybe it is max size of internal buffer? This function takes three parameters: column index, starting index of data to read and data length. I tried to implement moving window, and call this method in a loop, till all data are read, but no success. It was reading only 32k and not a single byte more. I knew the actual length of data because I read it in source query on Sybase side. &lt;/p&gt;&lt;p&gt;Looking for information, I came across &lt;a href="http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/5671;pt=5072/*"&gt;textsize&lt;/a&gt; variable. Well, this seemed to be promising. But how to apply change to it in SSIS? If I put SET TEXTSIZE 100000 in front of the feeding select in data source, even though there was no syntax error, data source could no longer retrieve column information and the whole data flow couldn&amp;#39;t work. I tried to create &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141003.aspx"&gt;Execute SQL task&lt;/a&gt; before &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141122.aspx"&gt;Data Flow task&lt;/a&gt;, but it didn&amp;#39;t help. It seemed that what works when you connect using any sort of console, doesn&amp;#39;t work if OLE DB is used.&amp;nbsp; I reached to my mossy memory banks - I remembered that about 8 years ago, when I worked with COM+, I read about various parameters that OLEDB can accept, depending on the driver used. So, I found that indeed you can modify textsize in &lt;a href="http://manuals.sybase.com/onlinebooks/group-sd/sdg1251e/oledb/@Generic__BookTextView/2072"&gt;OLE DB&lt;/a&gt; parameters. The last issue was how to apply it to connection manager in SSIS? The edit dialog doesn&amp;#39;t contain place to specify this value. Extended properies did not work. If you append TextSize=10000000; to connection string in properties of connection manager, it forgets the password. If you open the Edit window, the connection string is generated from scratch and you loose the setting. Catch 22.&lt;/p&gt;&lt;p&gt;We have a solution that reads connection strings from external windows config file. I added the parameter to the connection string in this file and verified, that this is really the right way - BLOB fields where passed properly. But in design time, though it wasn&amp;#39;t that important, I wanted to find a way how to pass this parameter and maintain usable connection manager. I tried to imagine how such edit window of connection manager may work. When you press OK, all properties you set are potentially verified and connection string is created. I hoped that the verification is not too strong, because I decided to attach TextSize parameter to one of properties in the dialog. I chose server name :). Guess what - there is no verification whatsoever of the server name on that dialog. So, my server name is now like&lt;/p&gt;&lt;p&gt;sybase_server,5335;TextSize=100000;&lt;/p&gt;&lt;p&gt;It works. It turned out that the solution is easy (as ususal), just pity that I spent so much time trying to nail it down.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10336" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="truncate" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/truncate/default.aspx" /><category term="textsize" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/textsize/default.aspx" /><category term="Sybase" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/Sybase/default.aspx" /><category term="BLOB" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/BLOB/default.aspx" /><category term="OLE DB" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/OLE+DB/default.aspx" /><category term="SSIS" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/SSIS/default.aspx" /></entry><entry><title>changing collation of all columns without dropping them</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/12/14/changing-collation-of-all-columns-without-dropping-them.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/12/14/changing-collation-of-all-columns-without-dropping-them.aspx</id><published>2007-12-14T23:25:00Z</published><updated>2007-12-14T23:25:00Z</updated><content type="html">&lt;p&gt;Just this week I had opportunity to change collation of all objects using it in a database without dropping it. I like to computers to do what computers should do - work that is :). So I created a query that gave me script changing collation of all columns using collation - varchar, char and so on.&lt;/p&gt;&lt;p&gt;I have got 3900 lines altering tables and columns. Nice, but not so easy, this script was not working at first F5 - you can't&amp;nbsp; change collation of a column that is a part of constraint or index - you have do drop them. So I had to wade through the script and add statements dropping constraints and indexes and recreating them after modifications had been done. To find tables that were causing problems I simply executed script - execution was stopped on column whose collation could not be changed and I had exact information what should be done.&lt;/p&gt;&lt;p&gt;This is the query that generates alter table .. alter column statements:&lt;/p&gt;&lt;div&gt;


&lt;p&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;select&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'alter table ['&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; s&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'].['&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'] alter column ['&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'] '&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" size="2"&gt;ty&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ty&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;not&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;in&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'text'&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'sysname'&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'('&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;max_length &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ty&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;not&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;in&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'nchar'&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'nvarchar'&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;convert&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;max_length&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;convert&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;max_length&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;/&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;2&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'max'&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff0000" face="Courier New" size="2"&gt;')'&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;''&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;' collate SQL_Latin1_General_CP1_CI_AS '&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff" face="Courier New" size="2"&gt;case&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;when&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;is_nullable &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; 0 &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;then&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'NOT '&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;else&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;''&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;end&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;+&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'NULL'&lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;from&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;sys.columns&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;inner&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;join&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;sys.types&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ty &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;on&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;system_type_id &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ty&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;system_type_id&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;inner&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;join&lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#808080" face="Courier New" size="2"&gt;(&lt;/font&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;sys.objects&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;inner&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;join&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#008000" face="Courier New" size="2"&gt;sys.schemas&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; s &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;on&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;schema_id&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; s&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;schema_id&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;)&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;on&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;object_id&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font color="#ff00ff" face="Courier New" size="2"&gt;object_id&lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;where&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;type&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;=&lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'U'&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;and&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;collation_name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;is&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;not&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;null&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;and&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; ty&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name &lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Courier New" size="2"&gt;'sysname'&lt;/font&gt;&lt;/span&gt;

&lt;br&gt;&lt;span&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;order&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Courier New" size="2"&gt;by&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; s&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; t&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;name&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;,&lt;/font&gt;&lt;font face="Courier New" size="2"&gt; c&lt;/font&gt;&lt;font color="#808080" face="Courier New" size="2"&gt;.&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;column_id&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;p&gt;&amp;nbsp;I saved loads of time thanks to this script.&lt;br&gt;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=5557" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="collation" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/collation/default.aspx" /><category term="t-sql" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/t-sql/default.aspx" /></entry><entry><title>csv list of elements as parameter for stored procedure</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/24/csv-list-of-elements-as-parameter-for-stored-procedure.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/24/csv-list-of-elements-as-parameter-for-stored-procedure.aspx</id><published>2007-11-24T23:42:00Z</published><updated>2007-11-24T23:42:00Z</updated><content type="html">&lt;P&gt;A&amp;nbsp;while ago, Tony Rogerson showed a way how to &lt;A class="" href="http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/08/05/passing-an-array-csv-to-a-stored-procedure-with-data-validation-no-loops-no-self-joins-just-replace.aspx"&gt;pass a list of integers (csv)&lt;/A&gt;&amp;nbsp;to stored procedure. Approach of creating a script and executing it is OK for smaller amounts of data. I thought, that maybe, as xml is a form of text after all, it would be more appropriate? I crafted a stored proc based on Tony's code that instead of generating a script, generates an xml stream that is subsequently used in query inserting rows. This method is also resistant to sql injection attemtpts so such stored proc is not a &lt;A class="" href="http://xkcd.com/327/"&gt;'bobby tables'&lt;/A&gt;&amp;nbsp;one :)&lt;/P&gt;
&lt;P&gt;Here's the code of the procedure:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;create&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;table&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; tStoredInts &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;afield &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;go&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;create&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;proc&lt;/FONT&gt;&lt;FONT size=2&gt; csv_to_table2&lt;/P&gt;
&lt;P&gt;@csv &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;max&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;AS&lt;/P&gt;
&lt;P&gt;BEGIN&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;/***&lt;/P&gt;
&lt;P&gt;Insert numbers from a CSV to tStoredInts table &lt;/P&gt;
&lt;P&gt;***/&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;declare&lt;/FONT&gt;&lt;FONT size=2&gt; @handle &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;--xml document handle&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @csv &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;ltrim&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;rtrim&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@csv&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;IF&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;RIGHT(&lt;/FONT&gt;&lt;FONT size=2&gt; @csv&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 1 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;','&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;-- If last character is a comma remove it it&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @csv &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;left(&lt;/FONT&gt;&lt;FONT size=2&gt;@csv&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;len&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@csv&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @xml &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;max&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @xml &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;REPLACE&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt; @csv&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;','&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'&amp;lt;/o&amp;gt;&amp;lt;o&amp;gt;'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @xml &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'&amp;lt;numbers&amp;gt;&amp;lt;o&amp;gt;'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; @xml &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'&amp;lt;/o&amp;gt;&amp;lt;/numbers&amp;gt;'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;exec&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;sp_xml_preparedocument&lt;/FONT&gt;&lt;FONT size=2&gt; @handle &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;output&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @xml &lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;--insert elements from xml&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;insert&lt;/FONT&gt;&lt;FONT size=2&gt; tStoredInts &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;afield&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;select&lt;/FONT&gt;&lt;FONT size=2&gt; field &lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;from&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;openxml&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@handle&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'/numbers/o'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;with&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;field &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'.'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;exec&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;sp_xml_removedocument&lt;/FONT&gt;&lt;FONT size=2&gt; @handle&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;end&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;--proc&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=4687" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="t-sql" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/t-sql/default.aspx" /></entry><entry><title>concurrency control explained</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/19/concurrency-control-explained.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/19/concurrency-control-explained.aspx</id><published>2007-11-19T21:16:00Z</published><updated>2007-11-19T21:16:00Z</updated><content type="html">&lt;p&gt;So, I just came from seminar led by &lt;a href="http://sqlblog.com/blogs/kalen_delaney/default.aspx"&gt;Kalen Delaney&lt;/a&gt;, guru of SQL Server (any version), organized by Ireland SQL Technology &lt;a href="http://sql.mtug.ie"&gt;User Group&lt;/a&gt;. The whole event was sponsored and hosted by Microsoft. I must say, I am impressed. Kalen was able to sort out and put into proper drawers all bits of knowledge I had before and stuff a whole lotta more into my head. She talked about concurrency, transaction isolation levels, differences between optimistic and pessimistic locking, blocking and diagnostic tools, and at the end about gotchas related to (nolock) hint, overused so eagerly by many devs (I confess, I used this hint myself ;))&lt;/p&gt;&lt;p&gt;You can find tons of good info about execution plans and isolation levels at Craig Friedman's blog &lt;a href="http://blogs.msdn.com/craigfr/"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Overall, it was a very interesting day!&lt;/p&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=4335" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="events" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/events/default.aspx" /></entry><entry><title>sorting trap</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/03/sorting-trap.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/11/03/sorting-trap.aspx</id><published>2007-11-03T21:03:00Z</published><updated>2007-11-03T21:03:00Z</updated><content type="html">&lt;p&gt;So, you might think that sorting within ASCII range is predictable and order defined by ASCII table is finite? You are on safe side when you do not use unicode nor 'fancy' letters? Well.. you are wrong.&lt;/p&gt;
&lt;p&gt;Recently I have been working on comparison of data stored in Sybase and SQL. Database structure is the same, I have script pulling data from Sybase to SQL Server and when this script is finished, data are meant to be identical of course. So I was thrown when we found out that rows can be returned in some cases in different order on both databases. That is, when a varchar field contained two underscore characters in a row, rows sorted by this field could be returned in different order.&lt;/p&gt;
&lt;p&gt;After some thinking and looking for information I was able to create script that can reproduce this behavior on SQL Server.&lt;/p&gt;
&lt;p&gt;First, create table and fill it with some data:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;create&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;table&lt;/font&gt;&lt;font size="2"&gt; testtable&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" size="2"&gt;
&lt;p&gt;(&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;afield &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;25&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" size="2"&gt;
&lt;p&gt;)&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;go&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;insert&lt;/font&gt;&lt;font size="2"&gt; testtable &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;afield&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;'A_'&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;union&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;all&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;'A__'&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;union&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;all&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;'A_B'&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;union&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;all&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;'A__B'&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Now select rows ordering by afield:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; afield &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;font size="2"&gt; testtable &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;order&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;by&lt;/font&gt;&lt;font size="2"&gt; afield&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The results are&amp;nbsp;pretty 'reasonable':&lt;/p&gt;&lt;font size="1"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font size="1"&gt;afield&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;-------------------------&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;A_&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;A__&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;A__B&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;A_B&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Ok, but Sybase returned different order:&lt;/p&gt;&lt;font size="1"&gt;
&lt;p&gt;afield&lt;/p&gt;
&lt;p&gt;-------------------------&lt;/p&gt;
&lt;p&gt;A_&lt;/p&gt;
&lt;p&gt;A_B&lt;/p&gt;
&lt;p&gt;A__&lt;/p&gt;
&lt;p&gt;A__B&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;The mystery is hidden within collation of the field. Character fields derive default collation from database setting, which in turn gets collation if it is not specified explicitly from server settings.&lt;/p&gt;
&lt;p&gt;If you run following query, you will get results identical with the previous result:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;alter&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;table&lt;/font&gt;&lt;font size="2"&gt; testtable &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;alter&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;column&lt;/font&gt;&lt;font size="2"&gt; afield &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;varchar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;25&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;collate&lt;/font&gt;&lt;font size="2"&gt; Latin1_General_Bin&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This query applies explicit collation fo afield, overriding&amp;nbsp;in this way default collation.&amp;nbsp;You can check collation of afield using this query:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;select&lt;/font&gt;&lt;font size="2"&gt; column_id&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;name&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt; collation_name &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;from&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008000" size="2"&gt;sys.columns&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;where&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;object_id&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;object_id&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;'testtable'&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="1"&gt;
&lt;/font&gt;&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;font size="1"&gt;column_id&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;name&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;collation_name&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;font size="1"&gt;----------- ----------- -------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;font size="1"&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Latin1_General_BIN&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This was the collation after change, compliant with Sybase collation in my case.&lt;/p&gt;
&lt;p&gt;Default collation on my SQL&amp;nbsp;Server&amp;nbsp;is&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;column_id&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;name&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;collation_name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;----------- --------- ------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SQL_Latin1_General_CP1_CI_AS&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As you see, collation setting may affect sort order of fields which do not contain unicode characters. When I run the same query on both database engines, I get mostly same results with exception of values containing multiple '_' characters. The solution is simple: specify collation of character fields to collation compatible with settings of the other database server.&lt;/p&gt;
&lt;p&gt;Note that modifying default collation of database after tables are created does not affect collation of these fields. You can't also change collation in a column if this column is part of an index. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=3375" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="tips and tricks" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/tips+and+tricks/default.aspx" /><category term="collation" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/collation/default.aspx" /></entry><entry><title>distributed transactions and triggers</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/10/29/distributed-transactions-and-triggers.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/10/29/distributed-transactions-and-triggers.aspx</id><published>2007-10-29T20:37:00Z</published><updated>2007-10-29T20:37:00Z</updated><content type="html">&lt;p&gt;Last week I came across an interesting issue. &lt;/p&gt;
&lt;p&gt;If you have a FOR INSERT trigger on a table and you want to store some information on a linked server, the transaction the trigger is running within is automatically expanded to distributed mode. This creates some problems. First, you have to have Distributed Transaction Coordinator running on your machine. Second, even this does not mean you will succeed, as not all providers support distributed transactions protocols. We will see this further in this post.&lt;/p&gt;
&lt;p&gt;First, create a linked server that will point to an Excel workbook on local disk, for simplicity sake.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @RC &lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @server &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @srvproduct &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @provider &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @datasrc &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4000&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @location &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4000&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @provstr &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4000&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @catalog &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- Set parameter values&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @server &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;XLTEST&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @srvproduct &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;Excel&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @provider &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;Microsoft.Jet.OLEDB.4.0&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @datasrc &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;c:\LSBook.xls&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @provstr &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;Excel 8.0&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @RC &lt;span style="color:gray;"&gt;=&lt;/span&gt; [master]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[sp_addlinkedserver] @server&lt;span style="color:gray;"&gt;,&lt;/span&gt; @srvproduct&lt;span style="color:gray;"&gt;,&lt;/span&gt; @provider&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@datasrc&lt;span style="color:gray;"&gt;,&lt;/span&gt; @location&lt;span style="color:gray;"&gt;,&lt;/span&gt; @provstr&lt;span style="color:gray;"&gt;,&lt;/span&gt; @catalog&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Create LSBook.xls file on your drive first. In first row, in first two columns write afield and bfield:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://somemypics.eu/albums/userpics/excel1.jpg" style="width:413px;height:368px;" height="368" width="413" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Now, create a test table and trigger:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;use&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; testdb&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:fuchsia;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;dbo.testtable&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;is&lt;/span&gt; &lt;span style="color:gray;"&gt;not&lt;/span&gt; &lt;span style="color:gray;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;drop&lt;/span&gt; &lt;span style="color:blue;"&gt;table&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;table&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;afield &lt;span style="color:blue;"&gt;int&lt;/span&gt; &lt;span style="color:blue;"&gt;identity&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;not&lt;/span&gt; &lt;span style="color:gray;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;trigger&lt;/span&gt; trg_testtrg1 &lt;span style="color:blue;"&gt;on&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;for&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;insert&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; xltest&lt;span style="color:gray;"&gt;...&lt;/span&gt;sheet1$ &lt;span style="color:gray;"&gt;(&lt;/span&gt;afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; inserted&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;print&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:red;"&gt;&amp;#39;inserted &amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39; row(s)&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Finally, execute some statements to see what happens:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue1&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue2&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;from&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And the result is.. &lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Msg 8501, Level 16, State 3, Procedure trg_testtrg1, Line 6&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;MSDTC on server &amp;#39;VAMILOXP&amp;#39; is unavailable.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;----------- --------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(0 row(s) affected)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Oops, MSDTC is not running on the machine.. Start it. Note that you may have to install it if you are running Windows 2003 Server.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Msg 7390, Level 16, State 2, Procedure trg_testtrg1, Line 6&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;The requested operation could not be performed because OLE DB provider &amp;quot;Microsoft.Jet.OLEDB.4.0&amp;quot; for linked server &amp;quot;xltest&amp;quot; does not support the required transaction interface.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;----------- --------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(0 row(s) affected)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;So, as you see, MSDTC did not help us too much. The provider I used in this case does not support distributed transactions. What we can do to be able to insert information to linked server data store?&lt;/p&gt;
&lt;p&gt;There is an article in MSDN that mentions that you can COMMIT transaction in trigger before you call linked server. However this causes a batch terminating error. Let&amp;#39;s modify trigger code to commit transaction and see the results:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;trigger&lt;/span&gt; trg_testtrg1 &lt;span style="color:blue;"&gt;on&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;for&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;insert&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--commit transaction&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;commit&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--call linked server&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; xltest&lt;span style="color:gray;"&gt;...&lt;/span&gt;sheet1$ &lt;span style="color:gray;"&gt;(&lt;/span&gt;afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; inserted&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Will the code above work? No! Commiting transaction makes inserted table empty, so we will not have anything to store! Here&amp;#39;s modification what overcomes this little issue:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;trigger&lt;/span&gt; trg_testtrg1 &lt;span style="color:blue;"&gt;on&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;for&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;insert&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--declare temp variable and store rows to insert to linked server table&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;declare&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp &lt;span style="color:blue;"&gt;table&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;a &lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; b &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp &lt;span style="color:gray;"&gt;(&lt;/span&gt;a&lt;span style="color:gray;"&gt;,&lt;/span&gt; b&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;select&lt;/span&gt; afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield &lt;span style="color:blue;"&gt;from&lt;/span&gt; inserted&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--commit current tran to avoid escalation&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;commit&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--this will work, but the batch will be broken.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; xltest&lt;span style="color:gray;"&gt;...&lt;/span&gt;sheet1$ &lt;span style="color:gray;"&gt;(&lt;/span&gt;afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; a&lt;span style="color:gray;"&gt;,&lt;/span&gt; b&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Let&amp;#39;s see results of this code:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue1&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue2&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--there is only one record in the table&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;from&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Msg 3609, Level 16, State 1, Line 1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;The transaction ended in the trigger. The batch has been aborted.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;----------- --------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;somevealue1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;As you see there is&amp;nbsp;only one record in the table - the batch was broken before second insert in the code. Obviously, this is not what we want.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t actually understand, why Microsoft decided to throw batch breaking error when a commit in&amp;nbsp;trigger is called. Perhaps&amp;nbsp;to prevent poor coding practices? Anyway, this error is not thrown when you add &lt;b&gt;begin tran&lt;/b&gt; statement AFTER your linked server query:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;trigger&lt;/span&gt; trg_testtrg1 &lt;span style="color:blue;"&gt;on&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;for&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;insert&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--declare temp variable and store rows to insert to linked server table&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;declare&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp &lt;span style="color:blue;"&gt;table&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;a &lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; b &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp &lt;span style="color:gray;"&gt;(&lt;/span&gt;a&lt;span style="color:gray;"&gt;,&lt;/span&gt; b&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;select&lt;/span&gt; afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield &lt;span style="color:blue;"&gt;from&lt;/span&gt; inserted&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--commit current tran to avoid escalation&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;commit&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--this will work, but the batch will be broken.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; xltest&lt;span style="color:gray;"&gt;...&lt;/span&gt;sheet1$ &lt;span style="color:gray;"&gt;(&lt;/span&gt;afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; a&lt;span style="color:gray;"&gt;,&lt;/span&gt; b&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @tmp&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;tran&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;So far, so good. In some cases this will work.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;----------- --------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;somevealue1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;somevealue2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;But how about this code? What if you decide to roll back some of the work done due to an error?&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;tran&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue1&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable &lt;span style="color:blue;"&gt;values&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;somevealue2&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;rollback&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Well.. we are in trouble now:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;from&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;afield&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;----------- --------------------&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;somevealue1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;somevealue2&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(2 row(s) affected)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This transaction is not rolled back, as it has been already committed! In some cases, such behavior is acceptable, for example when an application calls single insert statement. But if insert query is a part of bigger batch, this approach is definitely not an option.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;The easiest way I found is to use SQL Agent to do remote server job out of transaction boundaries. First, create a queue table that will store temporarily rows to be inserted to linked server storage:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;use&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; testdb&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--this table stores records to be inserted into linked server table&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;table&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;linkedsrvqueue&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;afield &lt;span style="color:blue;"&gt;int&lt;/span&gt; &lt;span style="color:gray;"&gt;not&lt;/span&gt; &lt;span style="color:gray;"&gt;null,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bfield &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;not&lt;/span&gt; &lt;span style="color:gray;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;go&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;Then, create a simple job that will execute command moving rows to linked server:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;USE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; [msdb]&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;/****** Object:&lt;span&gt;&amp;nbsp; &lt;/span&gt;Job [SaveToLinkedServer]&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Script Date: 10/29/2007 &lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;23:01:19&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt; ******/&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;BEGIN&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;/****** Object:&lt;span&gt;&amp;nbsp; &lt;/span&gt;JobCategory [[Uncategorized (Local)]]]&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Script Date: &lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;10/29/2007&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;23:01:20&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt; ******/&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;EXISTS&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color:blue;"&gt;name&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;syscategories &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; &lt;span style="color:blue;"&gt;name&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;[Uncategorized (Local)]&amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;AND&lt;/span&gt; category_class&lt;span style="color:gray;"&gt;=&lt;/span&gt;1&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt; msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_add_category&lt;/span&gt; @class&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;JOB&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @type&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;LOCAL&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;[Uncategorized (Local)]&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; @ReturnCode &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;GOTO&lt;/span&gt; QuitWithRollback&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @jobId &lt;span style="color:blue;"&gt;BINARY&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;16&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_add_job&lt;/span&gt; @job_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;SaveToLinkedServer&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@enabled&lt;span style="color:gray;"&gt;=&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@notify_level_eventlog&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@notify_level_email&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@notify_level_netsend&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@notify_level_page&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@delete_level&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@description&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;No description available.&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@category_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;[Uncategorized (Local)]&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@owner_login_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;VAMILOXP\rogas&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @job_id &lt;span style="color:gray;"&gt;=&lt;/span&gt; @jobId &lt;span style="color:blue;"&gt;OUTPUT&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; @ReturnCode &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;GOTO&lt;/span&gt; QuitWithRollback&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;/****** Object:&lt;span&gt;&amp;nbsp; &lt;/span&gt;Step [StoreToLinkedServerStep]&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Script Date: 10/29/2007 &lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;23:01:21&lt;/span&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt; ******/&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt; msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_add_jobstep&lt;/span&gt; @job_id&lt;span style="color:gray;"&gt;=&lt;/span&gt;@jobId&lt;span style="color:gray;"&gt;,&lt;/span&gt; @step_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;StoreToLinkedServerStep&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@step_id&lt;span style="color:gray;"&gt;=&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@cmdexec_success_code&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@on_success_action&lt;span style="color:gray;"&gt;=&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@on_success_step_id&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@on_fail_action&lt;span style="color:gray;"&gt;=&lt;/span&gt;2&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@on_fail_step_id&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@retry_attempts&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@retry_interval&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@os_run_priority&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;,&lt;/span&gt; @subsystem&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;TSQL&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@command&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;insert xltest...sheet1$ (afield, bfield)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select afield, bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from dbo.linkedsrvqueue&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if @@error = 0&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;delete from dbo.linkedsrvqueue&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;,&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@database_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;N&lt;span style="color:red;"&gt;&amp;#39;testdb&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@flags&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; @ReturnCode &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;GOTO&lt;/span&gt; QuitWithRollback&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt; msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_update_job&lt;/span&gt; @job_id &lt;span style="color:gray;"&gt;=&lt;/span&gt; @jobId&lt;span style="color:gray;"&gt;,&lt;/span&gt; @start_step_id &lt;span style="color:gray;"&gt;=&lt;/span&gt; 1&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; @ReturnCode &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;GOTO&lt;/span&gt; QuitWithRollback&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @ReturnCode &lt;span style="color:gray;"&gt;=&lt;/span&gt; msdb&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_add_jobserver&lt;/span&gt; @job_id &lt;span style="color:gray;"&gt;=&lt;/span&gt; @jobId&lt;span style="color:gray;"&gt;,&lt;/span&gt; @server_name &lt;span style="color:gray;"&gt;=&lt;/span&gt; N&lt;span style="color:red;"&gt;&amp;#39;(local)&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; @ReturnCode &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;GOTO&lt;/span&gt; QuitWithRollback&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;COMMIT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GOTO&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; EndSave&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;QuitWithRollback&lt;span style="color:gray;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@TRANCOUNT&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt; 0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;ROLLBACK&lt;/span&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EndSave&lt;span style="color:gray;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;Finally, modify the trigger to call store rows in queue table and call the job:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;trigger&lt;/span&gt; trg_testtrg1 &lt;span style="color:blue;"&gt;on&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;testtable&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;for&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;insert&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;"&gt;--insert to queue table&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;linkedsrvqueue&lt;span style="color:gray;"&gt;(&lt;/span&gt;afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; afield&lt;span style="color:gray;"&gt;,&lt;/span&gt; bfield&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; inserted&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;print&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:red;"&gt;&amp;#39;inserted &amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;convert&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39; row(s)&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;exec&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; msdb&lt;span style="color:gray;"&gt;..&lt;/span&gt;&lt;span style="color:maroon;"&gt;sp_start_job&lt;/span&gt; @job_name&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;SaveToLinkedServer&amp;#39;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;This way the linked server functionality is called outside of transaction boundaries, which does not upset DTC and the main transaction flow remains consistent. The issues with this approach are: you have to have proper credentials to call sp_start_job and if the insert statement is executed too often, you may get following error:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Msg 22022, Level 16, State 1, Line 0&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-size:8pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SQLServerAgent Error: Request to run job SaveToLinkedServer (from User VAMILOXP\rogas) refused because the job already has a pending request from User VAMILOXP\rogas.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;You may get rid of this error by checking job status before calling sp_start_job, you may also configure this job to run periodically and remove the sp_start_job call from the trigger at all.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;References:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms187844.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms187844.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=3122" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author><category term="trigger" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/trigger/default.aspx" /><category term="linked server" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/linked+server/default.aspx" /><category term="distributed transaction" scheme="http://sqlblogcasts.com/blogs/piotr_rodak/archive/tags/distributed+transaction/default.aspx" /></entry><entry><title>So.. this is it</title><link rel="alternate" type="text/html" href="http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/10/23/so-this-is-it.aspx" /><id>http://sqlblogcasts.com/blogs/piotr_rodak/archive/2007/10/23/so-this-is-it.aspx</id><published>2007-10-23T20:55:00Z</published><updated>2007-10-23T20:55:00Z</updated><content type="html">&lt;p&gt;My first blog post. As someone said somewhere, sharing information forces you to look at it from every side, ensure that it is really correct. I will do my best to make so.&lt;/p&gt;&lt;p&gt;This blog is going to be about... SQL Server :). I am database developer and from time to time I come across quite interesting problems, up with (brilliant &lt;img src="http://sqlblogcasts.com/emoticons/emotion-5.gif" alt="Wink" /&gt;) ideas, have some observations that I would like to share. Some of them will not be revolutionary but I hope that some of them will allow you to look at questions you have from different angle, which is always helpful, I noticed.&lt;/p&gt;&lt;p&gt;My main areas of interest are performance, programming, some SSIS, some c# will perhaps find their way here as well. We'll see.&lt;br&gt;&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=2937" width="1" height="1"&gt;</content><author><name>Piotr Rodak</name><uri>http://sqlblogcasts.com/members/Piotr-Rodak.aspx</uri></author></entry></feed>