2012-08-23 13 views
9

का उपयोग कर एक्सेल शीट को टेम्पल तालिका में प्राप्त करें। मैं इस एक्सेल शीट को एक टेबल में प्राप्त करने का प्रयास कर रहा हूं, इसलिए मैं इसकी जानकारी के साथ तालिकाओं को अपडेट करने के लिए इसे चुनिंदा कथन लागू कर सकता हूं।एक स्क्रिप्ट

SELECT * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
      'Excel 8.0;Database=C:\PB.xlsx', 
      'SELECT * FROM [Sheet1$]') 

मैं 64 बिट मशीन चला रहा हूं। कोई विचार नहीं कि यह एक्सेल संस्करण क्या है।

त्रुटि:

Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "Microsoft.Jet.OLEDB.4.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 1 Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

जब मैं एक्सेल 12.0 करने के लिए बदल;

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Could not find installable ISAM.". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

+0

जब मुझे ये त्रुटियां मिलीं तो मुझे हमारे डीबीए द्वारा बताया गया था क्योंकि यह सर्वर पर ड्राइवर को स्थापित करने की आवश्यकता है। क्या यह आपके पर स्थापित है? – Taryn

+0

@bluefeet यह वर्तमान में मेरा लैपटॉप है, और मैंने कुछ भी अतिरिक्त स्थापित नहीं किया है, इसलिए यदि यह 2008 आर 2 में नहीं है। तो नहीं। – Doomsknight

+0

कुछ समय पहले 32/64 बिट ओडीबीसी चालक असंगतता के कारण मुझे 739 9 त्रुटि हुई थी। मैं Excel वर्कशीट से SQL Server 2008 R2 64 बिट्स में डेटा पढ़ने की कोशिश कर रहा था। माइक्रोसॉफ्ट-जेट.ऑलेडीबी ड्राइवर 32 बिट्स है। दुर्भाग्य से मैं इस मुद्दे को हल नहीं कर सका और मुझे एक्सेल फ़ाइलों को पढ़ने के लिए 32 बिट सर्वर स्थापित करना पड़ा। –

उत्तर

8

इस त्रुटि के लिए 5 संभावित कारण हैं।

  1. जेट इंजन सर्वर पर स्थापित होना चाहिए। सर्वर पर एमएस ऑफिस को स्थापित करना उस प्रकार से बाहर है।
  2. पथ xls करने के लिए सर्वर, नहीं वर्कस्टेशन आप
  3. खाता है कि SQL सर्वर सेवा चलाता है फ़ोल्डर है जहाँ xls है के लिए लेखन पहुँच होना आवश्यक है से आदेश चला रहे हैं के सापेक्ष है। एक संभावित समाधान सेवा स्टार्टअप खाता (उदाहरण के लिए प्रशासक) के temp = और tmp = पर्यावरण चर को बदलना है (उदाहरण के लिए) c: \ temp, फिर c: \ temp पर पूर्ण नियंत्रण सक्षम करें, प्रत्येक व्यक्ति को

4 ...

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

5 ....

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 0 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 0 
GO 

अब मैं क्यों इस, काम करता है विशेष रूप से विचार कर हर किसी का कहना है कि वे फिर भी मेरे लिए 1. सेट किया जाना चाहिए पता नहीं है , उन्हें शून्य पर सेट करना, निम्न SQL स्टेटस के लिए चाल थी एसक्यूएल सर्वर 2008R2 32 बिट और एम $ कार्यालय 2007

Select * 
into [temp_table$] 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\temp\EXPENDITURE REPORT.xls;HDR=YES;IMEX=1', 
'SELECT * FROM [EXPENDITURE SHEET$]') 

नोट पर ement: मैं जानबूझ कर एक उदाहरण है जिसमें दोनों फ़ाइल नाम और कार्यपत्रक नाम पता चलता है कि यह किया जा सकता है रिक्त स्थान है इस्तेमाल किया है।

हम एक बॉक्स है कि का कोई संस्करण के साथ Windows 8 64 बिट मशीन पर SQL सर्वर एक्सप्रेस 2012 था:

+0

मैंने उपयोग किया अंत में सीएसवी फ़ाइल, लेकिन एक अच्छा विस्तृत, बहु विकल्प उत्तर के कारण इसे सही के रूप में चिह्नित करना। – Doomsknight

+1

जैसा कि दूसरे उत्तर में बताया गया है, आप नामों में रिक्त स्थान का उपयोग करने के लिए 'Excel 8.0' –

+0

प्लस 1 के साथ भी 'Microsoft.ACE.OLEDB.12.0'' आज़मा सकते हैं। –

7

xlsx फ़ाइलों के लिए (एक्सेल 2007-2010) आप जेट के बजाय ऐस OLEDB प्रदाता का उपयोग कर सकते

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0;HDR=YES;Database=C:\PB.xlsx', 
    'SELECT * FROM [Sheet1$]'); 
+0

मुझे यह लाइन मिलती है 'ओएलई डीबी प्रदाता का एक उदाहरण नहीं बना सकता "माइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0" लिंक किए गए सर्वर के लिए "(शून्य)"। – Doomsknight

+0

यह उल्लेख करना भूल गया कि आपको सर्वर पर Office 2007+ स्थापित करने की आवश्यकता है या यह घटक: http://www.microsoft.com/en-us/download/details.aspx?id=23734 –

+0

मेरे पास कार्यालय 2010 है ..: | – Doomsknight

1

शायद ज़रुरत पड़े किसी और इस साल बाद की तरह मैंने किया था पर ठोकर, यह क्या मेरे लिए काम किया है कार्यालय स्थापित

यहाँ मेरी संग्रहीत proc मैं सेटअप का हिस्सा है:

INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=R:\Export Membership Database\Member_Export.xls;', 
'SELECT * FROM [combined$]') 

(नीचे इसका चयन बयान के बाकी) मैं इस त्रुटि प्राप्त:

SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', search for 'Ad Hoc Distributed Queries' in SQL Server Books Online.

हम बदल विन्यास:

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

संग्रहीत proc फिर से भाग और उसके बाद यह त्रुटि आई:

The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered.

मिले हम इस स्थापित करने के लिए की जरूरत:,

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en

उसके बाद एक आकर्षण की तरह काम किया!

संबंधित मुद्दे