快速启动服务器的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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 快速启动服务器的msdtc服务 (服务器启动msdtc)