如何解决在Win2003的Oracle链接服务器上MSDTC事务失败问题

  在企业环境中,客户有时需要设置MSDTC事务来与远程Oracle目标服务器协同工作。由于跨产品的设置十分复杂,有时我们在更新一个已链接的Oracle数据库中的数据时可能会面临事务失败,例如: 服务器:消息 7391,级别16,状态1,行1 该操作无法执行,因为OLE DB Provider ‘MSDAORA’ 无法启动分布式事务。 OLE DB错误跟踪 [OLE / DB Provider ‘MSDAORA’ ITransactionJoin::JoinTransaction返回0x8000d048]。 下面是帮助我们缩小和解决类似的问题的一般的步骤(开始操作之前,先尝试使用SQL的普通的select语句查询Oracle,确保服务器名称解析和它们之间的网络正常): 1。在Windows Server 2003中,选择”添加/删除程序程序”控制台,Windows组件中的”启用网络DTC访问”必须启用。可以在Windows组件\应用程序服务器\启用网络DTC访问下启用它。请参考: 817064如何在Windows Server 2003启用网络DTC访问 http://support.microsoft.com/default.aspx?scid=kb;EN-US;817064 2。打开DCOMCNFG,确保MSDTC选项卡下的安全配置的设置是正确的:   3。打开注册表,在Security键中,确保注册表值和UI设置相匹配: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security   4。 注册表中Oracle模块的配置是正确的: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI   OracleXaLib=oraclient9.dll OracleSqlLib=orasql9.dll OracleOciLib=oci.dll   尽管在这里我们使用Oracle 9i客户端作为举例,我们应该知道,在Microsoft数据访问组件(MDAC)2.5版本之后,微软的ODBC驱动和OLE DB Provider都只支持Oracle7和Oracle 8i:http://support.microsoft.com/Default.aspx?id=244661 一个新的支持Oracle 9i客户端的Microsoft.NET Managed Oracle Provider现已推出。请访问以下Microsoft网站来下载这个Provider:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4F55D429-17DC-45EA-BFB3-076D1C052524 对于其他版本的Oracle客户端(7 / 8)注册表键值设置,请参考: 193893 有关Oracle与Microsoft Transaction Server和COM…

0

如何解决浏览ASP网页时IIS7出现404.17错误

症状: 用户报告在Windows2008  64位系统上浏览ASP页面时出现404.17的问题。如果重装IIS服务,问题就不会再出现,但是在安装了SMS(System Management Server)后,同样问题又会出现: 需要检查的东西: 1. 启用IIS7的Failed Request Tracing log功能来检查具体的报错信息。这个案例中的报错信息如下所示: -MODULE_SET_RESPONSE_ERROR_STATUS ModuleName StaticFileModule Notification 128 HttpStatus 404 HttpReason Not Found HttpSubStatus 17 ErrorCode 2147942450 ConfigExceptionInfo  Notification EXECUTE_REQUEST_HANDLER ErrorCode The request is not supported. (0x80070032) 这个错误信息是在告诉用户没有ASP handler来处理请求,所以最后一个模块-StaticFileModule处理.asp的请求时候,以”not supported”结束。 事实上这个错误信息只是在告诉用户这个ASP handler不能正常处理.asp的请求。所以我们还是需要找出真正引起错误的原因。 检查了ApplicationHost.config:  <applicationPools>             <add name=”DefaultAppPool” enable32BitAppOnWin64=”true” managedPipelineMode=”Classic” />       </system.webServer>     <location path=”” overrideMode=”Allow”>        …

0

如何解决系统事件出现DCOM 10009错误?

症状: 我们有时在系统事件中会遇到DCOM 10009的错误(如下所示),或者会在DCOM客户应用程序中接收到错误代码0x800706ba: Event Type:        ErrorEvent Source:    DCOM|Event Category:                NoneEvent ID:              10009Date:                     2010-2-22Time:                     10:02:07User:                     N/AComputer:          <Computer Name>Description: DCOM was unable to communicate with the computer <Target Computer Name> using any of the configured protocols. Simply speaking, DCOM 10009 indicates that the DCOM client located on this <Computer Name> can’t communicate with the DCOM|COM+ server located…

0

IIS6.0中应用程序池的下拉列表中显示<Invalid Application Pool>

症状: 应用程序池的下拉列表中只显示<Invalid Application Pool>条目。 参照文档做了以下步骤和IIS reset,但是仍然没有解决问题: 1. Cannot Select an Application Pool in IIS 6.0 “Invalid Application Pool” message: http://blogs.iis.net/lprete/archive/2008/06/22/cannot-select-an-application-pool-in-iis-6-0-quot-invalid-application-pool-quot-message.aspx 2. 使用Metabase Explorer,没有发现问题。应用程序池的KeyType和Websit的AppPoolID都是正确的 3. 在c:\windows\system32\inetsrv用记事本打开IIS 配置文件meatbase.xml,检查<IIsApplicationPools>和<IIsApplicationPool>部分,发现有如下所示多出一个节点: <IIsApplicationPools Location=”/LM/W3SVC/AppPools” AdminACL=”xx” AppPoolIdentityType=”2″ … StartupTimeLimit=”90″ />   <IIsConfigObject Location=”/LM/W3SVC/AppPools/XXXAppPool121″ /> -<IIsApplicationPool Location=”/LM/W3SVC/AppPools/DefaultAppPool” AppPoolAutoStart=”TRUE” AppPoolIdentityType=”2″ … PeriodicRestartTime=”0″> </IIsApplicationPool>     对比本地的metabase.xml文件,发现在<IIsApplicationPools>和<IIsApplicationPool>之间没有<IIsConfigObject>的部分。 解决方法: 1. 备份metabase.xml。 2. 停止IIS管理服务。 3. 删除meatbase.xml文件中的<IIsConfigObject>部分。 4. 重启IIS管理服务以及HTTP…

