una - openrowset excel sql server
El proveedor OLE DB "Microsoft.ACE.OLEDB.12.0" para el servidor vinculado "(nulo)" (15)
Estoy tratando de ejecutar la siguiente declaración, pero estoy recibiendo los mensajes de error justo debajo. Investigué respuestas sin fin y ninguna me ha funcionado. Estoy ejecutando Office 365 (64 bits). He cargado el Motor de base de datos 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 parámetros 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 servidor 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 objeto de origen de datos del proveedor OLE DB "Microsoft.ACE.OLEDB.15.0" para el servidor 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 permisos 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 red (en el último).
Todavía no hay amor
Por último, he intentado cambiar a la versión de 32 bits del motor de base de datos de Microsoft Access que persiste en no funcionar.
Ayuda, ¿alguien?
Esto resuelve el problema. Por algún motivo, a SQL Server no le gusta la cuenta MSSQLSERVER predeterminada. Cambiarlo a una cuenta de usuario local resuelve el problema.
Asegúrese de que el archivo de Excel no esté abierto.
Cierre SQL Server Management Studio. Escriba Services.msc en el comando de ejecución para abrir la ventana de servicios.
Busque el servicio de SQL Server y haga clic derecho y seleccione propiedades.
En la pestaña Iniciar sesión, seleccione la cuenta del sistema / o seleccione su ID de dominio y Cuenta y contraseña.
Una vez que encuentre su nombre de usuario, presione OK.
Ahora escriba sus contraseñas de inicio de sesión en ambos campos.
Reinicie los servicios para que los nuevos cambios se apliquen como se muestra en la figura a continuación.
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 el servidor SQL, pruebe estos pasos:
- Abre una base de datos.
- Haga clic en la opción
Server Object
. - Haga clic en
Linked Servers
. - Haga clic en
Providers
. - Haga clic derecho en
Microsoft.ACE.OLEDB.12.0
y haga clic enProperties
. - Desmarque todas las opciones y cierre.
En nuestro caso, ayudó a agregar un parámetro para el servicio SQL Server:
- Vaya a
Services.msc
, seleccione SQL Server Service y abra Properties. - Elija
Startup Parameters
y agregue el nuevo parámetro–g512
- Reinicie el servicio del servidor SQL.
En lugar de cambiar al usuario, he encontrado este consejo:
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 objeto de fuente de datos del proveedor OLE DB "Microsoft.ACE.OLEDB.12.0" para el servidor 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 cuenta del servicio / AppData / Local / Temp
¡Y listo! Mi consulta de repente estalló en la vida. Golpeé el aire con deleite.
Edwaldo
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 clave en mi caso. Gracias por la sugerencia de desactivar todas las opciones en el servidor de enlaces.
En mi caso, este problema estaba ocurriendo porque estaba accediendo al archivo de la carpeta compartida usando computerName. OPENROWSET ('''' Microsoft.Jet.OLEDB.4.0 '''', '''' Excel 8.0; Base de datos = ''/ ntpc0100 / MysharedFolder / 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 / MysharedFolder / KPI_tempData / KPIVariablePayoutDetails.xls'' ....);
Esto es específicamente lo que funcionó para mí solo cuando el archivo de Excel que se consultaba no estaba abierto y cuando ejecutaba el servicio SQL Server como yo [como un usuario que tiene acceso al sistema de archivos]. Veo partes de mi respuesta ya entregadas en otra parte, así que me disculpo por cualquier redundancia, 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$]'')
Para mí, estas dos cosas ayudaron en diferentes ocasiones:
1) Si acaba de instalar el tiempo de ejecución de MS Access, reinicie el servidor. Rebotar la instancia de la base de datos no es suficiente.
2) Además de asegurarse de que el archivo 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 servicio 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 mensaje de error y probé las soluciones sugeridas en este hilo, pero sin éxito.
Lo que me solucionó el problema es abrir el archivo .xlsx y guardarlo como archivo .xls (excel 2003).
tal vez el archivo estaba dañado o en un formato diferente, y al guardarlo 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 archivo Excel en la ruta. Basta con poner el archivo con la hoja correcta.
Esto es para mi referencia, ya que encontré una variedad de mensajes 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 objeto 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 archivo estaba abierto. Cierralo.
Crédito
- https://.com/a/29369868/1175496
Error
Acceso denegado ... No se puede obtener 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
- https://.com/a/27509955/1175496
Error
No se proporciona ningún valor para uno o más parámetros 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 required 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 hoja de cálculo?
Error
"Error no especificado" ... No se puede inicializar el objeto 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 referencias
Otras respuestas que sugieren modificar propiedades. No estoy seguro de cómo la modificación de estas dos propiedades (verificarlas o desmarcarlas) ayudaría.
- https://.com/a/31605038/1175496
- http://www.aspsnippets.com/Articles/The-OLE-DB-provider-Microsoft.Ace.OLEDB.12.0-for-linked-server-null.aspx
- 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 # 3fcc14f4-420e-4544-be74-eea1e0e78462