<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Ghazi Sarhan's Blog - SQL Server</title>
    <link>http://blog.delmonbay.com/</link>
    <description>Can't Get Enough</description>
    <language>en-us</language>
    <copyright>Ghazi Sarhan</copyright>
    <lastBuildDate>Sat, 22 Dec 2007 04:58:45 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>ghazi@delmonbay.com</managingEditor>
    <webMaster>ghazi@delmonbay.com</webMaster>
    <item>
      <trackback:ping>http://blog.delmonbay.com/Trackback.aspx?guid=3193e866-c6a4-4738-b902-e2b7a48b94c4</trackback:ping>
      <pingback:server>http://blog.delmonbay.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.delmonbay.com/PermaLink,guid,3193e866-c6a4-4738-b902-e2b7a48b94c4.aspx</pingback:target>
      <dc:creator>Ghazi Sarhan</dc:creator>
      <wfw:comment>http://blog.delmonbay.com/CommentView,guid,3193e866-c6a4-4738-b902-e2b7a48b94c4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.delmonbay.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3193e866-c6a4-4738-b902-e2b7a48b94c4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I needed to create a CLR function to generate a report and uses <a href="http://zedgraph.org/">ZedGraph</a> to
make a graph and save it on the disk.
</p>
        <p>
I used VS 2005 to make the CLR function, but when try to add a reference to the
project, all I see is few of the .Net assemblies, and there is no `Browse` button
to add assemblies from the disk.
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/AddReference1.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
I did some google as usual and found this on Sql Server's Book Online:
</p>
        <p>
          <strong>Unsupported Libraries</strong>
        </p>
        <p>
Unsupported libraries can still be called from your managed stored procedures, triggers,
user-defined functions, user-defined types, and user-defined aggregates. The unsupported
library must first be registered in the SQL Server database, using the CREATE ASSEMBLY
statement, before it can be used in your code. Any unsupported library that is registered
and run on the server should be reviewed and tested for security and reliability.
</p>
        <p>
And that solved the problem...
</p>
        <p>
First, I'm not sure what Permission_Set ZedGrpah needs, so I'm going to mark the database
as TrustWorthy so I can give the assembly an unsafe Permission_Set.
</p>
        <font color="#0000ff" size="2">
          <p>
Use
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Master
</font>
        <font size="2">
          <p>
Go
</p>
        </font>
        <font color="#0000ff" size="2">
          <p>
Alter
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Database</font>
        <font color="#000000" size="2"> Test </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">TrustWorthy</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">On
</font>
        <font size="2">
          <p>
Go
</p>
        </font>
        <font color="#0000ff" size="2">
          <p>
Use
</p>
        </font>
        <font size="2">
          <font color="#000000"> Test</font>
          <p>
Go
</p>
        </font>
        <p>
Then when I added the ZedGraph I got an error message:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Assembly</font>
        <font size="2">
          <font color="#000000"> [ZedGraph]</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'C:\ZedGraph\ZedGraph.dll'
</font>
        <font color="#0000ff" size="2">
          <p>
With
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Permission_Set</font>
        <font color="#808080" size="2">=</font>
        <font color="#0000ff" size="2">Unsafe
</font>
        <font size="2">
          <p>
 
</p>
          <font size="1">
            <p>
              <font color="#ff0000">Msg 10301, Level 16, State 1, Line 1</font>
            </p>
            <p>
              <font color="#ff0000">Assembly 'ZedGraph' references assembly 'system.windows.forms,
version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.', which is not
present in the current database. SQL Server attempted to locate and automatically
load the referenced assembly from the same location where referring assembly came
from, but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.</font>
            </p>
          </font>
          <p>
So I did as it says, I added the System.Windows.Forms first
</p>
          <font color="#0000ff" size="2">
            <p>
Create
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Assembly</font>
          <font size="2">
            <font color="#000000"> [System.Windows.Forms]</font>
          </font>
          <font color="#0000ff" size="2">
            <p>
From
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#ff0000" size="2">'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll'
</font>
          <font color="#0000ff" size="2">
            <p>
With
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Permission_Set</font>
          <font color="#808080" size="2">=</font>
          <font color="#0000ff" size="2">Unsafe</font>
        </font>
        <p>
 
</p>
        <p>
I noticed on the object explorer that the System.Windows.Forms was added with its
refereces
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/ObjectExplorer1.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Now add the ZedGraph
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Assembly</font>
        <font size="2">
          <font color="#000000"> [ZedGraph]</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'C:\ZedGraph\ZedGraph.dll'
</font>
        <font color="#0000ff" size="2">
          <p>
With
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Permission_Set</font>
        <font color="#808080" size="2">=</font>
        <font color="#0000ff" size="2">Unsafe</font>
        <p>
 
</p>
        <p>
Now back to VS 2005
</p>
        <p>
 
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/AddReference2.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
And everything goes well.
</p>
        <p>
 
</p>
        <p>
          <font color="#ff0000">Important: Always add the unsupported assemblies from a query
window, using CREATE ASSEMBLY command, do not add them using the Object Explorer,
I tried it and it always gives error.</font>
        </p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=3193e866-c6a4-4738-b902-e2b7a48b94c4" />
      </body>
      <title>Add an unsupported assembly to Sql Server</title>
      <guid isPermaLink="false">http://blog.delmonbay.com/PermaLink,guid,3193e866-c6a4-4738-b902-e2b7a48b94c4.aspx</guid>
      <link>http://blog.delmonbay.com/2007/12/22/AddAnUnsupportedAssemblyToSqlServer.aspx</link>
      <pubDate>Sat, 22 Dec 2007 04:58:45 GMT</pubDate>
      <description>&lt;p&gt;
