SQL - Error del Servidor DELETE e INSERT desde Excel

 
Vista:
sin imagen de perfil

Error del Servidor DELETE e INSERT desde Excel

Publicado por Andrewsky (2 intervenciones) el 20/10/2016 01:32:40
Tengo un problema. He creado un procedimiento que primero borra los registros de mi tabla y despues los importa desde excel. Al ejecutar, este borra los registros, pero al intentar conectarse a excel para recuperar los datos me sale este mensaje de error:


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.


Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".


He intentado crear un procedimiento donde solo se ejecute la importación y funciona, pero lo que necesito es que al llamar a un solo procedimiento se borre e importe.

Ya que para solucionar esto he tenido que reiniciar el servicio del servidor y hasta ahora toma tiempo, además lo ideal es que sea automatico y que las ejecuciones no sean tan manuales.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Error del Servidor DELETE e INSERT desde Excel

Publicado por leonardo_josue (1173 intervenciones) el 20/10/2016 17:13:17
Hola Andrewsky:

El error está claramente en la línea 23, ojo con eso... ¬¬

¿Qué línea 23? pues ese es el problema... sin tu código lo único que estamos haciendo tratar de jugar al adivino, vayamos por partes. En primer lugar debes de comenzar por decirnos con qué BD's estás trabajando. Esto es indispensable porque todos los DBMS's tienen una sintaxis similar pero diferente.

Segundo, debes de incluir el código de tu SP a partir de este código entonces podríamos detectar el error.

Tercero, de acuerdo a la descripción del error, el problema está en la declaración de la conexión a la hoja de EXCEL, ya que lo que dice es NO TIENEN NINGÚN DATO DE CONEXIÓN, por eso aparece como (linked server "(null)").

Si dices que ya tienes un SP que hace la importación y funciona, postea también ese código para poder ver las diferencias.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error del Servidor DELETE e INSERT desde Excel

Publicado por Andrewsky (2 intervenciones) el 20/10/2016 18:44:37
El codigo en ese procedimiento es mas o menos asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELETE tabla1
WHERE columna1=@datorequerido
 
INSERT INTO tabla1
SELECT
 	[Código]
	,@datorequerido AS [columna1]
	,[columna2]
	,[columna3]
	,[columna4]
	,[columna5]
FROM OPENDATASOURCE
	('Microsoft.ACE.OLEDB.12.0',
	'Data Source=\\usuario_de_red\carpeta_compartida\archivo_excel.xlsm;Extended Properties=Excel 12.0'
	)...[Hoja1$]

La diferecia es que repito los delete e insert 10 veces, porque mi excel tiene 10 hojas. Solo cambio el nombre de la tabla y el nombre de la hoja.
Ya intenté meter el insert a otro procedimiento y no funcionó.
Solo borra lo primero y luego sale el mensaje de error.
El otro procedimiento lo que hace es solo insertar, no incluye los DELETE, asi funciona, pero yo quiero que borre e inserte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Error del Servidor DELETE e INSERT desde Excel

Publicado por leonardo_josue (1173 intervenciones) el 20/10/2016 22:53:13
Sigues sin mencionar con qué BD's estás trabajando, pero puedo suponer que se trata de SQL Server, (pero la versión/edición del mismo sólo Dios y tú la saben.)

Hay varios detalles que tienes que cuidar.

1. Verificar que la ruta del archivo sea correcta. Lo recomendable a fin de probar es que tengas el archivo físicamente en el equipo, para no tener que accederlo desde una ruta de red.

2. OPENDATASOURCE tiene varias sintaxis para documentos de EXCEL, prueba así:

1
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',  'Excel 12.0;Database=C:\excel-sql-server.xlsx', [Sheet1$])

NOTA.

Observa dos cosas, primero que la ruta como comenté en el punto anterior hace referencia a una ruta local (C:\) y además el archivo es de tipo XLSX. Cambia tu archivo para que no sea con MACROS, al menos para hacer pruebas y descartar que el problema sea por ahí.

3. checa estas ligas

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

https://blogs.msdn.microsoft.com/docast/2015/07/21/opendatasource-query-execution-error-while-using-sql-public-account/

Ahí aparece una posible solución para el error que estás mencionando.

4. Cambia la sentencia INSERT y deja sólo el puro SELECT hasta que te asegures que estás leyendo correctamente los datos del Excel. es posible que tengas un problema en cuanto el número de columnas y/o el tipo de datos.

Entre más "aisles" el problema, más factible es que puedas dar con la solución.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar