El proveedor OLE DB "Microsoft.ACE.OLEDB.12.0" para el server vinculado "(nulo)"

Estoy tratando de ejecutar la siguiente statement, pero estoy recibiendo los posts de error justo debajo. Investigué respuestas sin fin y ninguna me ha funcionado. Estoy ejecutando Office 365 (64 bits). He cargado el Motor de database de Microsoft Access (64 bits). Esto es en Visual Studio 2013 con SSDT y SQL Server 2012. No tengo acceso a los cambios de entorno o parameters de inicio a SQL Server. Cualquier ayuda es apreciada.

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.15.0', 'Excel 12.0;Database=C:\Users\UserName\Folder\SomeFile.xlsx;;HDR=NO;IMEX=1', [Table 1$]) 
  • Msg 7399, nivel 16, estado 1, línea 1 El proveedor OLE DB "Microsoft.ACE.OLEDB.15.0" para el server vinculado "(nulo)" informó un error. El proveedor no dio ninguna información sobre el error.
  • Msg 7303, nivel 16, estado 1, línea 1 No se puede inicializar el object de origen de datos del proveedor OLE DB "Microsoft.ACE.OLEDB.15.0" para el server vinculado "(nulo)".

Esto es lo que he intentado:

Primero, corrí …

 sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO 

Seguido por … sin amor.

 EXEC sys.sp_addsrvrolemember @loginame = N'<<Domain\User>>', @rolename = N'sysadmin'; GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'AllowInProcess', 1 GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.15.0', N'DynamicParameters', 1 GO 

He cambiado el código para leer Microsoft.ACE.OLEDB.12.0 ya que también he visto eso, todavía no me gusta.

También he comprobado los permissions de C: \ Users \ MSSQLSERVER \ AppData \ Local \ Temp y C: Windows \ ServiceProfiles \ NetworkService \ AppData \ Local que han otorgado Control total para lo siguiente: Sistema, MSSQLSERVER y Administradores, Servicio de networking (en el último).

Todavía no hay amor

Por último, he intentado cambiar a la versión de 32 bits del motor de database de Microsoft Access que persiste en no funcionar.

Ayuda, ¿alguien?

http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx

Esto resuelve el problema. Por algún motivo, a SQL Server no le gusta la count MSSQLSERVER pnetworkingeterminada. Cambiarlo a una count de usuario local resuelve el problema.

Asegúrese de que el file de Excel no esté abierto.

En lugar de cambiar al usuario, he encontrado este consejo:

https://social.technet.microsoft.com/Forums/lync/en-US/bb2dc720-f8f9-4b93-b5d1-cfb4f8a8b1cb/the-ole-db-provider-microsoftaceoledb120-for-linked-server-null-reported- an-error-access? forum = sqldataaccess

Esto podría ayudar a alguien más, después de probar cada solución para intentar y corregir este error en SQL 64.

No se puede inicializar el object de fuente de datos del proveedor OLE DB "Microsoft.ACE.OLEDB.12.0" para el server vinculado "(nulo)".

.. Encontré un artículo aquí …

http://sqlserverpedia.com/blog/sql-server-bloggers/too-many-bits/

..que sugirió que conceda permiso completo a todos en esta carpeta …

C: \ Users \ SQL Nombre de la count del service \ AppData \ Local \ Temp

¡Y listo! Mi consulta de repente estalló en la vida. Golpeé el air con deleite.

Edwaldo

Esto es para mi reference, ya que encontré una variedad de posts de error de SQL al intentar conectarme con el proveedor. Otras respuestas prescriben "intente esto, luego esto, luego esto". Aprecio las otras respuestas, pero me gusta emparejar soluciones específicas con problemas específicos


Error

… proveedor no dio información … No se puede inicializar el object de origen de datos …

Números de error

7399, 7303

Detalle de error

 Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. The provider did not give any information about the error. Msg 7303, Level 16, State 1, Line 2 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

Solución

El file estaba abierto. Cierralo.

Crédito


Error

Acceso denegado … No se puede get la información de la columna …

Números de error

7399, 73 50

Detalle de error

 Msg 7399, Level 16, State 1, Line 2 The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. Access denied. Msg 7350, Level 16, State 2, Line 2 Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

Solución

Dar acceso

Crédito


Error

No se proporciona ningún valor para uno o más parameters necesarios … No se puede ejecutar la consulta …

Números de error

??? , 73 20

Detalle de error

 OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "No value given for one or more requinetworking parameters.". Msg 7320, Level 16, State 2, Line 2 Cannot execute the query "select [Col A], [Col A] FROM $Sheet" against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

Solución

Los nombres de las columnas pueden estar equivocados. ¿ [Col A] y [Col B] realmente existen en su spreadsheet?


Error

"Error no especificado" … No se puede inicializar el object de origen de datos …

Números de error

??? , 7303

Detalle de error

 OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error". Msg 7303, Level 16, State 1, Line 2 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

Solución

Ejecute SSMS como administrador. Ver esta pregunta


Otras references