I needed to create a CLR function to generate a report and uses&amp;nbsp;&lt;a href="http://zedgraph.org/"&gt;ZedGraph&lt;/a&gt; to
make a graph and save it on the disk.
&lt;/p&gt;
&lt;p&gt;
I used VS 2005 to make the CLR function, but when&amp;nbsp;try to add a reference to the
project, all I see is few of the .Net assemblies, and there is no `Browse` button
to add assemblies from the disk.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.delmonbay.com/content/binary/AddReference1.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I did some google as usual and found this on Sql Server's Book Online:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Unsupported Libraries&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Unsupported libraries can still be called from your managed stored procedures, triggers,
user-defined functions, user-defined types, and user-defined aggregates. The unsupported
library must first be registered in the SQL Server database, using the CREATE ASSEMBLY
statement, before it can be used in your code. Any unsupported library that is registered
and run on the server should be reviewed and tested for security and reliability.
&lt;/p&gt;
&lt;p&gt;
And that solved the problem...
&lt;/p&gt;
&lt;p&gt;
First, I'm not sure what Permission_Set ZedGrpah needs, so I'm going to mark the database
as TrustWorthy so I can give the assembly an unsafe Permission_Set.
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Use
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Master&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;p&gt;
Alter
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Database&lt;/font&gt;&lt;font color=#000000 size=2&gt; Test &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Set&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;TrustWorthy&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;On&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;p&gt;
Use
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Test&lt;/font&gt;&gt;
&lt;p&gt;
Go
&lt;/p&gt;
&lt;/font&gt; 
&lt;p&gt;
Then&amp;nbsp;when I added the ZedGraph I got an error message:
&lt;/p&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;Assembly&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; [ZedGraph]&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
From
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'C:\ZedGraph\ZedGraph.dll'&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
With
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Permission_Set&lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#0000ff size=2&gt;Unsafe&gt;
&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font size=1&gt; 
&lt;p&gt;
&lt;font color=#ff0000&gt;Msg 10301, Level 16, State 1, Line 1&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000&gt;Assembly 'ZedGraph' references assembly 'system.windows.forms,
version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.', which is not
present in the current database. SQL Server attempted to locate and automatically
load the referenced assembly from the same location where referring assembly came
from, but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.&lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p&gt;
So I did as it says, I added the System.Windows.Forms first
&lt;/p&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;Assembly&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; [System.Windows.Forms]&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
From
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll'&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
With
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Permission_Set&lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#0000ff size=2&gt;Unsafe&lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I noticed on the object explorer that the System.Windows.Forms was added with its
refereces
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.delmonbay.com/content/binary/ObjectExplorer1.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now add the ZedGraph
&lt;/p&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;Assembly&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; [ZedGraph]&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
From
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'C:\ZedGraph\ZedGraph.dll'&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
With
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Permission_Set&lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#0000ff size=2&gt;Unsafe&lt;/font&gt;&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now back to VS 2005
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.delmonbay.com/content/binary/AddReference2.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
And everything goes well.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000&gt;Important: Always add the unsupported assemblies from a query
window, using CREATE ASSEMBLY command, do not add them using the Object Explorer,
I tried it and it always gives error.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=3193e866-c6a4-4738-b902-e2b7a48b94c4" /&gt;</description>
      <comments>http://blog.delmonbay.com/CommentView,guid,3193e866-c6a4-4738-b902-e2b7a48b94c4.aspx</comments>
      <category>C#</category>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blog.delmonbay.com/Trackback.aspx?guid=7f0a8bec-7e6d-408a-b717-6a5a5795bfe1</trackback:ping>
      <pingback:server>http://blog.delmonbay.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.delmonbay.com/PermaLink,guid,7f0a8bec-7e6d-408a-b717-6a5a5795bfe1.aspx</pingback:target>
      <dc:creator>Ghazi Sarhan</dc:creator>
      <wfw:comment>http://blog.delmonbay.com/CommentView,guid,7f0a8bec-7e6d-408a-b717-6a5a5795bfe1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.delmonbay.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7f0a8bec-7e6d-408a-b717-6a5a5795bfe1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes you need to add a CreatedDateTime and ModifiedDateTime columns to your table,
here is an easy way to do it...
</p>
        <p>
First create a test table:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Table</font>
        <font size="2">
          <font color="#000000"> Table_1 </font>
        </font>
        <font color="#808080" size="2">
          <p>
(
</p>
        </font>
        <font size="2">
          <p>
ID 
</p>
        </font>
        <font color="#0000ff" size="2">Int</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Primary</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Key</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Identity</font>
        <font color="#808080" size="2">(</font>
        <font size="2">1</font>
        <font color="#808080" size="2">,</font>
        <font size="2"> 1</font>
        <font color="#808080" size="2">),
</font>
        <font size="2">
          <p>
Col1 
</p>
        </font>
        <font color="#0000ff" size="2">Varchar</font>
        <font color="#808080" size="2">(</font>
        <font size="2">50</font>
        <font color="#808080" size="2">),
</font>
        <font size="2">
          <p>
CreatedDateTime 
</p>
        </font>
        <font color="#0000ff" size="2">DateTime</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Not</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Default</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Current_Timestamp</font>
        <font color="#808080" size="2">,
</font>
        <font size="2">
          <p>
ModifiedDateTime 
</p>
        </font>
        <font color="#0000ff" size="2">DateTime</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Default</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null
<p>
)
</p><p>
 
</p></font>
        <p>
Note that the default value for the column CreatedDateTime is <font color="#0000ff">Current_Timestamp</font>.
</p>
        <p>
To update the ModifiedDateTime column we need this trigger:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Trigger</font>
        <font color="#000000" size="2"> Table_1_Update </font>
        <font color="#0000ff" size="2">On</font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">After</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Update
<p>
As
</p><p>
Update
</p></font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2"> ModifiedDateTime </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff00ff" size="2">GetDate</font>
        <font color="#808080" size="2">()
</font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#808080" size="2">Inner</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">Join</font>
        <font size="2">
          <font color="#000000"> Inserted</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
On
</p>
        </font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> Inserted</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID</font>
        </font>
        <p>
          <font size="2">
            <font color="#000000">
            </font>
          </font> 
</p>
        <p>
Now Test:
</p>
        <font color="#0000ff" size="2">
          <p>
Insert
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Into</font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">Col1</font>
        <font color="#808080" size="2">)</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Values</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#ff0000" size="2">'Hello'</font>
        <font color="#808080" size="2">);
</font>
        <font color="#0000ff" size="2">
          <p>
Select
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">From</font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">;
</font>
        <font color="#0000ff" size="2">
          <p>
Update
</p>
        </font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2"> Col1 </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'Hi'</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Where</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> 1</font>
        <font color="#808080" size="2">;
</font>
        <font color="#0000ff" size="2">
          <p>
Select
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">From</font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">;</font>
        <p>
          <font color="#808080" size="2">
          </font> 
</p>
        <font color="#808080" size="2">
          <font size="1">
            <p>
              <font face="Courier New" color="#000000">ID          Col1                CreatedDateTime         ModifiedDateTime</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">----------- ------------------- -----------------------
-----------------------</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">1          
Hello               2007-12-16
22:18:39.013 NULL</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">
              </font>
              <font face="Courier New" color="#000000"> 
</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">ID          Col1                CreatedDateTime         ModifiedDateTime</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">----------- ------------------- -----------------------
-----------------------</font>
            </p>
            <p>
            </p>
          </font>
          <font face="Courier New" color="#000000">1          
Hi                 
2007-12-16 22:18:39.013 2007-12-16 22:18:39.013</font>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=7f0a8bec-7e6d-408a-b717-6a5a5795bfe1" />
      </body>
      <title>Created DateTime &amp; Modified DateTime Columns</title>
      <guid isPermaLink="false">http://blog.delmonbay.com/PermaLink,guid,7f0a8bec-7e6d-408a-b717-6a5a5795bfe1.aspx</guid>
      <link>http://blog.delmonbay.com/2007/12/16/CreatedDateTimeModifiedDateTimeColumns.aspx</link>
      <pubDate>Sun, 16 Dec 2007 19:22:07 GMT</pubDate>
      <description>&lt;p&gt;
