快速启动服务器的msdtc服务 (服务器启动msdtc)
MSDTC服务(Microsoft Distributed Transaction Coordinator)是一个面向Windows操作系统的分布式事务处理协调器,在数据库系统中应用非常广泛。MSDTC服务可以协调多个数据库事务,确保它们成功或全部撤消。由于它的功能强大,因此在服务器上运行MSDTC服务是非常常见的场景。但是在实际操作中,服务器启动MSDTC服务时遇到的问题也是非常常见的,本文将介绍如何快速启动服务器上的MSDTC服务。
一、介绍MSDTC服务
Microsoft DTC服务是微软公司用于支持分布式事务管理的服务。分布式事务是指在分布式系统中,如果需要对多个资源进行操作,需要保证这些操作要么全部成功,要么全部失败。例如,在一个事务中,必须要从一个数据库中取出数据并写到另一个数据库中,如果写入失败,则需要将取出的数据全部恢复。MSDTC服务通过统一的事务管理器来管理所有分布式事务,确保所有操作都可以被成功处理或者撤消掉。
在实际应用中,分布式事务通常涉及到多个数据库甚至多个服务器,因此MSDTC服务的可用性和可靠性是非常重要的。如果MSDTC服务出现故障,那么整个事务管理系统可能会受到影响,导致数据的不一致性和丢失。
二、MSDTC服务出现的问题
尽管MSDTC服务在实际应用中非常重要,但在服务器配置MSDTC时,我们也经常会遇到一些问题。这主要与MSDTC服务的启动方式和服务器的配置有关。
1、MSDTC服务未能启动
有可能会出现MSDTC服务无法启动的问题。在启动服务或者执行一个分布式事务的时候,可能会看到类似如下的错误消息:
“无法启动分布式事务协调器。原因: 指定的服务不存在…”
“MSDTC服务启动失败”
这可能是由于MSDTC服务的配置不正确,或者MSDTC服务依赖的服务没有启动所致。在这种情况下,建议您检查MSDTC服务的配置文件,或运行系统诊断工具查看依赖服务是否已经启动。
2、MSDTC服务无法访问
除了启动问题,还有可能会出现MSDTC服务无法访问的情况。在执行分布式事务时可能会看到类似以下的错误消息:
“无法连接到远程事务处理器”
这可能是由于MSDTC服务所在的服务器配置了防火墙或者网络访问限制,导致MSDTC服务无法正常访问。在这种情况下,建议您调整服务器的网络访问策略,允许MSDTC服务进行网络访问。
三、解决MSDTC服务出现的问题
要解决MSDTC服务在启动或者访问时出现的问题,需要掌握一些解决方法。这些方法包括:
1、检查服务配置
在检查服务是否启动时,我们需要检查服务的配置文件是否正确。这些配置文件包括:
msdtc.exe.config :MSDTC服务配置文件,其中包含了MSDTC服务的相关参数配置信息。
%windir%\system32\msdtc\msdtc.log:MSDTC服务日志文件,其中记录了服务启动或执行分布式事务时的详细信息。
如果发现MSDTC服务配置文件或者日志文件存在异常,可以尝试手动调整配置,或者清空日志文件,然后重新启动MSDTC服务。
2、检查依赖服务
MSDTC服务依赖于多个系统服务,包括 DcomLaunch、RpcSs、MSDTC、LMHosts 和 RemoteRegistry。在防止MSDTC启动时,可以运行系统维护命令,例如 sc query rpcss 检查RPC服务是否已经启动,或者运行netstat -a 检查本地服务所使用的端口是否已经被占用。
3、检查防火墙或者网络策略
如果发现MSDTC服务无法访问,可以检查服务器的网络访问策略。如果存在防火墙,则需要打开MSDTC服务所使用的端口,例如 TCP 端口135、 UDP 端口5000-5020、TCP 端口 5000-5020等。
此外,在服务器连接网络多个子网的情况下,必须确保每个子网可以访问服务器上的MSDTC服务。
四、
MSDTC服务是一个强大的分布式事务协调器,为数据库系统和分布式系统提供了可靠的事务处理机制。但是,在服务器上配置MSDTC服务并不总是容易的,可能会遇到启动问题、访问问题等。为了解决这些问题,我们需要熟练掌握MSDTC服务的配置和管理方法,同时也需要仔细检查服务器的网络访问策略,确保MSDTC服务能够正常启动和访问。
相关问题拓展阅读:
MS dtc 服务启动不起来
给你找了一些方法,自己看看吧
1:确认在“配置属性”中的“启用ASP.NET调试 “为 “True ”
操作步骤:
VS环境里面,菜单-项目-项目属性(最下得选项)-配置属性(左边第二项)-Debugging-Enable Asp.Net Debugging 设置为True
作用:
确定调试器能过启动IIS来调试asp.net页面!
2:确认你的 “web.config “中的 “debug=true ”
操作步骤
打开web.config文件,设置debug= “true “;
作用:配置调试器可以调试该应用程序
3:若你安装过windSP4后,则要在命令行执行 “regsvr32 i aspnet_isap.dll ”
操作步骤:
开始-运行-cmd-regsvr32 i aspnet_isap.dll
作用:
重新注册aspnet_isap.dll
4:在IIS里查看站点信息,选中 “目录安全性 “,里面有 “匿名访问和身份验证控制 “,再点击 “编辑.. “,确认 “集成Windows身份验证 “选项被选中
操作步骤:
我的电脑-右击-管理-应用程序管理-IIS-默认网站-你得站点-右击-目录安全性-认证和访问方式-勾选匿名访问和身份验证控制,编辑-勾选确认 “集成Windows身份验证“
作用:
匿名访问:此处设置不是为了解决你得调试问题,是为了能够使局域网或者广域网中其他用户通过输入你得Ip和网站名称来访问该网站
集成Windows身份验证:刚建立得网站身份验证方式为Windows要求必须用windows用户身份访问该网站,不更该IIS,将无法正常调试!
5:在IE选项->逗唯 “安全设置 “-> “自定义级别 “里有 “用户验 “,确认选中 “自动使用当前用户名和密码登录 ”
步骤上述已经详细
作用不详
6:运行C:\WINNT\山兆培Microsoft.NET\Framework\v1.0.3705\aspnet_regiis.exe -i
操作猜孙步骤;
cd到C:\WINNT\Microsoft.NET\Framework\v1.0.3705\目录
aspnet_regiis.exe -i
或者start=all progamesvisual studio.netvisual studio.net toolscommand prompt-aspnet_regiis.exe -i
作用:
重新注册当前得.net framework版本即(v1.0.3705)到iis,为了解决调试得时候出现您所运行得.net版本不是v1.1得问题
7:控制面板–管理工具–计算机管理–本地用户和组–用户,双击ASPNET用户,为其隶属于添加Administrators用户
今天到客户,中间层坏了,查歼笑看中间层日志:
Distributed Transaction Coordinator 服务因(0xC) 服务中止, 造成K3中间层无法注册,也无法修复K3中间层.
问题解决方法:setp 1
停止相关服务
使用TXT文件写入下列代码,保存成 BAT文件,进行执行
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
restlog
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
运行完,看看日志
已成功安装 Microsoft Distributed Transaction Coordinator 服务。
重新做一下系统试试!
重装一下iis试试
如何实现跨服务器的事务操作
–不同服务器数据库之间的歼轿数据操作
–************************************************************************************
1、–创建链接服务器
exec sp_addlinkedserver ‘ITSV’, ‘ ‘, ‘SQLOLEDB’, ‘远程服务器名或ip地址 ‘
exec sp_addlinkedsrvlogin ‘ITSV’, ‘false ‘,null, ‘用户名’, ‘密码’
2、启动两台服务器的MSDTC服务
MSDTC服务提供分布式事务服务,如纤者果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。
3、打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放
4、–如要创建触发器
create trigger t_test on test
for insert,update,delete
as
–加上下面两句,否则会提示新事务不能登记到指定事务处理器
set xact_abort on
begin distributed tran
delete from openrowset(‘sqloledb’,’xz’;’sa’;”,test.dbo.test)
where id in(select id from deleted)
insert into openrowset(‘sqloledb’,’xz’;’sa’;”,test.dbo.test)
select * from inserted
commit tran
–查询示例
select * from ITSV.数据库名.dbo.表名
–导入示例
select * into 表 from ITSV.数据库名.dbo.表名
–以后不再使用时删除链接服务器
exec sp_dropserver ‘ITSV ‘毁改薯, ‘droplogins ‘
关于服务器启动msdtc的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。