这短时间一直在弄持久化服务。因为对SQL2000会一些。所以打算用SqlWorkflowPersistenceService。
可以弄来弄去,发现怎么也不对啊?
查阅了代码,发现代码没有错。。。
一直弄了好些日子,也请教了一些人,可是问题依旧。。。
今天照例继续检查我的代码
我在检查代码的时候查阅了资料,如果要用sql2000的SqlWorkflowPersistenceService服务必须满足两个条件,一个是必须安装SP4,另外一个就是需要开启MSDTC服务。
检查我的机器后发现,虽然安装了SP4,但是MSDTC服务却启动不正常,于是安装了MSDTC服务,然后重新启动,终于看见我的WORKFLOW实例保存到SQL2000中去啦。
另外,如果有防火墙,一定要开放105端口和SYSTEM32\MSDTC.EXE
我的MSDTC出了问题,再付上解决方法。。。。
setp 1服务
MSDTC_1.bat
@echo off
if {%1}=={} @echo Syntax: MSDTC1 Filename&goto :EOF
setlocal ENABLEDELAYEDEXPANSION
set filename=%1
if exist %filename% del /q %filename%
(
@echo Alerter
@echo EventSystem
@echo Browser
@echo TrkWks
@echo Dnscache
@echo Eventlog
@echo PolicyAgent
@echo dmserver
@echo Messenger
@echo Netlogon
@echo NtLmSsp
@echo Netman
@echo PlugPlay
@echo RpcSs
@echo RpcLocator
@echo NtmsSvc
@echo SamSs
@echo lanmanserver
@echo SENS
@echo Schedule
@echo LmHosts
@echo winmgmt
@echo Wmi
@echo W32Time
@echo lanmanworkstation
)>"%TEMP%"MSDTC1.TMP"
call :stopdtc>nul 2>&1
for /f "Tokens=*" %%L in ('reg query HKLM"System"CurrentControlSet"Services^|FINDSTR /I /B /L /C:"HKEY_LOCAL_MACHINE"') do (
set line=%%L
set key=HKLM!LINE:~18!
call :subkey "!key!"
call :testsvc
)
endlocal
goto :EOF
:stopdtc
sc stop msdtc
goto :EOF
:testsvc
for /f "Tokens=*" %%c in ('@echo !svc!^|findstr /I /B /E /L /G:"%TEMP%"MSDTC1.TMP"') do goto :EOF
set /a start=3
set /a type=0
call :getstart>nul 2>&1
call :gettype>nul 2>&1
if %type% LSS 16 goto :EOF
if %start% NEQ 2 goto :EOF
sc config !svc! start= demand
@echo sc config !svc! start= auto>>%filename%
goto :EOF
:gettype
for /f "Tokens=2,3" %%x in ('reg query "HKLM"System"CurrentControlSet"Services"!svc!" /V type^|FIND "REG_DWORD"') do (
set /a type=%%y
)
goto :EOF
:getstart
for /f "Tokens=2,3" %%x in ('reg query "HKLM"System"CurrentControlSet"Services"!svc!" /V start^|FIND "REG_DWORD"') do (
set /a start=%%y
)
goto :EOF
:subkey
set svc=%~nx1
重启机器
step 2关联的注册表项及重新安装msdtc组件
MSDTC_2.bat
@echo off
setlocal
@echo %WINDIR%"System32"msdtc.exe -uninstall
%WINDIR%"System32"msdtc.exe -uninstall
call :delkey "HKCR"CID"
call :delkey "HKLM"SYSTEM"CurrentControlSet"Services"MSDTC"
call :delkey "HKLM"SYSTEM"ControlSet001"Services"MSDTC"
call :delkey "HKLM"SYSTEM"ControlSet002"Services"MSDTC"
call :delkey "HKLM"Software"Microsoft"MSDTC"
@echo %WINDIR%"System32"msdtc.exe -install
%WINDIR%"System32"msdtc.exe -install
endlocal
goto :EOF
:delkey
set key=%1
call :delkeyq %key% >nul 2>&1
@echo.
goto :EOF
:delkeyq
REG DELETE %key% /F
step 3
MSDTC_3.bat
@echo off
if {%1}=={} @echo Syntax: MSDTC3 Filename&goto :EOF
if not exist %1 Syntax: MSDTC3 Filename - %1 was NOT found.&goto :EOF
setlocal
set filename=%1
for /f "Tokens=*" %%r in ('type %filename%') do (
%%r
)
reg add "HKLM"SOFTWARE"Microsoft"MSDTC"XADLL" /F
regsvr32 mtxoci.dll
endlocal