SQL Сервер, возвращающий неверные (юникод / ​​шестнадцатеричные) символы в результате - PullRequest
0 голосов
/ 15 января 2020

При запросе списка больших столбцов NTEXT SQL я начал с большей частотой возвращать мусор в результаты запроса. Я не уверен, что CISCO VPN вызывает проблему или какой-то другой тип «драйвера» (сетевой драйвер, драйвер Wi-Fi, настройка языка на моем ноутбуке?). Я в полной растерянности. Но вы можете увидеть ошибку на моем снимке экрана ниже. Обратите внимание, что одна строка «Успешно» удалена, это означает, что она работала один раз, но во второй раз не сработала. Я получаю случайное количество успехов, затем происходит сбой.

У меня были другие люди, которые пытались использовать тот же сценарий при подключении к той же VPN (однако они находятся в другом месте и, очевидно, на другом компьютере), и они могут работать это без ошибок. Один человек запускал его 5 раз (так что 50 успешных запросов).

Failure

Я использую LINQPad (и, очевидно, LINQ to SQL) в качестве тест жгута и вот мой сценарий. Это простой скрипт для l oop FolderItem.fiItem столбцов (NTEXT), который разбивает их на XML и добавляет его к элементу root. Вы можете видеть, что я пытался выполнять прямые запросы L2S вместе с методом ExecuteCommand, чтобы увидеть, как он повлиял на результат, но ничего не изменилось.

ОБНОВЛЕНИЕ - Я только что подключился к своему телефону точка доступа вместо моего обычного WIFI (усилителя роутеров), и он сделал это через скрипт без ошибок. Я серьезно не понимаю, на что обратить внимание, чтобы попытаться решить, но при подключении к WIFI через VPN скорость загрузки составляет около 80 МБ. Есть идеи / предложения?

Сценарий

void Main()
{
    var query = @"SELECT [t0].[fiEntryType], [t0].[fiItem]
    FROM[dbo].[FolderItems] AS[t0]
    LEFT OUTER JOIN[dbo].[Groups] AS[t1] ON[t1].[gKey] = [t0].[figKey]
    WHERE[t1].[gName] = 'Tables';";

    var tables = new XElement("Tables" );

    for (int i = 0; i < 10; i++)
    {
        // var folderItems = FolderItems.Where(f => f.Group.gName == "Tables").Select(f => new { f.fiEntryType, f.fiItem });
        var folderItems = ExecuteQuery<TableResult>(query, new object[] { });

        foreach (var fi in folderItems)
        {
            try
            {
                tables.Add(XElement.Parse($"<Table>{fi.fiItem}</Table>"));
            }
            catch (Exception ex)
            {
                fi.Dump();
                throw;
            }
        }

        // tables.Dump();
        "Success".Dump();

        Thread.Sleep( 1000 );
    }
}

// Define other methods and classes here
public class TableResult
{
    public string fiEntryType {get;set;}
    public string fiItem {get;set;}
}

1 Ответ

0 голосов
/ 05 февраля 2020

Не могу объяснить все поведение, но смена программного обеспечения VPN с Cisco на Shrewsoft решила проблему. Shrewsoft был очень solid с момента установки.

...