1. 问题描述:今天在使用oledb批量向SQLSERVER中插入数据时,调用CoCreateInstance创建对象失败,返回值为:-2147221164,经过存细查询,这个值表示的意思是注册表找不到SQLNCLI_CLSID这一项,因为在我的开发机上,这个值等于CLSID_SQLNCLI11,在注册表可以找到,而在生产环境的服务器上,确实搜不到这一项。
2. 解决方法:明确问题出在服务器上没有安装SQLSERVER驱动。
2.1 服务器上安装相应的区驱,在这个网址有详细的讲解:
https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-ver15
下载 SQL Server Native Client 2012 的sqlncli.msi ,我选的是x64。
2.2 安装好sqlncli.msi这个驱动后,在注册表中可以查到SQLNCLI11这一项,然后调用CoCreateInstance创建COM对象即可成功。