Sometimes you need to add a CreatedDateTime and ModifiedDateTime columns to your table,
here is an easy way to do it...
&lt;/p&gt;
&lt;p&gt;
First create a test table:
&lt;/p&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 size=2&gt;&lt;font color=#000000&gt; Table_1 &lt;/font&gt;&gt;
&lt;/font&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;
ID 
&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=#0000ff size=2&gt;Primary&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Key&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Identity&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; 1&lt;/font&gt;&lt;font color=#808080 size=2&gt;),&gt;
&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;
Col1 
&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;50&lt;/font&gt;&lt;font color=#808080 size=2&gt;),&gt;
&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;
CreatedDateTime 
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;DateTime&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;Not&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;Null&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Default&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Current_Timestamp&lt;/font&gt;&lt;font color=#808080 size=2&gt;,&gt;
&lt;/font&gt;&lt;font size=2&gt; 
&lt;p&gt;
ModifiedDateTime 
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;DateTime&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;Null&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Default&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;Null&gt;
&lt;p&gt;
)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p&gt;
Note that the default value for the column CreatedDateTime is &lt;font color=#0000ff&gt;Current_Timestamp&lt;/font&gt;.
&lt;/p&gt;
&lt;p&gt;
To update the ModifiedDateTime column we need this trigger:
&lt;/p&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;Trigger&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1_Update &lt;/font&gt;&lt;font color=#0000ff size=2&gt;On&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1 &lt;/font&gt;&lt;font color=#0000ff size=2&gt;After&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Update&gt;
&lt;p&gt;
As
&lt;/p&gt;
&lt;p&gt;
Update
&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1 &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Set&lt;/font&gt;&lt;font color=#000000 size=2&gt; ModifiedDateTime &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff00ff size=2&gt;GetDate&lt;/font&gt;&lt;font color=#808080 size=2&gt;()&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
From
&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1 &lt;/font&gt;&lt;font color=#808080 size=2&gt;Inner&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;Join&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Inserted&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
On
&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font color=#000000 size=2&gt;ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; Inserted&lt;/font&gt;&lt;font color=#808080 size=2&gt;.&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;ID&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now Test:
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Insert
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Into&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1 &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#000000 size=2&gt;Col1&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Values&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'Hello'&lt;/font&gt;&lt;font color=#808080 size=2&gt;);&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Select
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;From&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1&lt;/font&gt;&lt;font color=#808080 size=2&gt;;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Update
&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1 &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Set&lt;/font&gt;&lt;font color=#000000 size=2&gt; Col1 &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'Hi'&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Where&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; 1&lt;/font&gt;&lt;font color=#808080 size=2&gt;;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Select
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;From&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1&lt;/font&gt;&lt;font color=#808080 size=2&gt;;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#808080 size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;font color=#808080 size=2&gt;&lt;font size=1&gt; 
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreatedDateTime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModifiedDateTime&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;----------- ------------------- -----------------------
-----------------------&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Hello&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2007-12-16
22:18:39.013 NULL&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;&lt;/font&gt;&lt;font face="Courier New" color=#000000&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreatedDateTime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModifiedDateTime&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" color=#000000&gt;----------- ------------------- -----------------------
-----------------------&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/font&gt;&lt;font face="Courier New" color=#000000&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Hi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
2007-12-16 22:18:39.013 2007-12-16 22:18:39.013&lt;/font&gt;&gt;
&lt;/font&gt;&gt;&lt;img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=7f0a8bec-7e6d-408a-b717-6a5a5795bfe1" /&gt;</description>
      <comments>http://blog.delmonbay.com/CommentView,guid,7f0a8bec-7e6d-408a-b717-6a5a5795bfe1.aspx</comments>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blog.delmonbay.com/Trackback.aspx?guid=15ab4a04-a867-4236-bf99-893038f5e0b5</trackback:ping>
      <pingback:server>http://blog.delmonbay.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.delmonbay.com/PermaLink,guid,15ab4a04-a867-4236-bf99-893038f5e0b5.aspx</pingback:target>
      <dc:creator>Ghazi Sarhan</dc:creator>
      <wfw:comment>http://blog.delmonbay.com/CommentView,guid,15ab4a04-a867-4236-bf99-893038f5e0b5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.delmonbay.com/SyndicationService.asmx/GetEntryCommentsRss?guid=15ab4a04-a867-4236-bf99-893038f5e0b5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes you need to temporary disable a trigger, without dropping it, the following
commands do this...
</p>
        <p>
To disable a trigger:
</p>
        <font color="#0000ff" size="2">
          <p>
Disable
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Trigger</font>
        <font color="#000000" size="2"> Table_1_Trigger </font>
        <font color="#0000ff" size="2">On</font>
        <font size="2">
          <font color="#000000"> Table_1</font>
        </font>
        <p>
          <font size="2">
            <font color="#000000">Or</font>
          </font>
        </p>
        <font size="2">
          <font color="#0000ff" size="2">
            <p>
Alter
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Table</font>
          <font color="#000000" size="2"> Table_1 </font>
          <font color="#0000ff" size="2">Disable</font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Trigger</font>
          <font size="2">
            <font color="#000000"> Table_1_Trigger</font>
          </font>
          <p>
            <font size="2">
              <font color="#000000">
              </font>
            </font> 
</p>
          <p>
            <font size="2">
              <font color="#000000">To Re-enable it:</font>
            </font>
          </p>
          <font size="2">
            <font color="#0000ff" size="2">
              <p>
Enable
</p>
            </font>
            <font color="#000000" size="2">
            </font>
            <font color="#0000ff" size="2">Trigger</font>
            <font color="#000000" size="2"> Table_1_Trigger </font>
            <font color="#0000ff" size="2">On</font>
            <font size="2">
              <font color="#000000"> Table_1</font>
            </font>
            <p>
              <font color="#000000">Or</font>
            </p>
            <font size="2">
              <font color="#0000ff" size="2">
                <p>
Alter
</p>
              </font>
              <font color="#000000" size="2">
              </font>
              <font color="#0000ff" size="2">Table</font>
              <font color="#000000" size="2"> Table_1 </font>
              <font color="#0000ff" size="2">Enable</font>
              <font color="#000000" size="2">
              </font>
              <font color="#0000ff" size="2">Trigger</font>
              <font size="2">
                <font color="#000000"> Table_1_Trigger</font>
              </font>
            </font>
          </font>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=15ab4a04-a867-4236-bf99-893038f5e0b5" />
      </body>
      <title>Disable/Re-enable Trigger</title>
      <guid isPermaLink="false">http://blog.delmonbay.com/PermaLink,guid,15ab4a04-a867-4236-bf99-893038f5e0b5.aspx</guid>
      <link>http://blog.delmonbay.com/2007/12/16/DisableReenableTrigger.aspx</link>
      <pubDate>Sun, 16 Dec 2007 18:43:18 GMT</pubDate>
      <description>&lt;p&gt;
