2013-03-15 2 views
1

Excel을 사용하여 & 데이터를 수집 한 다음 저장소로 가져 와서 SQL Server 2012로 가져옵니다.Excel 2010을 SQL Server로 가져 오기

지금까지 SQL Server 가져 오기 & 내보내기 마법사를 사용했지만 영구히 수동으로 설정하는 것은 쉽지 않습니다. 익스프레스를 사용하고 있기 때문에 데이터를 전송할 실제 명령을 저장하거나 보지 못하게합니다.

나는 How to use Excel with SQL Server linked servers and distributed queries 당, 연결된 서버를 설정할 수 있지만 다음과 같은 오류 가려고 : 웹 페이지가 2005 년이기 때문에,

The linked server has been created but failed a connection test. Do you want to keep the linked server?

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "FLTST".
OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "FLTST" returned message "Unspecified error". (Microsoft SQL Server, Error: 7303)

내가 Excel 버전 번호가 문제였다 아마도 생각을, 그래서 함께 노력 :

  • 엑셀 마법사를 사용하는 것 무엇 페이지
  • 엑셀 12.0 (2007 엑셀)과 같이 8.0 (엑셀 2002)
  • Excel 14.0 (Excel 2010) 실제로 무엇을 가지고 있습니까

이 모든 것이 저에게 동일한 결과를 제공합니다. Import excel file to SQL Server Express에서와 같이

다음 나는 (공급자 문자열의 다른 유사 다시)의 분산 쿼리 시도 나에게 다음과 같은 오류 제공

USE ExTest 

SELECT * INTO TstTbl FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 14.0;Database=c:\ExTest.xlsm', [Contacts]) 

go 

:

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

대신을 SQL 서버 &에 데이터를 가져 오는 중 Excel &에 계속 있어야합니까?

내가 뭘 잘못하고 있니?

추신 : 하시기 바랍니다 csv 파일로 변환 말해! do more than 단계가 아니라 더 많이 시도하고 있습니다!

+0

는 "수동으로 일정을 설정하는 고통"

나중에 난 그냥 활성화 된 설정을 사용하지 않도록 정리합니다. Excel 필드가 변경되었거나 마법사를 진행하기가 싫어서입니까? 당신은 패키지를 저장하고 다음에 그것을 다시 실행할 수 있어야합니다 .... 제 생각 엔 - 100 % SQL Express에 대한 확신이 없습니다. –

+2

상황에 따라 Excel을 읽고 필요한 데이터를 가져와 SQL Server에 삽입하는 C# 응용 프로그램을 작성하는 것이 좋습니다. "Jet OleDB"드라이버는 특히 64 비트 서버 OS에서 사용하기가 어렵 기 때문에 가능한 경우 해당 파일을 피합니다. –

+0

파일 스키마가 변경되지 않고 파일 이름 만 바뀌면 Excel을 시도해 볼 수 있습니다 문제를 해결하기 위해 동적 소스를 사용하여 SSIS 패키지를 설정하면 매번 마법사를 거칠 필요가 없으며 소스가 변경 될 때마다 SSIS 구성을 업데이트하면됩니다. – ljh

답변

0
  1. Excel 데이터 소스 연결 관리자와 SSIS 패키지를 만들고, 대상은 SQL 익스프레스, OLE DB 대상은
  2. 의 Excel 연결 관리자를 만들 때, 당신은 단지 하나의 엑셀
  3. 한 사용자 정의 파일을 기존 사용할 수 있습니다 변수와 같이 user :: sourceFile은 전체 경로를 입력 할 때 사용됩니다.
  4. Excel 연결 관리자가 생성 된 후 마우스 오른쪽 버튼을 클릭 한 다음 "표현식"을 찾으십시오. [User :: sourceFile]에 표현식
  5. 그냥 간단한 데이터 흐름 하나를 생성하십시오. 원본을 대상으로
  6. SSIS 패키지를 저장하고 디버깅하고 모든 자격 증명 작업 및 데이터를 대상 테이블로 보낼 수 있는지 확인하십시오.참고 : 패키지에 sensitvie 데이터를 저장하지 않는 키 기계에 의해 ecrypted와
  7. 당신이 매개 변수를

행운을, 새로운 파일을로드 패키지를 실행하는 dtexec를 사용하고 재정의해야 할 때마다

+0

나는 당신을 잊지 않고있다, 나는 당신의 솔루션으로 일하게 할 시간이 없었다. ( –

2

귀하의 질문에 당신과 비슷한 문제가있어서 이것에 대한 연구를했습니다. 내 문제는 아직 완전히 해결되지 않았지만 한 걸음 더 나아갈 수 있다고 생각합니다. 질문이 오래되었지만 아마도 도움이 필요한 다른 사람이있을 것입니다. 실행하여

:

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=P:\Path\File.xlsx','SELECT * FROM [Sheet1$]'); 
GO 

을 나는 다음과 같은 오류 메시지가 얻을 :

Msg 15281, Level 16, State 1, Line 19 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 
RECONFIGURE 
GO 
sp_configure 'ad hoc distributed queries', 1 
RECONFIGURE 
GO 

하지만 새로운 오류 mesasge를 얻을 수 :

10 내가 실행하는 것이 수습하려면

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 

하지만 대신에이 오류를 얻을 :

내가의 64 비트 버전을 설치하기 위해 IT 부서에 요청했습니다 내 경우에는

Msg 7438, Level 16, State 1, Line 19 The 32-bit OLE DB provider "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server.

이에 탁월 서버 및 나는 그것이 Excel에서 가져올 때 기술적 인 문제의 끝이어야한다 희망한다.

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0 
GO 

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0 
GO 

sp_configure 'ad hoc distributed queries', 0 
RECONFIGURE 
GO 

sp_configure 'show advanced options', 0 
RECONFIGURE 
GO 
관련 문제