VB.NET ADODB.记录集和SQL Server 2019 Latin1_General_100_CI_AI_SC



我需要在仍然使用ADODB和记录集的遗留应用程序中添加对UTF8的支持。在sql server 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()

当我注释掉那行代码时,我可以加载记录集,但一旦我尝试循环它,应用程序就会再次挂在rs.EOF,我必须强制退出。

有人在使用ADODB的SQL Server 2019中使用新的UTF8排序规则时运气好吗?由于这些组件都很旧,所以在条款或支持方面没有太多内容。如能提供任何帮助,我们将不胜感激。

ADO是OleDb的包装器,因此您可能使用旧的OleDb提供程序,如旧的SQLOLEDB或旧的SQLNCLI。

为了连接到SQL Server的现代版本,ADO应用程序应始终使用新的Microsoft OLE DB驱动程序(也称为MSOLEDBSQL(。

最新更新