Sometimes you need to temporary disable a trigger, without dropping it, the following
commands&amp;nbsp;do this...
&lt;/p&gt;
&lt;p&gt;
To disable a trigger:
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Disable
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Trigger&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1_Trigger &lt;/font&gt;&lt;font color=#0000ff size=2&gt;On&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Table_1&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#000000&gt;Or&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Alter
&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; Table_1 &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Disable&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Trigger&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Table_1_Trigger&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=2&gt;&lt;font color=#000000&gt;To Re-enable it:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Enable
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Trigger&lt;/font&gt;&lt;font color=#000000 size=2&gt; Table_1_Trigger &lt;/font&gt;&lt;font color=#0000ff size=2&gt;On&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Table_1&lt;/font&gt;&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#000000&gt;Or&lt;/font&gt;
&lt;/p&gt;
&lt;font size=2&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
Alter
&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; Table_1 &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Enable&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;Trigger&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; Table_1_Trigger&lt;/font&gt;&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=15ab4a04-a867-4236-bf99-893038f5e0b5" /&gt;</description>
      <comments>http://blog.delmonbay.com/CommentView,guid,15ab4a04-a867-4236-bf99-893038f5e0b5.aspx</comments>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blog.delmonbay.com/Trackback.aspx?guid=1dda3d1c-c7fe-4602-ab49-f936633fc15f</trackback:ping>
      <pingback:server>http://blog.delmonbay.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.delmonbay.com/PermaLink,guid,1dda3d1c-c7fe-4602-ab49-f936633fc15f.aspx</pingback:target>
      <dc:creator>Ghazi Sarhan</dc:creator>
      <wfw:comment>http://blog.delmonbay.com/CommentView,guid,1dda3d1c-c7fe-4602-ab49-f936633fc15f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.delmonbay.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1dda3d1c-c7fe-4602-ab49-f936633fc15f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000">
            <span>I developed a small application for my office, in this
application I used a trigger to read data from a web service, then update the table
after the record is inserted.</span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>
              <span>Everything was working fine, except... the web service
sometimes takes time to come with the result, what keeps the user waits for a long
time before he gets a confirmation that the record was saved.</span>
            </span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>I thought about an asynchronous trigger, I did some google,
and found that asynchronous triggers can be done with Sql Server's Service Broker,
l<span>ittle bit from here and there, I built the following as a template for my asynchronous
triggers:</span></span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>
              <span>
              </span>
            </span>
          </font> 
</p>
        <font color="#000000">
          <span>
            <span>
              <font color="#0000ff">
                <p>
USE
</p>
              </font>
              <font color="#0000ff">master</font>
              <p>
GO 
</p>
              <font color="#008000">
                <p>
-- Check if database exists and drop it 
</p>
              </font>
              <font color="#0000ff">
                <p>
IF
</p>
              </font>
              <font color="#808080">EXISTS(</font>
              <font color="#0000ff">SELECT</font>
              <font color="#808080">*</font>
              <font color="#0000ff">FROM</font>
              <font color="#008000">sys.databases</font>
              <font color="#0000ff">where</font>
              <font color="#0000ff">name</font>
              <font color="#808080">=</font>
              <font color="#ff0000">'AsyncTrigger'</font>
              <font color="#808080">)</font>
              <p>
                <font color="#0000ff">DROP</font>
                <font color="#0000ff">DATABASE</font> AsyncTrigger 
</p>
              <p>
GO 
</p>
              <font color="#008000">
                <p>
-- Create the database 
</p>
              </font>
              <font color="#0000ff">
                <p>
CREATE
</p>
              </font>
              <font color="#0000ff">DATABASE</font> AsyncTrigger 
<p>
GO 
</p><font color="#008000"><p>
-- Enable Service Broker 
</p></font><font color="#0000ff"><p>
ALTER
</p></font><font color="#0000ff">DATABASE</font> AsyncTrigger 
<font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">ENABLE_BROKER</font><p>
GO 
</p><font color="#0000ff"><p>
USE
</p></font> AsyncTrigger 
<p>
GO 
</p><font color="#008000"><p>
-- Create our test table 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">TABLE</font> Table_1<font color="#808080">(</font><p>
[id] [int] <font color="#0000ff">PRIMARY</font><font color="#0000ff">KEY</font><font color="#0000ff">IDENTITY</font><font color="#808080">(</font>1<font color="#808080">,</font>1<font color="#808080">)</font><font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p><font color="#808080"></font>[Col1] [int] <font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p>
[Col2] [int] <font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p><font color="#808080"></font>[Sum] [int] <font color="#808080">NULL)</font></p><p>
GO 
</p><font color="#008000"><p>
-- This procedure will run asynchronously and execute our task 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">PROCEDURE</font> usp_Processor 
<font color="#0000ff"><p>
AS
</p></font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">NOCOUNT</font><font color="#0000ff">ON</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @Handle <font color="#0000ff">UNIQUEIDENTIFIER</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @MessageType <font color="#0000ff">SYSNAME</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @Message <font color="#0000ff">XML</font><font color="#808080">;</font><font color="#0000ff"><p>
RECEIVE
</p></font><font color="#0000ff">TOP</font><font color="#808080">(</font>1<font color="#808080">)</font><p>
@Handle <font color="#808080">=</font><font color="#0000ff">conversation_handle</font><font color="#808080">,</font></p><p><font color="#808080"></font>@MessageType <font color="#808080">=</font> message_type_name<font color="#808080">,</font></p><p>
@Message <font color="#808080">=</font> message_body 
</p><font color="#0000ff"><p>
FROM
</p></font> [MyQ]<font color="#808080">;</font><font color="#0000ff"><p>
IF
</p></font><font color="#808080">(</font>@Handle <font color="#808080">IS</font><font color="#808080">NOT</font><font color="#808080">NULL</font><font color="#808080">AND</font> @Message <font color="#808080">IS</font><font color="#808080">NOT</font><font color="#808080">NULL)</font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
DECLARE
</p></font> @tmpT <font color="#0000ff">Table</font><font color="#808080">(</font>id <font color="#0000ff">int</font><font color="#808080">,</font> Col1 <font color="#0000ff">int</font><font color="#808080">,</font> Col2 <font color="#0000ff">int</font><font color="#808080">,</font> [Sum] <font color="#0000ff">int</font><font color="#808080">);</font><font color="#0000ff"><p>
insert
</p></font><font color="#0000ff">into</font> @tmpT <font color="#0000ff">SELECT</font><p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@ID'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> id<font color="#808080">,</font></p></span>
          </span>
        </font>
        <font color="#000000">
          <span>
            <span>
              <p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Col1'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> col1<font color="#808080">,</font></p>
              <p>
                <font color="#808080">
                </font>Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Col2'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> col2<font color="#808080">,</font></p>
              <p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Sum'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> [sum] 
</p>
              <font color="#0000ff">
                <p>
FROM
</p>
              </font> @Message<font color="#808080">.</font>nodes<font color="#808080">(</font><font color="#ff0000">'/row'</font><font color="#808080">)</font><font color="#0000ff">AS</font> Table1<font color="#808080">(</font>Column1<font color="#808080">)</font><font color="#0000ff"><p>
