Профилировщик является руками вниз Ваш наилучший вариант.
Вы, возможно, должны были бы скопировать ряд операторов от профилировщика из-за того, чтобы готовить +, выполняют включенные шаги.
При использовании SQL Server Вы могли бы использовать SQL Server Profiler (если у Вас есть он) просмотреть командную строку, которая на самом деле выполняется. Это было бы полезно для того, чтобы скопировать/вставить протестировать purpuses, но не для входа, я боюсь.
Вы не можете, потому что это не генерирует SQL.
параметризированный запрос (тот в CommandText
) отправляется в SQL Server как эквивалент подготовленного оператора. При выполнении команды параметры и текст запроса рассматривают отдельно. Ни в каком смысле вовремя сгенерирована полная строка SQL.
можно использовать SQL Profiler для взгляда негласно.
Для входа целей я боюсь, что нет никакого более хорошего способа сделать это, но создать строку самостоятельно:
string query = cmd.CommandText;
foreach (SqlParameter p in cmd.Parameters)
{
query = query.Replace(p.ParameterName, p.Value.ToString());
}
Расширенный код Kon , чтобы помочь отладить хранимую процедуру:
private void ExtractSqlCommandForDebugging(SqlCommand cmd)
{
string sql = "exec " + cmd.CommandText;
bool first = true;
foreach (SqlParameter p in cmd.Parameters)
{
string value = ((p.Value == DBNull.Value) ? "null"
: (p.Value is string) ? "'" + p.Value + "'"
: p.Value.ToString());
if (first)
{
sql += string.Format(" {0}={1}", p.ParameterName, value);
first = false;
}
else
{
sql += string.Format("\n , {0}={1}", p.ParameterName, value);
}
}
sql += "\nGO";
Debug.WriteLine(sql);
}
В моем первом тестовом сценарии, это генерировало:
exec dbo.MyStoredProcName @SnailMail=False
, @Email=True
, @AcceptSnailMail=False
, @AcceptEmail=False
, @DistanceMiles=-1
, @DistanceLocationList=''
, @ExcludeDissatisfied=True
, @ExcludeCodeRed=True
, @MinAge=null
, @MaxAge=18
, @GenderTypeID=-1
, @NewThisYear=-1
, @RegisteredThisYear=-1
, @FormersTermGroupList=''
, @RegistrationStartDate=null
, @RegistrationEndDate=null
, @DivisionList='25'
, @LocationList='29,30'
, @OneOnOneOPL=-1
, @JumpStart=-1
, @SmallGroup=-1
, @PurchasedEAP=-1
, @RedeemedEAP=-1
, @ReturnPlanYes=False
, @MinNetPromoter=-1
, @MinSurveyScore=-1
, @VIPExclusionTypes='-2'
, @FieldSelectionMask=65011584
, @DisplayType=0
GO
необходимо будет, вероятно, добавить еще некоторое условное выражение "....." присвоения типа, например, для дат и времени.