이제 모든 프로덕션 데이터베이스를 SQL Server 2005 32 비트 인스턴스에서 새로운 SQL Server 2012 64 비트 인스턴스로 이동했습니다.Access 드라이버를 사용하여 SQL Server X64에서 텍스트 및 Excel로 연결된 서버 만들기
우리 개발자들이 아직도 겪고있는 어려움 중 하나는 링크 된 서버입니다.
우리는 텍스트, CSV 또는 Excel 파일에서 데이터를 가져와야하는 많은 프로그램을 보유하고 있으며 링크 된 서버와 텍스트 파일로 구현되는 방식으로 텍스트 파일에 select 문을 쉽게 보낼 수 있습니다. 그것을 테이블에 삽입하십시오.
문제는 32 비트 서버가 모든 사람에게 완전한 사용 권한을 가진 전단계 디렉터리에있는 파일 인 Microsoft.Jet.OLEDB.4.0
드라이버를 사용하고 보안 문제가 발생하지 않았다고 제기했습니다. 새로운 64 비트 서버에서
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'TEMP_FILES_1'
, @srvproduct=N''
, @provider=N'Microsoft.ACE.OLEDB.12.0'
, @datasrc=N'\\SERVER-APP01\BWA\TempFiles'
, @provstr=N'Text'
참고 :
- 데이터 소스가 네트워크 공유에 있습니다.
- MSSQL 서비스는 도메인 관리자 계정으로 실행됩니다.
- 도메인 관리자로 원격 로그인되어 있습니다. 물론 로컬 관리자이기도합니다.
\\SERVER-APP01\BWA\TempFiles
디렉토리에는 모든 사용자에 대해 전체 액세스 권한이 있습니다. 내가EXEC sp_testlinkedserver [TEMP_FILES_1]
을 실행할 때
지금 나는 다음과 같은 오류 메시지가 :
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "TEMP_FILES_1" returned message "'\\SERVER-APP01\BWA\TempFiles' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.".
이 확실히 보안 문제이지만, 재미있는 부분은 내가 xp_cmdshell 'dir \\SERVER-APP01\BWA\TempFiles'
를 실행할 때 그렇게 분명히 서비스가 레코드를 반환한다는 것입니다 이 폴더에 대한 액세스 ...
내 로컬 컴퓨터의 반대편에는 또한 연결된 서버가 동일한 64 비트 인스턴스가 있으며 매력처럼 작동합니다!
나는 내 문제에 대한 해결책을 찾기 위해 인터넷을 기어 다녔지 만 텍스트 파일에 연결된 서버는 특히 64 비트에서 거의 사용되지 않는 것 같습니다.
EXEC xp_cmdshell 'net use y: \\[source directory path] [pw] /USER:[active user]'
EXEC xp_cmdshell 'copy y:\[source file] [destination directory]'
EXEC xp_cmdshell 'net use y: /delete'
'MSSQL 서비스가 실행 account.' 도메인 관리자로 O_O –
@JonSeigel : –