VB. NET ADODB.Recordset и SQL Server 2019 Latin1_General_100_CI_AI_SC_UTF8 Приложение зависания сортировки - PullRequest
1 голос
/ 24 марта 2020

У меня есть требование добавить поддержку UTF8 в устаревшее приложение, которое все еще использует ADODB и наборы записей. На sql сервере 2019 я сконфигурировал свою базу данных для использования сортировки Latin1_General_100_CI_AI_SC_UTF8. Теперь, когда я пытаюсь запросить мои данные в наборе записей, мое приложение просто зависает. Я смог указать свою проблему на строку кода, настраивающую набор записей.

Connect = CreateObject("ADODB.Connection")
Connect.Open(MyConnectionString) <== Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=servername;Initial Catalog=Test
rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = Connect
rs.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly
rs.LockType = ADODB.LockTypeEnum.adLockReadOnly
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient <== When set, causes the app to hang
rs.Open("SELECT columnName FROM dbo.table")  <== Assumes db collation is set to UTF8. When CursorLocation  is set to client, application will hang here
or
rs.Open("SELECT columnName COLLATE Latin1_General_100_CI_AI_SC_UTF8 FROM dbo.table")  <== When CursorLocation is set to client, application will hang here
If rs.EOF = False Then  <== When CursorLocation is not set to client, application will hang here
    ...
End If
rs.Close()
conn.Close()

Когда я закомментирую эту строку кода, я могу загрузить набор записей, но как только я пытаюсь l oop это, приложение снова зависает на rs.EOF, и я должен принудительно завершить работу.

Кто-нибудь имел какую-либо удачу, используя новый порядок сортировки UTF8 в SQL Server 2019 с ADODB? Поскольку компоненты довольно старые, их не так много в плане их поддержки или поддержки. Буду очень признателен за любую помощь.

1 Ответ

0 голосов
/ 24 марта 2020

ADO - это оболочка над OleDb, поэтому вы можете использовать более старый поставщик OleDb, например, старый SQLOLEDB или также старый SQLNCLI.

Для подключения к современным версиям SQL серверные приложения ADO должны всегда используйте новый драйвер Microsoft OLE DB для SQL сервера он же MSOLEDB SQL.

...