Выполнение необработанного запроса select в дословной строке (@) в ядре ядра .net База данных SQL Server - PullRequest
0 голосов
/ 30 мая 2019

У меня есть простой запрос выбора в дословной строке в 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...