title: Print Dynamic Parameter Values
body: <p>I've used dynamic SQL for many tasks and continuously run into the same problem: Printing values of variables used inside the Dynamic T-SQL statement.</p>
  
  <p>EG:</p>
  
  <pre><code>Declare @SQL nvarchar(max), @Params nvarchar(max), @DebugMode bit, @Foobar int
  select @DebugMode=1,@Foobar=364556423
  
  set @SQL='Select @Foobar'
  set @Params=N'@Foobar int'
  
  if @DebugMode=1 print @SQL
  exec sp_executeSQL @SQL,@Params
      ,@Foobar=@Foobar
  </code></pre>
  
  <p>The print results of the above code are simply "Select @Foobar". Is there any way to     dynamically print the values &amp; variable names of the sql being executed? Or when doing the print, replace parameters with their actual values so the SQL is re-runnable?</p>
  
  <p>I have played with creating a function or two to accomplish something similar, but with data type conversions, pattern matching truncation issues, and non-dynamic solutions. I'm curious how other developers solve this issue without manually printing each and every variable manually.</p>