无法使用新的MSOLEDBSQL连接到SQL Server 2019
我正在将我的应用程序转换为使用SQL Server本机客户端11.0中的MSOLEDBSQL 我已将连接字符串从“Driver={SQL Server Native Client 11.0}”更改为“Provider=MSOLEDBSQL”,以及UID、PWD、服务器、数据库参数 但我无法连接到数据库,在使用SQL\u Driver\u COMPLETE时收到“[Microsoft][ODBC Driver Manager]对话框失败”错误消息无法使用新的MSOLEDBSQL连接到SQL Server 2019,sql,sql-server,oledb,sql-server-2019,Sql,Sql Server,Oledb,Sql Server 2019,我正在将我的应用程序转换为使用SQL Server本机客户端11.0中的MSOLEDBSQL 我已将连接字符串从“Driver={SQL Server Native Client 11.0}”更改为“Provider=MSOLEDBSQL”,以及UID、PWD、服务器、数据库参数 但我无法连接到数据库,在使用SQL\u Driver\u COMPLETE时收到“[Microsoft][ODBC Driver Manager]对话框失败”错误消息 IM008 Dialog failed T
IM008 Dialog failed The driver attempted to display its login dialog box and failed.
WindowHandle was a null pointer, and DriverCompletion was not SQL_DRIVER_NO_PROMPT.
类似地,当使用SQL\u驱动程序\u NOPROMPT时,它会抛出一个错误“[Microsoft][ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”
调用SQLDriverConnect()会返回上述错误
我已经下载并安装了,可以在system32文件夹中看到二进制文件
根据MS文档,注册表设置将作为安装的一部分进行
All appropriate registry settings for the OLE DB Driver for SQL Server are made as part of the installation process.
提前感谢。根据错误提示,您是通过ODBC而不是OLE DB连接的。虽然可以使用Microsoft ODBC驱动程序包装OLE DB驱动程序,但不需要这样做,因为SQL Server也有一个,这是推荐的方法。使用OLE DB并连接
MSOLEDBSQL
驱动程序,或者使用ODBC并连接{ODBC driver 17 for SQL Server}
。感谢您的回复Jeroen。您能否建议如何确认是否未拾取OLE DB驱动程序并选择ODBC。如何使用OLEDB驱动程序。我们是否需要对系统注册表或配置进行任何更改?如果您使用的是ODBC,那么您使用的是ODBC。如果您使用的是OLE DB,那么您将使用。这些是访问数据库的完全不同的API;大多数应用程序只支持其中一种。不能通过调整系统设置在图层之间进行更改。请为您正在使用的数据访问技术使用正确的驱动程序。@JeroenMostert可能需要实际检查OLE DB,以解决直接ODBC驱动程序无法正确处理的一些varchar(MAX)问题。我能够使用JSON等通过ODBC返回varchar(MAX)的新特性的唯一方法是通过Provider=MSDASQL;DRIVER={SQL Server}
@CharlesOkwuagwu:假设您使用的是最新版本,驱动程序可能确实正确处理了它,但客户端软件没有准备好处理它。行为(正确地)将长度返回为“unlimited”,而以前的版本返回长度,这可能会导致其他问题。包装OLE DB驱动程序可能会“修复”这一问题,但会为没有底层支持的类型(如DATETIMEOFFSET
)带来其他问题。根据错误提示,您是通过ODBC而不是OLE DB连接的。虽然可以使用Microsoft ODBC驱动程序包装OLE DB驱动程序,但不需要这样做,因为SQL Server也有一个,这是推荐的方法。使用OLE DB并连接MSOLEDBSQL
驱动程序,或者使用ODBC并连接{ODBC driver 17 for SQL Server}
。感谢您的回复Jeroen。您能否建议如何确认是否未拾取OLE DB驱动程序并选择ODBC。如何使用OLEDB驱动程序。我们是否需要对系统注册表或配置进行任何更改?如果您使用的是ODBC,那么您使用的是ODBC。如果您使用的是OLE DB,那么您将使用。这些是访问数据库的完全不同的API;大多数应用程序只支持其中一种。不能通过调整系统设置在图层之间进行更改。请为您正在使用的数据访问技术使用正确的驱动程序。@JeroenMostert可能需要实际检查OLE DB,以解决直接ODBC驱动程序无法正确处理的一些varchar(MAX)问题。我能够使用JSON等通过ODBC返回varchar(MAX)的新特性的唯一方法是通过Provider=MSDASQL;DRIVER={SQL Server}
@CharlesOkwuagwu:假设您使用的是最新版本,驱动程序可能确实正确处理了它,但客户端软件没有准备好处理它。行为(正确地)将长度返回为“unlimited”,而以前的版本返回长度,这可能会导致其他问题。包装OLE DB驱动程序可能会“修复”这一问题,但会为没有底层支持的类型引入其他问题(如DATETIMEOFFSET
)。
All appropriate registry settings for the OLE DB Driver for SQL Server are made as part of the installation process.