Otras respuestas que sugieren modificar properties. No estoy seguro de cómo la modificación de estas dos properties (revisarlas o desmarcarlas) ayudaría.

Esto es específicamente lo que funcionó para mí solo cuando el file de Excel que se consultaba no estaba abierto y cuando ejecutaba el service SQL Server como yo [como un usuario que tiene acceso al sistema de files]. Veo partes de mi respuesta ya entregadas en otra parte, así que me disculpo por cualquier networkingundancia, pero en aras de una respuesta más breve:

 USE [master] GO EXEC sp_configure 'Show Advanced Options', 1 RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE GO EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 GO EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 GO SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\MyExcelFile.xlsx', 'SELECT * FROM [MyExcelSheetName$]') 

En el server SQL, pruebe estos pasos:

  1. Abre una database.
  2. Haga clic en la opción Server Object .
  3. Haga clic en Linked Servers .
  4. Haga clic en Providers .
  5. Haga clic derecho en Microsoft.ACE.OLEDB.12.0 y click Properties .
  6. Desmarque todas las opciones y cierre.

Estoy ejecutando SQL Server 2014 64 bit en Windows 10. Intenté todo, lo que lo hizo funcionar fue:

 EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0 

No sé por qué el AllowInProcess apagado lo hace funcionar, pero esa fue la key en mi caso. Gracias por la sugerencia de desactivar todas las opciones en el server de enlaces.

  1. Cierre SQL Server Management Studio. Escriba Services.msc en el command de ejecución para abrir la window de services.

  2. Busque el service de SQL Server y haga clic derecho y select properties.

  3. En la pestaña Iniciar session, select la count del sistema / o select su ID de dominio y Cuenta y contraseña.

  4. Una vez que encuentre su nombre de usuario, presione OK.

  5. Ahora escriba sus passwords de inicio de session en ambos campos.

  6. Reinicie los services para que los nuevos cambios se apliquen como se muestra en la figura a continuación.

  7. Ahora inicie SQL Server Management Studio e intente ejecutar la consulta si todavía no funciona intente reiniciar el sistema.

… o ejecuta la siguiente consulta:

 USE [master] GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 GO 

En nuestro caso, ayudó a agregar un parámetro para el service SQL Server:

  1. Vaya a Services.msc , select SQL Server Service y abra Properties.
  2. Elija Startup Parameters y agregue el nuevo parámetro –g512
  3. Reinicie el service del server SQL.

En mi caso, este problema estaba ocurriendo porque estaba accediendo al file de la carpeta compartida usando computerName. OPENROWSET ('' Microsoft.Jet.OLEDB.4.0 '', '' Excel 8.0; Base de datos = '\ ntpc0100 \ MyshanetworkingFolder \ KPI_tempData \ VariablePayoutDetails.xls'; IMEX = 1; '', '…..) Insistido en utilizando computerName ntpc0100 (cualquiera que sea el nombre de su máquina) debe especificar IPaddress de su máquina . por ejemplo: – OPENROWSET ('' Microsoft.Jet.OLEDB.4.0 '', '' Excel 8.0; Database = '\ 193.34.23.200 \ MyshanetworkingFolder \ KPI_tempData \ KPIVariablePayoutDetails.xls' ….);

Para mí, estas dos cosas ayudaron en diferentes ocasiones:

1) Si acaba de instalar el time de ejecución de MS Access, reinicie el server. Rebotar la instancia de la database no es suficiente.

2) Además de asegurarse de que el file de Excel no esté abierto, compruebe que no tiene el Explorador de Windows abierto con el panel de vista previa activado, que también lo bloquea.

 Exec sp_configure 'show advanced options', 1; RECONFIGURE; GO Exec sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1; GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1; GO Insert into OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=C:\upload_test.xlsx;Extended Properties=Excel 12.0')...[Sheet1$] SELECT ColumnNames FROM Your_table -- Sheet Should be already Present along with headers EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 0; GO EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 0; GO Exec sp_configure 'Ad Hoc Distributed Queries', 0; RECONFIGURE; GO Exec sp_configure 'show advanced options', 0 RECONFIGURE; GO 

Con SQL 2014, cambié el service de SQL Server (MSSQL) para ejecutarlo como LocalSystem . Esto resolvió mi problema.

Solía ​​funcionar como NT_SERVICE\MSSQL$MSSQL en 2008, por lo que recuerdo.

Tenía exactamente el mismo post de error y probé las soluciones sugeridas en este hilo, pero sin éxito.

Lo que me solucionó el problema es abrir el file .xlsx y savelo como file .xls (excel 2003).

tal vez el file estaba dañado o en un formatting diferente, y al savelo de nuevo se arregló.

Este es mi código de error:

 OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'ByStore$'. Make sure the object exists and that you spell its name and the path name correctly. If 'ByStore$' is not a local object, check your network connection or contact the server administrator.". Msg 7350, Level 16, State 2, Procedure PeopleCounter_daily, Line 26 Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

Mi problema era que faltaba el file Excel en la ruta. Basta con poner el file con la hoja correcta.