Sybase 데이터베이스를 사용하여 로컬 (원격) 데이터베이스를 서버의 중앙 집중식 통합 데이터베이스와 동기화하려고합니다. 동기화는 예정된 시간에 일어나야하며 "CreateProcessByUser"를 사용하고 있습니다. 동기화 프로세스를 시작하려면 sybase가 제공 한 dbremote.exe를 사용하고 있습니다.서비스의 CreateProcessAsUser에 원격 시스템에 액세스하는 보안 문제가 있습니다.
구축 된 커맨드의 인수이다
커맨드 = dbremote.exe -l 512K -x -k -c "DSN = HOME * * , UID = 된 DBA; PWD = *** ; CS = 없음; DBKEY = *** "-OS 10000000 -o"C : \ 데이터 \ 테스트 \의 dbremote.log ""C : \ 데이터 \ 테스트 "
BOOL startA_Process(HANDLE hToken, _TCHAR *commandLine, PROCESS_INFORMATION *pi, BOOL wait, _TCHAR *errBuf){
STARTUPINFO sStartupInfo;
DWORD dwExitCode;
DWORD dwStatus = 0;
DWORD dwCreationFlags = CREATE_NEW_CONSOLE;
int iResult;
BOOL bInheritHandles = FALSE;
LPCTSTR pszApplicationName = NULL;
LPCTSTR pszCurrentDirectory = NULL;
LPVOID pvEnvironment = NULL;
LPSECURITY_ATTRIBUTES psProcessAttributes = NULL;
LPSECURITY_ATTRIBUTES psThreadAttributes = NULL;
//
// Initilize STARTUPINFO structure
//
ZeroMemory(&sStartupInfo, sizeof(sStartupInfo));
sStartupInfo.cb = sizeof(sStartupInfo);
sStartupInfo.lpTitle = _T("AutoSychDBRemote");
sStartupInfo.lpDesktop = _T("winsta0\\default");
//
// Initilize PROCESS_INFORMATION structure
//
ZeroMemory(pi, sizeof(PROCESS_INFORMATION));
iResult = ::CreateProcessAsUser(
hToken, // handle to a token representing the logged-on user
pszApplicationName, // name of executable module
(LPTSTR)commandLine, // command line string
psProcessAttributes, // process security attributes
psThreadAttributes, // thread security attributes
bInheritHandles, // whether new process inherits handles
dwCreationFlags, // creation flags
pvEnvironment, // pointer to new environment block
pszCurrentDirectory, // pointer to current directory name
&sStartupInfo, // pointer to STARTUPINFO
pi // pointer to PROCESS_INFORMATION
);
프로세스가 원격 컴퓨터에 실행되고 동기화가 발생하면 원격 데이터베이스와 통합 데이터베이스간에 메시지를 교환해야합니다.
위 명령 줄을 windows 명령 프롬프트에서 실행하면 동기화가 성공적으로 수행됩니다. 예약 된 시간에 CreateProcessAsUser에 의해 트리거 될 때하지만 난 로그 파일에 오류 메시지가 아래를 참조하십시오
로그 파일 :
I. 2013년 4월 11일 11시 17분 11초합니다. "BTI"로 메시지 보내기
I. 2013-04-11 11:17:11. \\ IPaddress \ Databases \ Production \ messages \ consolidated \ Rem00005.g " 실패 1326 : 잘못된 인수
I. 2013-04-11 11:17:11. sopen "\\ IPaddress \ Databases \ Production \ messages \ consolidated \ Rem00005.h" 실패 1326 : 잘못된 인수
I. 2013-04-11 11:17:13. \\ IPaddress \ Databases \ Production \ messages \ consolidated \ Rem00005.i " 실패 1326 : 잘못된 인수
I. 2013-04-11 11:17:13. sopen "\\ IPaddress \ Databases \ Production \ messages \ consolidated \ Rem00005.j" 실패 1326 : 잘못된 인수
I. 2013-04-11 11:17:13. sopen "\\ IPaddress \ Databases \ Production \ messages \ consolidated \ Rem00005.k" 실패 1326 : 잘못된 인수
E. 2013-04-11 11:17:13. 메시지를 보내는 중 오류가 발생했습니다.
I. 2013-04-11 11:17:13. 재전송 요청이 대기 중입니다
I. 2013-04-11 11:17:14. 실행이
완료 "\\ IP 주소 \ 데이터베이스 \ 생산 \ 메시지 \ consolid"나는 이것에 도움을 요청 원격 시스템에서 메시지
몇 가지 :
나는 로그인-에서하고있는 코드 내 Windows 도메인 이름과 자격 증명을 사용하여 응용 프로그램과의 :: LogonUser를 사용하여(). 나는 유효한 신임장을 보내고 있다는 것을 두 번 확인했습니다.
탐색기를 사용하면 서버의 위 경로로 성공적으로 이동할 수 있으며 파일을 추가/제거 할 수 있습니다.
관리 도구 >> 로컬 보안 정책의 "로컬 보안 설정"에 사용자 ID를 추가했습니다.
모든 의견을 환영합니다.