0

如何在一个跨域环境中用Silverlight客户端使用自托管的WCF服务

背景介绍: 当一个Silverlight客户端试图使用WCF服务时,默认情况下,它只被允许进行在原始站点下的通讯。例如,一个http://domainA/default.aspx托管的Silverlight控件默认情况下只能使用同一个域内的服务,如:http://domainA/WCFService.svc。而http://domainB/WCFservice.svc则不行。 为了使http://domainA/default.aspx托管的Silverlight可以连接到http://domainB/WCFservice托管的WCF服务,我们需要显式配置一个跨域选择策略,即clientaccesspolicy.xml或crossdomain.xml。有很多文章与这个主题相关: 建立可跨网域界限访问的服务 http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx 警告:无法在'<URL>’定位跨域策略 http://msdn.microsoft.com/en-us/library/cc838225(VS.95).aspx 当我们的WCF服务托管在IIS中时,我们只需要在发布WCF服务的根文件夹中部署clientaccesspolicy.xml。例如:如果我们的WCF服务发布为:http://domainB/WCFservice.svc,那么跨域策略应该可以通过http://domainB/clientaccesspolicy.xml访问。 然而,自托管的WCF服务有些许不同。在这篇文章中,我们将演示Silverlight客户端如何在一个跨域环境中使用自托管的WCF服务。同时,因为Silverlight4 目前已支持NET.TCP绑定,这些针对NET.TCP绑定的步骤将与basicHttpBinding完全不同。在这篇文章中,我将分别介绍在basicHttpBinding和NET.TCP 绑定这两种不同情景下的步骤。 如何使用自托管WCF服务 场景1:自托管的WCF服务与basicHttpBinding 步骤1: 定义一个接口”IPolicyRetriever”  [ServiceContract]     public interface IPolicyRetriever     {         [OperationContract, WebGet(UriTemplate = “/clientaccesspolicy.xml”)]         Stream GetSilverlightPolicy();         [OperationContract, WebGet(UriTemplate = “/crossdomain.xml”)]         Stream GetFlashPolicy(); } 步骤2: 在你的WCF服务中实现上述接口: public class WCFService:IWCFService,IPolicyRetriever     {        //IWCFService 实现                                 …                                 … //IPolicyRetriever 实现…

1

IIS7中的自定义 404页面错误- 500.19

在进行如下带静态文件的自定义404页面配置时,    您可能会收到如下错误(见下图), 500.19 – Internal Server Error Absolute physical path “driver:\path” is not allowed in system.webServer/httpErrors section in web.config file. Use relative path instead.    根本原因: 当在web.config文件中检测到绝对路径时,就会产生此错误。 目前针对该问题有2种解决方案。 方案1: 1. 在ApplicationHost.config文件中将<system.webServer> <httpErrors>的allowAbsolutePathsWhenDelegated设置为”true”。 <system.webServer>   … <httpErrors allowAbsolutePathsWhenDelegated=”true”>       <error statusCode=”401″ prefixLanguageFilePath=”%SystemDrive%\inetpub\custerr” path=”401.htm” />       <error statusCode=”403″ prefixLanguageFilePath=”%SystemDrive%\inetpub\custerr” path=”403.htm” />       <error statusCode=”404″ prefixLanguageFilePath=”%SystemDrive%\inetpub\custerr” path=”404.htm”…

1

如何解决组件服务中的“红色箭头”问题

  在分布式环境中,当调用DCOM组件或者COM+应用程序出现问题时,我们第一件需要做的事是打开Components Manager来检查或者重新设置COM+/DCOM参数。然而,当打开Component Services的时候,可能会有一个”红色箭头”出现在”My Computer”节点上:     如果我们试图展开”My Computer”节点,可能会显示多个错误信息。为了解决这种问题,我们可以参照以下Check list,这样大多数常见的问题都可以得到解决:  1. 确保MSDTC服务处于Started状态;   2. 确保Users 用户组拥有注册表HKEY_CLASSES_ROOT\CLSID子键的Read权限。如果 Users group没有这样的权限,COM+系统应用程序服务可能无法正常启动,并导致”红色箭头”问题。可以参阅以下步骤来赋予Users 用户组相应权限(请在操作前备份HKEY_CLASSES_ROOT\CLSID): a. 打开 Regedt32,找到HKEY_CLASSES_ROOT\CLSID; b. 选择CLSID,点击菜单栏中的Security -> Permission; c. 在Security选项卡中,添加Users到允许列表中,并赋予Read权限。 d. 单击Advanced按钮,选中”Replace permissions entries on all child objects with entries shown here that apply to child objects”,之后单击”Apply”。 3. 确保用户Everyone对C:\Windows\Registration及其子对象拥有阅读权限,可以使用命令”cacls”来配置,具体请参阅: 909444  You may experience various problems after you install…

0