http://www.sqler.com/807689 와 동일한 의문을 풀고자 질문합니다
1. sql server인증을 윈도우 인증으로 해야 한다고 해서
sql server 인증을 윈도우인증으로 했고
2. 서버컴퓨터의 윈도우인증시 사용자이름은 main02\server이고 보안 -로그인에 MAIN02\Guest라는 계정도 있습니다
3. 네트워크상의 컴퓨터이름은 cds04이고 input는 cds04컴퓨터의 공유폴더이며 여기에 '201807통장.xls'가 위치합니다
4.네트워크컴퓨터의 SSMS에서 cds04\cds라는 사용자로 로그인하면 아무런 제약없이 사용가능 합니다.
다만 아래와 같은 문구가 포함된 ImportYegum 라는 저장프로시져를 만들고
Set @String=
'SELECT Replace(replace( f4, char(13), ''''), char(10), '' ''),
Convert(Float, dbo.GetNumeric(F6)),
Convert(Float, dbo.GetNumeric(F5)),
Convert(Float, dbo.GetNumeric(F7)),
F9
FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0 Xml;HDR=Yes; DataBase=' + @YeFileName + ''', [입출금거래내역$])
WHERE isnumeric(입출금거래내역)=1 '
1. main02컴퓨터에 'd:\201807통장.xls'를 넣고 exec ImportYegum 'd:\201807통장.xls'로 실행하면 잘 됩니다
2. 네트워크의 컴퓨터에 있는 엑셀 파일로 작업하기 위하여 exec ImportYegum '\\cds04\input\201807통장.xls' 로 실행하니
'연결된 서버 "(null)"에 대한 OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"의 인스턴스를 만들 수 없습니다.' 에러메세지가 뜹니다
윈도우 사용자 계정 또는 공유와 관련된 문제인 것 같아서 자세히 설명해 올렸습니다.
전문가 여러분의 답변을 기다리며 미리 감사드립니다.
길주석 올림
추신: sqlserver를 다시 설치하면서 사용자계정을 바꾸면 (guest라든지 cds라든지) 도움이 될까요? 별별 생각을 다해봅니다
Comment 3
-
술이
2018.08.30 12:36
-
길주석
2018.08.31 11:27
술이님 답변 감사합니다
윈도인증으로 하고 sql시작계정이름을 서버와 일치시키고 워크그룹 통일하고, input 공유폴더의 everyyone, server 계정에 쓰기 읽기 모든권한을 부여하였습니다 . 그러고 나서
exec ImportYegum '\\cds04\input\201807통장.xls' 실행하니
이젠 에러메세지는 없이 '쿼리실행중' 이라고 뜨면서 무한루프에 빠진 것 처럼 됩니다.
input 공유폴더의 권한 부여문제일까요? 도메인이 없는 워크그룹에서는 sql서비스 프로스세 시작 계정을 네트워크 서버 계정과 동일하게 맞춰주어도 불가능한 겁니까?
저희 사무실의 업무용이므로 사용자 권한은 다른사람이 건드릴 우려는 없습니다,
또한 파일저장의 문제는 없고 읽어오기만 하면 되는데요
로컬컴퓨터의 엑셀 파일에 직접 액세스하지 못하면 파일을 이동해서 작업해야 하는데 ftp구축할 능력도 없는 저에겐 고역이 됩니다.
어떻게든 이문제를 해결할 묘책이 없을까요?
감사합니다.
-
술이
2018.09.01 17:34
생성된 계정에 sqlsvc 라고 하면 서비스시작 계정에 .\sqlsvc 에 부여된 패스워드를 입력합니다.
sqlsvc는 네트워크 소스 및 타겟 호스트 서버에도 만들고 administrators 그룹에 넣어줍니다.
그리고 네트워크 액세스할 폴더 위치에 공유권한에 sqlsvc 와 administrators 를 넣어주고 NTFS 권한에도 동일하게 모든권한을 체크하여 넣어줍니다. 그리고 everyone 오브젝트는 제거합니다. everyone 계정은 무슨일이 있어도 보안상 취약하기 때문에 내부망이여도 사용해서는 안됩니다.
sql서비스 프로스세 시작 계정을 네트워크 서버 계정과 동일하게 맞춰주면 가능할겁니다.
윈도우 인증하라고 하는건 도메인 환경일때 윈도우 인증으로 가능한거고 워크그룹에서는 불가능입니다.
워크그룹에서 SQL백업 위치를 네트워크 폴더로 저장하게 하기 위해서는 sql 계정을 네트워크 위치에 동일하게 게정 생성해주고 해당 폴더에 권한을 넣어줘야 가능한 방법입니다.
즉 위와같은 액션도 권한을 생성해줘야만 가능한 부분이에요. 대부분 저런방법이 실패하니까 패키지를 사용하던가 파일로 로컬로 생성하면 FTP 같은걸로 배치로 보내면서 대부분 사용했었습니다.