У меня есть простой запрос выбора в дословной строке в C # /. Net core 2.1, который выглядит примерно так:
public const string QUERY_HTML = @"SELECT col1, col2 from table1 JOIN table2 ON table1.id = table2.id WHERE data LIKE '%<span class=''myclass-ident''%' ORDER BY col1";
EDIT : По предложению комментаторов я запустил профилировщики запрос в профилировщике совпадает с запросом в коде и визуализаторе текста при отладке.Другими словами, приведенный выше обобщенный запрос, похоже, запускается, по крайней мере, так говорит профилировщик.
Фактический запрос не важен - я обобщил имена столбцов, но это то же самоеиначе.Если я запускаю его в SQL Server Management Studio, он работает просто отлично.
Но когда мой код выполняет запрос, он забивает базу данных.То есть база данных полностью скелета.Все пользователи, таблицы, хранимые процедуры и данные (очевидно, если нет таблиц) пропали.
Если я выполню запрос без знака @
, он будет работать нормально.
Я не смогусначала не верю - я подумал, что должно быть что-то еще.Я восстановил свою локальную базу данных и снова запустил ее со знаком @
, и она снова вернула базу данных в исходное состояние / состояние скелета.Я также попробовал его на другом компьютере.
Очевидно, я знаю, что перед запросом не используется знак @
.Первоначально он был там, чтобы избежать некоторых символов, которые с тех пор были удалены, поэтому мне больше не нужен @
, но он все еще оставляет вопрос о том, почему @
может привести к засорению базы данных?
Версия SQL Server 2012 (v11.0.7001.0).
Если это поможет, вот код, выполняющий запрос
using (var conn = new SqlConnection(Constants.LOCAL))
{
using (var cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = Constants.QUERY_HTML;
conn.Open();
DataTable dt = new DataTable();
try
{
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
if (dt.Rows.Count > 0)
{
result.payload = dt;
result.hasPayload = true;
result.code = 200;
}
return result;
}
}