Nie można utworzyć instancji OLE DB provider Microsoft.Jet.OLEDB.4.0 Dla linked server null
Próbuję wyeksportować z moich danych Table
do Excel
poprzez T-SQL
zapytanie. Po małych badaniach wpadłem na to
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=G:\Test.xls;',
'SELECT * FROM [Sheet1$]')
SELECT *
FROM dbo.products
Gdy wykonam powyższe zapytanie otrzymuję ten błąd
Msg 7302, poziom 16, Stan 1, linia 7 nie może utworzyć instancji OLE DB provider " Microsoft.Jet.OLEDB.4.0 " Dla linked server "(null)".
Więc poszedł przez internet dla rozwiązania, dostał poniższy link
W powyższym linku mówili, że musimy być administratorem, aby utworzyć folder na dysku C TEMP
folder ponieważ OPENROWSET
tworzy niektóre pliki lub folder wewnątrz TEMP
folder
Robię to w moim domowym komputerze i jestem administratorem. Nadal dostaję ten sam błąd.
SQL Serwer szczegóły
Microsoft SQL Server 2016 ( RC1) - 13.0.1200.242 (X64) Mar 10 2016 16: 49: 45 Copyright (c) Microsoft Corporation Enterprise Evaluation Wersja 64-bitowa na Windows 10 Pro 6.3 (Build 10586: )
Wszelkie wskazówki, aby rozwiązać problem, będą wysoko cenione
Update: już skonfigurowałem Ad Hoc Distributed Queries
i
Wykonano poniższe zapytania
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
Teraz dostaję ten błąd
Msg 7438, poziom 16, Stan 1, linia 7 32-bitowy dostawca OLE DB "Microsoft.Jet.OLEDB.4.0" nie można załadować w procesie na 64-bitowym SQL Serwer.
4 answers
Mam MS SQL server 2012 i Office 2013. Wydaje się to być bardzo wybredne, więc być może będziesz musiał dostosować się do swoich konkretnych wersji.
- Pobierz Microsoft.ACE.OLEDB.12.0 Dla Windows, Wersja 64 bitowa znajduje się tutaj: https://www.microsoft.com/en-us/download/details.aspx?id=13255
- zainstaluj go na swoim serwerze.
- Sprawdź użytkownika uruchamiającego SQL Server i upewnij się, że użytkownik ma dostęp do katalogu temp C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp jeśli jest to konto usługi lokalnej lub C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp jeśli to konto sieciowe.
- Skonfiguruj 'rozproszone zapytania Ad Hoc' i Włącz pliki
Microsoft.ACE.OLEDB
w następujący sposób:
Oto komendy SP_CONFIGURE:
SP_CONFIGURE 'show advanced options', 1;
GO
RECONFIGURE;
SP_CONFIGURE 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
Na nowszym SQL Server 2014 użyłeś 'DynamicParameters'
zamiast 'DynamicParam'
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
Upewnij się, że zarejestrowałeś msexcl40.dll jak ten:
regsvr32 C:\Windows\SysWOW64\msexcl40.dll
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-15 19:29:37
Sprawdź sp_configure / RECONFIGURE...
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
Zobacz te linki, aby uzyskać więcej informacji:
Https://technet.microsoft.com/en-us/library/aa259616(v=sql. 80). aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 13:44:24
Działa !!! Wielkie dzięki. Tylko dla 64-bitowego serwera Win 2012R2. Pozwól mi umieścić cały działający skrypt częściowo powtarzające się bity z góry, które nie są łatwe (jak dla mnie) do połączenia ze sobą:
1) Pobierz Microsoft.ACE.OLEDB.12.0 Dla Windows, Wersja 64 bitowa znajduje się tutaj: https://www.microsoft.com/en-us/download/details.aspx?id=13255
2) Utwórz plik excel z odpowiednimi kolumnami (w tym przypadku nazwa i klasa).
3) Uruchom kod poniżej:
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
/* -- Not sure commented bits are necessary but I also have run them
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
-- below two lines failed with: Msg 2787, Level 16, State 1, Procedure sp_MSset_oledb_prop, Line 106 Invalid format specification: '%1!.'.
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
-- but works all two as below:
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
-- Succeded to run after success with Excel so does not looks like necessary
*/
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\testing.xlsx;',
'SELECT Name, Class FROM [Sheet1$]')
SELECT [Name],[Class] FROM Qry_2
GO
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-17 12:14:37
Wykonaj poniższe zapytania, aby rozwiązać ten problem:
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-03 09:11:34