Update
</p></font> Table_1 <font color="#0000ff">set</font> [Sum] <font color="#808080">=</font> tmpT<font color="#808080">.</font>Col1 <font color="#808080">+</font> tmpT<font color="#808080">.</font>Col2 
<font color="#0000ff"><p>
from
</p></font> @tmpT <font color="#0000ff">as</font> tmpT <font color="#808080">Inner</font><font color="#808080">Join</font> Table_1 <font color="#0000ff">as</font> T 
<font color="#0000ff"><p>
on
</p></font> tmpT<font color="#808080">.</font>id <font color="#808080">=</font> T<font color="#808080">.</font>id<font color="#808080">;</font><font color="#0000ff"><p>
END
</p></font><font color="#008000">-- End If 
</font><font color="#0000ff"><p>
END
</p></font><font color="#008000">-- End Procedure usp_Processor 
</font><p>
GO 
</p><font color="#008000"><p>
-- Create Message Type 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">MESSAGE</font><font color="#0000ff">TYPE</font> [MyMessage]
VALIDATION <font color="#808080">=</font><font color="#0000ff">WELL_FORMED_XML</font><font color="#808080">;</font><p>
GO 
</p><font color="#008000"><p>
-- Create Contract 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">CONTRACT</font> [MyContract] <font color="#808080">(</font>[MyMessage]
SENT <font color="#0000ff">BY</font><font color="#808080">ANY);</font><p>
GO 
</p><font color="#008000"><p>
-- Create Queue 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">QUEUE</font> [MyQ] <font color="#0000ff">WITH</font> ACTIVATION 
<font color="#808080"><p>
(
</p></font><font color="#0000ff">STATUS</font><font color="#808080">=</font><font color="#0000ff">ON</font><font color="#808080">,</font> MAX_QUEUE_READERS <font color="#808080">=</font> 1<font color="#808080">,</font><p>
PROCEDURE_NAME <font color="#808080">=</font> usp_Processor<font color="#808080">,</font></p><font color="#0000ff"><p>
EXECUTE
</p></font><font color="#0000ff">AS</font><font color="#0000ff">OWNER</font><font color="#808080">);</font><p>
GO 
</p><font color="#008000"><p>
-- Create Service 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">SERVICE</font> [MyService] <font color="#0000ff">ON</font><font color="#0000ff">QUEUE</font> [MyQ] <font color="#808080">(</font>[MyContract]<font color="#808080">);</font><p>
GO 
</p><font color="#008000"><p>
-- This trigger will send our message to the queue 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">TRIGGER</font> Table_1_Insert <font color="#0000ff">ON</font> Table_1 <font color="#0000ff">AFTER</font><font color="#0000ff">INSERT</font><font color="#0000ff"><p>
AS
</p></font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">NOCOUNT</font><font color="#0000ff">ON</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @MessageBody <font color="#0000ff">XML</font><font color="#808080">;</font><font color="#0000ff"><p>
set
</p></font> @MessageBody <font color="#808080">=</font><font color="#808080">(</font><font color="#0000ff">SELECT</font> ID<font color="#808080">,</font> Col1<font color="#808080">,</font> Col2<font color="#808080">,</font> [Sum] <font color="#0000ff">FROM</font> Inserted <font color="#0000ff">FOR</font><font color="#0000ff">XML</font><font color="#0000ff">RAW</font><font color="#808080">,</font><font color="#0000ff">TYPE</font><font color="#808080">);</font><font color="#0000ff"><p>
DECLARE
</p></font> @Handle <font color="#0000ff">UNIQUEIDENTIFIER</font><font color="#808080">;</font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff">DIALOG</font><font color="#0000ff">CONVERSATION</font> @Handle 
<font color="#0000ff"><p>
FROM
</p></font><font color="#0000ff">SERVICE</font> [MyService] 
<font color="#0000ff"><p>
TO
</p></font><font color="#0000ff">SERVICE</font><font color="#ff0000">'MyService'</font><font color="#0000ff"><p>
ON
</p></font><font color="#0000ff">CONTRACT</font> [MyContract] 
<font color="#0000ff"><p>
WITH
</p></font><font color="#0000ff">ENCRYPTION</font><font color="#808080">=</font><font color="#0000ff">OFF</font><font color="#808080">;</font><font color="#0000ff"><p>
SEND
</p></font><font color="#0000ff">ON</font><font color="#0000ff">CONVERSATION</font> @Handle 
<font color="#0000ff"><p>
MESSAGE
</p></font><font color="#0000ff">TYPE</font> [MyMessage]<font color="#808080">(</font>@MessageBody<font color="#808080">);</font><font color="#0000ff"><p>
END
</p></font><p>
GO
</p><p>
 
</p><p>
Now execute the following: 
</p><p>
 
</p><font color="#0000ff"><p>
Insert
</p></font><font color="#0000ff">Into</font> Table_1 <font color="#808080">(</font>Col1<font color="#808080">,</font> Col2<font color="#808080">)</font><font color="#0000ff">Values</font><font color="#808080">(</font>34<font color="#808080">,</font> 78<font color="#808080">)</font><font color="#0000ff"><p>
Select
</p></font><font color="#808080">*</font><font color="#0000ff">From</font> Table_1 
<font color="#0000ff"><p>
Waitfor
</p></font><font color="#0000ff">Delay</font><font color="#ff0000">'00:00:03'</font><font color="#0000ff"><p>
Select
</p></font><font color="#808080">*</font><font color="#0000ff">From</font> Table_1 
<p>
 
</p><p>
The result will be: 
</p><p><font face="Tahoma">id            
Col1        Col2       
Sum<br />
----------- ----------- ----------- -----------<br />
1              34          
78           NULL </font></p><p>
 
</p><p><font face="Tahoma"></font></p><p><font face="Tahoma">id            
Col1        Col2       
Sum<br />
----------- ----------- ----------- -----------<br />
1              34          
78           112 </font></p></span>
          </span>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=1dda3d1c-c7fe-4602-ab49-f936633fc15f" />
      </body>
      <title>Asynchronous Trigger</title>
      <guid isPermaLink="false">http://blog.delmonbay.com/PermaLink,guid,1dda3d1c-c7fe-4602-ab49-f936633fc15f.aspx</guid>
      <link>http://blog.delmonbay.com/2007/12/16/AsynchronousTrigger.aspx</link>
      <pubDate>Sun, 16 Dec 2007 17:01:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;I developed a small application for my office, in this application
