<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Sean Ferguson</title><subtitle type="html">Software Design Engineer&lt;br&gt;Exchange Hosted Services Archive</subtitle><id>http://blogs.msdn.com/sferg/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/sferg/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2007-09-20T19:27:00Z</updated><entry><title>Displaying varbinary columns in DataGridView</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2009/02/28/displaying-varbinary-columns-in-datagridview.aspx" /><id>http://blogs.msdn.com/sferg/archive/2009/02/28/displaying-varbinary-columns-in-datagridview.aspx</id><published>2009-03-01T10:30:00Z</published><updated>2009-03-01T10:30:00Z</updated><content type="html">&lt;P&gt;I recently wrote a simple program for displaying SQL query results in a DataGridView, but noticed it was crashing on varbinary columns.&amp;nbsp; After much&amp;nbsp;searching on the internet, I found out that the default format for a varbinary column is to display it as an image.&amp;nbsp; While that seems like a fine default, there is no way to change it.&amp;nbsp; I found a few examples of how to override, but they seemed awfully complicated, especially since I was binding to a dynamic dataset.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here is a super simple way to handle this scenario:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Extend the DataGridViewColumn class that just stores original the varbinary column&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Implement the ColumnAdded event to hide the original varbinary column, and add your extended column to the DataSet&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Implement the CellFormatting event and set the value in the format you want &lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;Example:&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class VirtualDataGridViewColumn : DataGridViewColumn&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private DataGridViewColumn originalColumn;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public VirtualDataGridViewColumn(DataGridViewColumn originalColumn)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.originalColumn = originalColumn;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DataGridViewColumn OriginalColumn&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return this.originalColumn; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void dataGridView_ColumnAdded(Object sender, DataGridViewColumnEventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.Column.ValueType == typeof(byte[]))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataGridViewColumn column = new VirtualDataGridViewColumn(e.Column);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.ValueType = typeof(string);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.Name = e.Column.Name;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.DisplayIndex = e.Column.DisplayIndex;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.CellTemplate = new DataGridViewTextBoxCell();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.DataPropertyName = e.Column.DataPropertyName;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.SortMode = DataGridViewColumnSortMode.Programmatic;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&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; e.Column.DataGridView.Columns.Add(column);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Column.Visible = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataGridView currentDataGridView = sender as DataGridView;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (currentDataGridView.Columns[e.ColumnIndex] is VirtualDataGridViewColumn)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VirtualDataGridViewColumn column = currentDataGridView.Columns[e.ColumnIndex] as VirtualDataGridViewColumn;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataRow dataRow = (currentDataGridView.Rows[e.RowIndex].DataBoundItem as DataRowView).Row;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Value = dataRow[column.OriginalColumn.Name];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.Value is byte[])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Value = "0x" + BitConverter.ToString(e.Value as byte[]).Replace("-", "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.FormattingApplied = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9452190" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>Preventing SQL Injection with Parameters: Caveats</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/10/31/preventing-sql-injection-with-parameters-caveats.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/10/31/preventing-sql-injection-with-parameters-caveats.aspx</id><published>2008-11-01T01:04:00Z</published><updated>2008-11-01T01:04:00Z</updated><content type="html">&lt;P&gt;I learned something interesting about SQL parameters today.&amp;nbsp; In my C# code I was passing a comma separated string as a parameter to a stored procedure using SqlParameter, but it was allowing ' through unchecked causing havoc in the stored procedure.&amp;nbsp; It turns out when you use dynamic SQL in the stored procedure you lose the safety of the parameter.&lt;/P&gt;
&lt;P&gt;Pseudocode&amp;nbsp;Example:&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&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;PROCEDURE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; [dbo]&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;[CommaSeparatedNames] &lt;/P&gt;
&lt;P&gt;@Names &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;NVARCHAR&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;MAX&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&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&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @Name &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;NVARCHAR&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;MAX&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @NameQuery &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;NVARCHAR&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;MAX&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; @NameQuery &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'SELECT * FROM Names WHERE '&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;-- Split @Names into a @Name, such that&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;-- each name is wrapped, @NameQuery = @NameQuery + ' Name LIKE ''' + @Name + ''' OR '&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;-- generating a query like SELECT * FROM Names WHERE Name LIKE 'bob' OR Name LIKE 'john'&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;EXECUTE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;sp_executesql&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;@NameQuery&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;END&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;When a name was passed with ' in it, the query generation fails.&amp;nbsp; I have to explicity replace the ' with '' in the C#.&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9027401" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>How to pass an array of binary values in SQL Server 2005?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/09/30/how-to-pass-an-array-of-binary-values-in-sql-server-2005.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/09/30/how-to-pass-an-array-of-binary-values-in-sql-server-2005.aspx</id><published>2008-10-01T01:11:00Z</published><updated>2008-10-01T01:11:00Z</updated><content type="html">&lt;P&gt;I have a stored procedure that expects an array of binary values.&amp;nbsp;&amp;nbsp;I'm currently passing it as a comma separate string but I think that is a horrible hack.&amp;nbsp; I tried using XML, but that didn't seem to work, but it's very possible&amp;nbsp;I could have been doing it wrong.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;How does everyone else pass&amp;nbsp;an array of binary values to stored procedures?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970794" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>Variable scope in C#</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/08/31/variable-scope-in-c.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/08/31/variable-scope-in-c.aspx</id><published>2008-09-01T06:51:00Z</published><updated>2008-09-01T06:51:00Z</updated><content type="html">&lt;P&gt;See anything wrong with the&amp;nbsp;code below?&amp;nbsp; I didn't until Visual Studio gave me a nice squiggly red line indicating something was wrong.&lt;/P&gt;&lt;PRE&gt;IList&lt;A&gt; aList = new List&lt;A&gt;();
foreach (A a in aList)
{
  // Do something
}

A a = new A();
&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size=2&gt;This is the error:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;A local variable named 'a' cannot be declared in this scope because it would give a different meaning to 'a', which is already used in a 'child' scope to denote something else&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Does anyone know why this isn't allowed?&amp;nbsp; It seems like a perfectly natural thing to do.&lt;/P&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8915358" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>Database table naming conventions</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/07/31/database-table-naming-conventions.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/07/31/database-table-naming-conventions.aspx</id><published>2008-08-01T03:51:00Z</published><updated>2008-08-01T03:51:00Z</updated><content type="html">&lt;P&gt;I was recently adding some tables to a database, and was presented with the silly problem of naming a table "User" or "Users."&amp;nbsp; To me the table name should represent the entity, but on the flip side the table is holding a collection of those entities.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Since I'm open to suggestion, what are your thoughts on table naming?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8796026" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>Best way to manage database abstraction for development?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/06/30/best-way-to-manage-database-abstraction-for-development.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/06/30/best-way-to-manage-database-abstraction-for-development.aspx</id><published>2008-07-01T00:47:00Z</published><updated>2008-07-01T00:47:00Z</updated><content type="html">&lt;P&gt;The database we are coding for isn't well suited for making quick changes while doing index or query optimization, so I trying to find a good way to swap out the data abstraction layer cleanly to use a different database backend.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Does anyone have any good examples of easily swapping data access layers?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Example:&lt;/P&gt;
&lt;P&gt;ClassA instantiates a DBQuery class to execute queries.&amp;nbsp; I would like to replace DBQuery with a DB2Query&amp;nbsp;class which talks to a different database type.&amp;nbsp; The queries themselves will be the same, it's just the underlying API for communicating with the DB that is different.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I considered using reflection to determine a class to use on the fly, but I really want the solution to be performant and elegant.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8673409" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>SQL Full Text, Word Breakers &amp; You</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/05/29/sql-full-text-wordbreakers-you.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/05/29/sql-full-text-wordbreakers-you.aspx</id><published>2008-05-29T23:52:00Z</published><updated>2008-05-29T23:52:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The other day was a SQL learning adventure.&amp;nbsp; A&amp;nbsp;team member&amp;nbsp;was trying to find the phrase "Q&amp;amp;A" using the search functionality of our product, but&amp;nbsp;found no results.&amp;nbsp; They were surprised at this considering they had proof the phrase should have been returned.&amp;nbsp; Lucky me got&amp;nbsp;tasked with investigating this issue.&amp;nbsp; This search was just running a contains query against a table in SQL Server 2005.&amp;nbsp; I figured it was probably something silly our application was doing, so I ran the query directly on the database.&amp;nbsp; Surprisingly, there were no results returned.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The next step was to try and create a simple repro.&amp;nbsp; I created a new table, setup full text, and inserted "Q&amp;amp;A" as the only record.&amp;nbsp; Sure enough, the contains query returned no results.&amp;nbsp; At this point I was suspecting the "&amp;amp;" so I tried querying for "QA" thinking maybe it was filtering the "&amp;amp;" out.&amp;nbsp; Again, no results.&amp;nbsp; Being somewhat knowledgeable about full text, I suspected the word breaker was causing the problem.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The word breaker takes the incoming text and breaks it up into logical words for indexing.&amp;nbsp; For example, "blogs rule" would be broken up into two words, "blogs" and "rule."&amp;nbsp; You would expect the phrase "Q&amp;amp;A" not to be broken up, but in fact it is.&amp;nbsp; The word breaker returns "Q" and&amp;nbsp;"A," both of which are noise words causing nothing to be indexed.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;So after the lesson in word breakers, I was left with the unfortunate ending of resolving the bug as "By Design."&amp;nbsp; Maybe next month I can detail the workaround I found.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8560146" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry><entry><title>Lessons in Binary</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/04/30/lessons-in-sql-varbinary.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/04/30/lessons-in-sql-varbinary.aspx</id><published>2008-05-01T04:18:00Z</published><updated>2008-05-01T04:18:00Z</updated><content type="html">&lt;P&gt;I recently had an interesting experience with the varbinary column in SQL Server.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here was my problem: &lt;/P&gt;
&lt;P&gt;I was inserting 0x012 into a varbinary column with the expectation that is what would be stored.&amp;nbsp; Perhaps taking into consideration byte alignment it would pad a&amp;nbsp;0 at the end, i.e 0x0120. Boy was&amp;nbsp;I&amp;nbsp;wrong.&amp;nbsp; The value was stored as 0x0102.&amp;nbsp; Since my input value was 1.5 bytes, SQL Server padded the value to make it a full 2 bytes by prepending a 0 to&amp;nbsp;the last&amp;nbsp;4 bits to make a full byte.&amp;nbsp; That is a completely different value than what I was intending during the insert.&amp;nbsp; After some chatting with&amp;nbsp;some people in the SQL organization I finally realized why SQL Server treats it as 0x0102 instead of 0x0120.&amp;nbsp; As humans, we tend to think of things that end with 0 as a bigger number but in the binary world 0x01 is the same as 0x0100.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;From now on I'll be sure to pad my varbinary values to ensure my intent is preserved.&amp;nbsp; :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8445757" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author><category term="SQL Server" scheme="http://blogs.msdn.com/sferg/archive/tags/SQL+Server/default.aspx" /></entry><entry><title>Calculating SQL Server Index Size</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2008/03/28/calculating-sql-server-index-size.aspx" /><id>http://blogs.msdn.com/sferg/archive/2008/03/28/calculating-sql-server-index-size.aspx</id><published>2008-03-28T20:56:00Z</published><updated>2008-03-28T20:56:00Z</updated><content type="html">
&lt;STYLE&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
.MsoPapDefault
	{margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/STYLE&gt;

&lt;P&gt;Today I was trying to calculate the size of a specific index in SQL Server and realized it's not obvious to calculate.&amp;nbsp;&amp;nbsp;I poked around Management Studio&amp;nbsp;and was able to get the size of all indexes for a table, but not for a single index.&amp;nbsp; Thinking I must have just missed something obvious,&amp;nbsp;I did a quick Live (and then Google) search and didn't get any useful results.&amp;nbsp; Frustrated, I started digging into the documentation and came upon this handy dynamic management view: sys.dm_db_index_physical_stats.&amp;nbsp; It provides enough information that you can calculate the size of the index.&lt;/P&gt;
&lt;P&gt;Here is the handy stored procedure I wrote to calculate the size of an index in bytes:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATE&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: blue"&gt;PROCEDURE&lt;/SPAN&gt; [dbo]&lt;SPAN style="COLOR: gray"&gt;.&lt;/SPAN&gt;[IndexSize]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @TableName &lt;SPAN style="COLOR: blue"&gt;NVARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;256&lt;SPAN style="COLOR: gray"&gt;),&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @IndexName &lt;SPAN style="COLOR: blue"&gt;VARCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;256&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;BEGIN&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;DECLARE&lt;/SPAN&gt; @index_id &lt;SPAN style="COLOR: blue"&gt;INT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;DECLARE&lt;/SPAN&gt; @index_size &lt;SPAN style="COLOR: blue"&gt;BIGINT&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;SET&lt;/SPAN&gt; @index_size &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; 0&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; @index_id &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; index_id &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; &lt;SPAN style="COLOR: green"&gt;sys.indexes&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;WHERE&lt;/SPAN&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: fuchsia"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;@TableName&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;AND&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;name&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; @IndexName&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @index_size &lt;SPAN style="COLOR: gray"&gt;=&lt;/SPAN&gt; @index_size &lt;SPAN style="COLOR: gray"&gt;+&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;avg_record_size_in_bytes &lt;SPAN style="COLOR: gray"&gt;*&lt;/SPAN&gt; record_count&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;FROM&lt;/SPAN&gt; sys.dm_db_index_physical_stats &lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(),&lt;/SPAN&gt; &lt;SPAN style="COLOR: fuchsia"&gt;OBJECT_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;@TableName&lt;SPAN style="COLOR: gray"&gt;),&lt;/SPAN&gt; @index_id &lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt; &lt;SPAN style="COLOR: gray"&gt;NULL,&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;'DETAILED'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;SELECT&lt;/SPAN&gt; @index_size &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; IndexSizeBytes&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;END&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8342178" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author><category term="SQL Index Size Blog" scheme="http://blogs.msdn.com/sferg/archive/tags/SQL+Index+Size+Blog/default.aspx" /></entry><entry><title>My first MSDN Blog!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/sferg/archive/2007/09/20/my-first-msdn-blog.aspx" /><id>http://blogs.msdn.com/sferg/archive/2007/09/20/my-first-msdn-blog.aspx</id><published>2007-09-20T21:27:00Z</published><updated>2007-09-20T21:27:00Z</updated><content type="html">&lt;P&gt;I was encouraged by my manager to start blogging, so here I am.&amp;nbsp; I hope to keep this up to date with tidbits of information I learn throughout my adventures here at Microsoft.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5015986" width="1" height="1"&gt;</content><author><name>sferg</name><uri>http://blogs.msdn.com/members/sferg.aspx</uri></author></entry></feed>