I used a trigger to read data from a web service, then update the table after the
record is inserted.&lt;/span&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;&lt;span&gt;Everything was working fine, except... the web service
sometimes takes time to come with the result, what keeps the user waits for a long
time before he gets a confirmation that the record was saved.&lt;/span&gt;&lt;/span&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;I thought about an asynchronous trigger, I did some google,
and found that asynchronous triggers can be done with Sql Server's Service Broker,
l&lt;span&gt;ittle bit from here and there, I built the following as a template for my asynchronous
triggers:&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;font color=#000000&gt;&lt;span&gt;&lt;span&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
USE
&lt;/font&gt; &lt;font color=#0000ff&gt;master&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Check if database exists and drop it 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
IF
&lt;/font&gt; &lt;font color=#808080&gt;EXISTS(&lt;/font&gt;&lt;font color=#0000ff&gt;SELECT&lt;/font&gt; &lt;font color=#808080&gt;*&lt;/font&gt; &lt;font color=#0000ff&gt;FROM&lt;/font&gt; &lt;font color=#008000&gt;sys.databases&lt;/font&gt; &lt;font color=#0000ff&gt;where&lt;/font&gt; &lt;font color=#0000ff&gt;name&lt;/font&gt; &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#ff0000&gt;'AsyncTrigger'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt; &gt;
&lt;p&gt;
&lt;font color=#0000ff&gt;DROP&lt;/font&gt; &lt;font color=#0000ff&gt;DATABASE&lt;/font&gt; AsyncTrigger 
&lt;/p&gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create the database 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;DATABASE&lt;/font&gt; AsyncTrigger &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Enable Service Broker 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
ALTER
&lt;/font&gt; &lt;font color=#0000ff&gt;DATABASE&lt;/font&gt; AsyncTrigger &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
SET
&lt;/font&gt; &lt;font color=#0000ff&gt;ENABLE_BROKER&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
USE
&lt;/font&gt; AsyncTrigger &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create our test table 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;TABLE&lt;/font&gt; Table_1&lt;font color=#808080&gt;(&lt;/font&gt; &gt;
&lt;p&gt;
[id] [int] &lt;font color=#0000ff&gt;PRIMARY&lt;/font&gt; &lt;font color=#0000ff&gt;KEY&lt;/font&gt; &lt;font color=#0000ff&gt;IDENTITY&lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;1&lt;font color=#808080&gt;,&lt;/font&gt;1&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#808080&gt;NOT&lt;/font&gt; &lt;font color=#808080&gt;NULL,&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;/font&gt;[Col1] [int] &lt;font color=#808080&gt;NOT&lt;/font&gt; &lt;font color=#808080&gt;NULL,&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
[Col2] [int] &lt;font color=#808080&gt;NOT&lt;/font&gt; &lt;font color=#808080&gt;NULL,&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;/font&gt;[Sum] [int] &lt;font color=#808080&gt;NULL)&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- This procedure will run asynchronously and execute our task 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;PROCEDURE&lt;/font&gt; usp_Processor &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
AS
&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
BEGIN
&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
SET
&lt;/font&gt; &lt;font color=#0000ff&gt;NOCOUNT&lt;/font&gt; &lt;font color=#0000ff&gt;ON&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @Handle &lt;font color=#0000ff&gt;UNIQUEIDENTIFIER&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @MessageType &lt;font color=#0000ff&gt;SYSNAME&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @Message &lt;font color=#0000ff&gt;XML&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
RECEIVE
&lt;/font&gt; &lt;font color=#0000ff&gt;TOP&lt;/font&gt; &lt;font color=#808080&gt;(&lt;/font&gt;1&lt;font color=#808080&gt;)&lt;/font&gt; &gt;
&lt;p&gt;
@Handle &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#0000ff&gt;conversation_handle&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;/font&gt;@MessageType &lt;font color=#808080&gt;=&lt;/font&gt; message_type_name&lt;font color=#808080&gt;,&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
@Message &lt;font color=#808080&gt;=&lt;/font&gt; message_body 
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
FROM
&lt;/font&gt; [MyQ]&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
IF
&lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;@Handle &lt;font color=#808080&gt;IS&lt;/font&gt; &lt;font color=#808080&gt;NOT&lt;/font&gt; &lt;font color=#808080&gt;NULL&lt;/font&gt; &lt;font color=#808080&gt;AND&lt;/font&gt; @Message &lt;font color=#808080&gt;IS&lt;/font&gt; &lt;font color=#808080&gt;NOT&lt;/font&gt; &lt;font color=#808080&gt;NULL)&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
BEGIN
&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @tmpT &lt;font color=#0000ff&gt;Table&lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;id &lt;font color=#0000ff&gt;int&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; Col1 &lt;font color=#0000ff&gt;int&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; Col2 &lt;font color=#0000ff&gt;int&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; [Sum] &lt;font color=#0000ff&gt;int&lt;/font&gt;&lt;font color=#808080&gt;);&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
insert
&lt;/font&gt; &lt;font color=#0000ff&gt;into&lt;/font&gt; @tmpT &lt;font color=#0000ff&gt;SELECT&lt;/font&gt; &gt;
&lt;p&gt;
Table1&lt;font color=#808080&gt;.&lt;/font&gt;Column1&lt;font color=#808080&gt;.&lt;/font&gt;value&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#ff0000&gt;'@ID'&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; &lt;font color=#ff0000&gt;'INT'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#0000ff&gt;as&lt;/font&gt; id&lt;font color=#808080&gt;,&lt;/font&gt; 
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span&gt;&lt;span&gt; 
&lt;p&gt;
Table1&lt;font color=#808080&gt;.&lt;/font&gt;Column1&lt;font color=#808080&gt;.&lt;/font&gt;value&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#ff0000&gt;'@Col1'&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; &lt;font color=#ff0000&gt;'INT'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt;&lt;font color=#0000ff&gt;as&lt;/font&gt; col1&lt;font color=#808080&gt;,&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;/font&gt;Table1&lt;font color=#808080&gt;.&lt;/font&gt;Column1&lt;font color=#808080&gt;.&lt;/font&gt;value&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#ff0000&gt;'@Col2'&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; &lt;font color=#ff0000&gt;'INT'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#0000ff&gt;as&lt;/font&gt; col2&lt;font color=#808080&gt;,&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
Table1&lt;font color=#808080&gt;.&lt;/font&gt;Column1&lt;font color=#808080&gt;.&lt;/font&gt;value&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#ff0000&gt;'@Sum'&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; &lt;font color=#ff0000&gt;'INT'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#0000ff&gt;as&lt;/font&gt; [sum] 
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
FROM
&lt;/font&gt; @Message&lt;font color=#808080&gt;.&lt;/font&gt;nodes&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#ff0000&gt;'/row'&lt;/font&gt;&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#0000ff&gt;AS&lt;/font&gt; Table1&lt;font color=#808080&gt;(&lt;/font&gt;Column1&lt;font color=#808080&gt;)&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Update
&lt;/font&gt; Table_1 &lt;font color=#0000ff&gt;set&lt;/font&gt; [Sum] &lt;font color=#808080&gt;=&lt;/font&gt; tmpT&lt;font color=#808080&gt;.&lt;/font&gt;Col1 &lt;font color=#808080&gt;+&lt;/font&gt; tmpT&lt;font color=#808080&gt;.&lt;/font&gt;Col2 &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
from
&lt;/font&gt; @tmpT &lt;font color=#0000ff&gt;as&lt;/font&gt; tmpT &lt;font color=#808080&gt;Inner&lt;/font&gt; &lt;font color=#808080&gt;Join&lt;/font&gt; Table_1 &lt;font color=#0000ff&gt;as&lt;/font&gt; T &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
on
&lt;/font&gt; tmpT&lt;font color=#808080&gt;.&lt;/font&gt;id &lt;font color=#808080&gt;=&lt;/font&gt; T&lt;font color=#808080&gt;.&lt;/font&gt;id&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
END
&lt;/font&gt; &lt;font color=#008000&gt;-- End If &gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
END
&lt;/font&gt; &lt;font color=#008000&gt;-- End Procedure usp_Processor &gt;
&lt;/font&gt; 
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create Message Type 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;MESSAGE&lt;/font&gt; &lt;font color=#0000ff&gt;TYPE&lt;/font&gt; [MyMessage]
VALIDATION &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#0000ff&gt;WELL_FORMED_XML&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create Contract 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;CONTRACT&lt;/font&gt; [MyContract] &lt;font color=#808080&gt;(&lt;/font&gt;[MyMessage]
SENT &lt;font color=#0000ff&gt;BY&lt;/font&gt; &lt;font color=#808080&gt;ANY);&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create Queue 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;QUEUE&lt;/font&gt; [MyQ] &lt;font color=#0000ff&gt;WITH&lt;/font&gt; ACTIVATION &gt;
&lt;font color=#808080&gt; 
&lt;p&gt;
(
&lt;/font&gt;&lt;font color=#0000ff&gt;STATUS&lt;/font&gt; &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#0000ff&gt;ON&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; MAX_QUEUE_READERS &lt;font color=#808080&gt;=&lt;/font&gt; 1&lt;font color=#808080&gt;,&lt;/font&gt; &gt;
&lt;p&gt;
PROCEDURE_NAME &lt;font color=#808080&gt;=&lt;/font&gt; usp_Processor&lt;font color=#808080&gt;,&lt;/font&gt; 
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
EXECUTE
&lt;/font&gt; &lt;font color=#0000ff&gt;AS&lt;/font&gt; &lt;font color=#0000ff&gt;OWNER&lt;/font&gt;&lt;font color=#808080&gt;);&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- Create Service 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;SERVICE&lt;/font&gt; [MyService] &lt;font color=#0000ff&gt;ON&lt;/font&gt; &lt;font color=#0000ff&gt;QUEUE&lt;/font&gt; [MyQ] &lt;font color=#808080&gt;(&lt;/font&gt;[MyContract]&lt;font color=#808080&gt;);&lt;/font&gt; &gt;
&lt;p&gt;
GO 
&lt;/p&gt;
&lt;font color=#008000&gt; 
&lt;p&gt;
-- This trigger will send our message to the queue 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
CREATE
&lt;/font&gt; &lt;font color=#0000ff&gt;TRIGGER&lt;/font&gt; Table_1_Insert &lt;font color=#0000ff&gt;ON&lt;/font&gt; Table_1 &lt;font color=#0000ff&gt;AFTER&lt;/font&gt; &lt;font color=#0000ff&gt;INSERT&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
AS
&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
BEGIN
&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
SET
&lt;/font&gt; &lt;font color=#0000ff&gt;NOCOUNT&lt;/font&gt; &lt;font color=#0000ff&gt;ON&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @MessageBody &lt;font color=#0000ff&gt;XML&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
set
&lt;/font&gt; @MessageBody &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#0000ff&gt;SELECT&lt;/font&gt; ID&lt;font color=#808080&gt;,&lt;/font&gt; Col1&lt;font color=#808080&gt;,&lt;/font&gt; Col2&lt;font color=#808080&gt;,&lt;/font&gt; [Sum] &lt;font color=#0000ff&gt;FROM&lt;/font&gt; Inserted &lt;font color=#0000ff&gt;FOR&lt;/font&gt; &lt;font color=#0000ff&gt;XML&lt;/font&gt; &lt;font color=#0000ff&gt;RAW&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt; &lt;font color=#0000ff&gt;TYPE&lt;/font&gt;&lt;font color=#808080&gt;);&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
DECLARE
&lt;/font&gt; @Handle &lt;font color=#0000ff&gt;UNIQUEIDENTIFIER&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
BEGIN
&lt;/font&gt; &lt;font color=#0000ff&gt;DIALOG&lt;/font&gt; &lt;font color=#0000ff&gt;CONVERSATION&lt;/font&gt; @Handle &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
FROM
&lt;/font&gt; &lt;font color=#0000ff&gt;SERVICE&lt;/font&gt; [MyService] &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
TO
&lt;/font&gt; &lt;font color=#0000ff&gt;SERVICE&lt;/font&gt; &lt;font color=#ff0000&gt;'MyService'&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
ON
&lt;/font&gt; &lt;font color=#0000ff&gt;CONTRACT&lt;/font&gt; [MyContract] &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
WITH
&lt;/font&gt; &lt;font color=#0000ff&gt;ENCRYPTION&lt;/font&gt; &lt;font color=#808080&gt;=&lt;/font&gt; &lt;font color=#0000ff&gt;OFF&lt;/font&gt;&lt;font color=#808080&gt;;&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
SEND
&lt;/font&gt; &lt;font color=#0000ff&gt;ON&lt;/font&gt; &lt;font color=#0000ff&gt;CONVERSATION&lt;/font&gt; @Handle &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
MESSAGE
&lt;/font&gt; &lt;font color=#0000ff&gt;TYPE&lt;/font&gt; [MyMessage]&lt;font color=#808080&gt;(&lt;/font&gt;@MessageBody&lt;font color=#808080&gt;);&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
END
&lt;/font&gt; &gt;
&lt;p&gt;
GO
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now execute the following: 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Insert
&lt;/font&gt; &lt;font color=#0000ff&gt;Into&lt;/font&gt; Table_1 &lt;font color=#808080&gt;(&lt;/font&gt;Col1&lt;font color=#808080&gt;,&lt;/font&gt; Col2&lt;font color=#808080&gt;)&lt;/font&gt; &lt;font color=#0000ff&gt;Values&lt;/font&gt; &lt;font color=#808080&gt;(&lt;/font&gt;34&lt;font color=#808080&gt;,&lt;/font&gt; 78&lt;font color=#808080&gt;)&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Select
&lt;/font&gt; &lt;font color=#808080&gt;*&lt;/font&gt; &lt;font color=#0000ff&gt;From&lt;/font&gt; Table_1 &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Waitfor
&lt;/font&gt; &lt;font color=#0000ff&gt;Delay&lt;/font&gt; &lt;font color=#ff0000&gt;'00:00:03'&lt;/font&gt; &gt;
&lt;font color=#0000ff&gt; 
&lt;p&gt;
Select
&lt;/font&gt; &lt;font color=#808080&gt;*&lt;/font&gt; &lt;font color=#0000ff&gt;From&lt;/font&gt; Table_1 &gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The result will be: 
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Tahoma&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Sum&lt;br&gt;
----------- ----------- ----------- -----------&lt;br&gt;
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Tahoma&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Tahoma&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Sum&lt;br&gt;
----------- ----------- ----------- -----------&lt;br&gt;
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 112 &lt;/font&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=1dda3d1c-c7fe-4602-ab49-f936633fc15f" /&gt;</description>
      <comments>http://blog.delmonbay.com/CommentView,guid,1dda3d1c-c7fe-4602-ab49-f936633fc15f.aspx</comments>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://blog.delmonbay.com/Trackback.aspx?guid=8d7fb818-c474-4648-a6a2-3a51d02fd948</trackback:ping>
      <pingback:server>http://blog.delmonbay.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.delmonbay.com/PermaLink,guid,8d7fb818-c474-4648-a6a2-3a51d02fd948.aspx</pingback:target>
      <dc:creator>Ghazi Sarhan</dc:creator>
      <wfw:comment>http://blog.delmonbay.com/CommentView,guid,8d7fb818-c474-4648-a6a2-3a51d02fd948.aspx</wfw:comment>
      <wfw:commentRss>http://blog.delmonbay.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8d7fb818-c474-4648-a6a2-3a51d02fd948</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="text">
          <p>
I was working on a simple Address Book for my office using Sql Server and ASP.NET. 
</p>
          <p>
I created the table that has the fields: FirstName, LastName, Code,
StaffNo and Phone. 
</p>
          <p>
I prepaired the web page with five TextBoxes and a GridView. 
</p>
          <p>
Now... writing the code... 
</p>
          <p>
I want when the user enters the FirstName, he gets all matching records for this FirstName...
when he enters FirstName and LastName he gets all records with the matching FirstName and
LastName... 
</p>
          <p>
This means that if a field was not supplied, it shouldn't be included in the Where
clause... 
</p>
          <p>
This means that I will need to customize the search on the web page to check the supplied
fields, build the SQL Command dynamically then run the query... !@#$%^&amp;* 
</p>
          <p>
That didn't sound profissional... 
</p>
          <p>
I did some Google until I found this... 
</p>
          <p>
          </p>
          <font color="#0000ff">
            <font color="#0000ff">
              <p>
Select<font color="#000000"> FirstName</font><font color="#808080">,</font><font color="#000000"> LastName</font><font color="#808080">,</font><font color="#000000"> Code</font><font color="#808080">,</font><font color="#000000"> StaffNo</font><font color="#808080">,</font><font color="#000000"> Phone </font><font color="#0000ff">From</font><font color="#000000"> AddressBook </font><font color="#0000ff">Where</font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@FirstName </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@FirstName </font><font color="#808080">=</font><font color="#000000"> FirstName</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@LastName </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@LastName </font><font color="#808080">=</font><font color="#000000"> LastName</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@Code </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@Code </font><font color="#808080">=</font><font color="#000000"> Code</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@StaffNo </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@StaffNo </font><font color="#808080">=</font><font color="#000000"> StaffNo</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@Phone </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@Phone </font><font color="#808080">=</font><font color="#000000"> Phone</font><font color="#808080">))</font></p>
            </font>
          </font>
          <font color="#808080">
          </font>
          <p>
            <font color="#808080">
            </font>
          </p>
          <p>
The where clause checks each parameter to see if it is NULL which means we don't want
to filter our results by that parameter. If the parameter is not null it then checks
the fields value with the parameter. 
</p>
        </div>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=8d7fb818-c474-4648-a6a2-3a51d02fd948" />
      </body>
      <title>Select... with optional parameters</title>
      <guid isPermaLink="false">http://blog.delmonbay.com/PermaLink,guid,8d7fb818-c474-4648-a6a2-3a51d02fd948.aspx</guid>
      <link>http://blog.delmonbay.com/2007/12/16/SelectWithOptionalParameters.aspx</link>
      <pubDate>Sun, 16 Dec 2007 16:37:37 GMT</pubDate>
      <description>&lt;div class=text&gt;
&lt;p&gt;
I was working on a simple Address Book for my office using Sql Server and ASP.NET. 
&lt;/p&gt;
&lt;p&gt;
I&amp;nbsp;created&amp;nbsp;the&amp;nbsp;table that has the fields: FirstName, LastName, Code,
StaffNo and&amp;nbsp;Phone. 
&lt;/p&gt;
&lt;p&gt;
I prepaired&amp;nbsp;the web page with&amp;nbsp;five TextBoxes and a GridView. 
&lt;/p&gt;
&lt;p&gt;
Now... writing the code... 
&lt;/p&gt;
&lt;p&gt;
I want when the user enters the FirstName, he gets all matching records for this FirstName...
when he enters FirstName and LastName he gets all records with the matching FirstName&amp;nbsp;and
LastName... 
&lt;/p&gt;
&lt;p&gt;
This means that if a field was not supplied, it shouldn't be included in the Where
clause... 
&lt;/p&gt;
&lt;p&gt;
This means that I will need to customize the search on the web page to check the supplied
fields, build the SQL Command dynamically then run the query... !@#$%^&amp;amp;* 
&lt;/p&gt;
&lt;p&gt;
That didn't sound profissional... 
&lt;/p&gt;
&lt;p&gt;
I did some Google until I found this... 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
Select&lt;font color=#000000&gt; FirstName&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt;&lt;font color=#000000&gt; LastName&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt;&lt;font color=#000000&gt; Code&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt;&lt;font color=#000000&gt; StaffNo&lt;/font&gt;&lt;font color=#808080&gt;,&lt;/font&gt;&lt;font color=#000000&gt; Phone &lt;/font&gt;&lt;font color=#0000ff&gt;From&lt;/font&gt;&lt;font color=#000000&gt; AddressBook &lt;/font&gt;&lt;font color=#0000ff&gt;Where&lt;/font&gt; 
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
((&lt;font color=#000000&gt;@FirstName &lt;/font&gt;&lt;font color=#808080&gt;is&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;null)&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;or&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#000000&gt;@FirstName &lt;/font&gt;&lt;font color=#808080&gt;=&lt;/font&gt;&lt;font color=#000000&gt; FirstName&lt;/font&gt;&lt;font color=#808080&gt;))&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;and&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
((&lt;font color=#000000&gt;@LastName &lt;/font&gt;&lt;font color=#808080&gt;is&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;null)&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;or&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#000000&gt;@LastName &lt;/font&gt;&lt;font color=#808080&gt;=&lt;/font&gt;&lt;font color=#000000&gt; LastName&lt;/font&gt;&lt;font color=#808080&gt;))&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;and&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
((&lt;font color=#000000&gt;@Code &lt;/font&gt;&lt;font color=#808080&gt;is&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;null)&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;or&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#000000&gt;@Code &lt;/font&gt;&lt;font color=#808080&gt;=&lt;/font&gt;&lt;font color=#000000&gt; Code&lt;/font&gt;&lt;font color=#808080&gt;))&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;and&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
((&lt;font color=#000000&gt;@StaffNo &lt;/font&gt;&lt;font color=#808080&gt;is&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;null)&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;or&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#000000&gt;@StaffNo &lt;/font&gt;&lt;font color=#808080&gt;=&lt;/font&gt;&lt;font color=#000000&gt; StaffNo&lt;/font&gt;&lt;font color=#808080&gt;))&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;and&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
((&lt;font color=#000000&gt;@Phone &lt;/font&gt;&lt;font color=#808080&gt;is&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;null)&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;or&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;font color=#808080&gt;(&lt;/font&gt;&lt;font color=#000000&gt;@Phone &lt;/font&gt;&lt;font color=#808080&gt;=&lt;/font&gt;&lt;font color=#000000&gt; Phone&lt;/font&gt;&lt;font color=#808080&gt;))&lt;/font&gt; 
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color=#808080&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#808080&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
The where clause checks each parameter to see if it is NULL which means we don't want
to filter our results by that parameter. If the parameter is not null it then checks
the fields value with the parameter. 
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=8d7fb818-c474-4648-a6a2-3a51d02fd948" /&gt;</description>
      <comments>http://blog.delmonbay.com/CommentView,guid,8d7fb818-c474-4648-a6a2-3a51d02fd948.aspx</comments>
      <category>SQL Server</category>
    </item>
  </channel>
</rss>