⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mtsrel.htm

📁 pws安装 pws安装
💻 HTM
📖 第 1 页 / 共 3 页
字号:
如果应用程序使用 ADO,请确定已安装 ADO 1.5。详细信息,请参阅需要的软件一节。</p>
<h4>缺少 Digital Alpha 平台上的 Oracle 支持</h4>
<p>
在 Digital Alpha 平台上运行的 Microsoft Transaction Server 不支持 Oracle 数据库连接。在新的版本中将会添加此支持。</p>
<h4>Oracle OCIW32.DLL 版本问题</h4>
<p>
一个重要的问题是要保证计算机上安装了正确的 OCIW32.DLL 版本。每次重新安装 Oracle 或 Microsoft Transaction Server,都必须对 DLL 的版本进行检查。</p>
<h4>不能从 MSCS (Wolfpack) 簇进行 Oracle 访问</h4>
<p>
在 MSCS (Wolfpack) 簇上的 Microsoft Transaction Server 应用程序不能访问 XA 数据库,也包括 Oracle 数据库。这是由于 Microsoft Distributed Transaction Coordinator 中的限制造成的结果。</p>
<p>
当前,Microsoft Distributed Transaction Coordinator 存储与 Windows NT 注册中的 XA 数据库有关的加密信息。此信息目前不能在 MSCS 簇的两个结点间复制。因此,Microsoft DTC 用于任何簇环境下的 XA-compliant 数据库。在新的版本中将会取消此限制。</p>
<h4>远程 MS DTC 计算机之间的安全性和通讯</h4>
<p>
如果应用程序在两台甚至更多的计算机上执行事务,必须确保这些计算机上的 MS DTC 被配置为可以相互通讯。默认情况下,MS DTC 在系统帐号标识下运行。仅当 Guest 帐号在两台计算机上都有效时,一台计算机上的 MS DTC 才可以和另一台计算机上的 MS DTC 通讯。如果在任一机器上或者在它们所属的 Windows NT 域中禁止 Guest 帐号,则必须配置 MS DTC ,使它可以在能够与远程计算机通讯的其它用户名称下运行。请参阅上面的 “修改用来运行 Microsoft 分布事务处理器的用户帐号”。</p>
<h4>要求 QFE 的 MSCS 上的 MS DTC</h4>
<p>
在 MSCS 环境中使用 MS DTC的用户应该安装 Windows NT QFE Q116844。该 QFE 修正了一个远程过程调用( RPC )问题,当企图连接簇化服务器上的 MS DTC 时,该问题将会导致 MS DTC 客户挂起。此修正也是 Windows NT QFE1 的一部分,可从 Windows NT Option Pack Web 上下载。</p>
<h4>远程服务器名称必须在 MSCS 服务器上指定虚拟服务器</h4>
<p>
簇化服务器必须将<b>“远程服务器名称”</b>属性设置为使用“MTS 资源管理器”的虚拟服务器名称。这将使得远程客户可以访问位于簇内的 MTS 组件,并且当事件失败时,确保客户引用的是簇而不是该簇内某个指定的节点。
</p>
<h4>MTS 软件包标识必须位于 MSCS 簇上的 Administrator 组中</h4>
<p>
对于 MSCS 簇上的 MTS 软件包,与软件包标识相关联的用户帐
必须是系统管理员,或者必须具有完全控制簇访问权限(如同 cluadmin中所设置的)。如果不在系统管理员的标识下运行软件包,MTS 将不能连接到 MS DTC 。</p>
<h4>MSCS 簇上的 MTS 要求所有节点上的 Windows NT 路径一致</h4>
<p>
MTS 要求在一个 MSCS 簇内,Windows NT 的目录在所有的节点上具有相同路径名。(例如:c:\winnt )。</p>
<h4>在安装 MTS 之前关闭 MSCS 簇资源</h4>
<p>
在运行 MTS 安装程序之前必须关闭所有受 MTS 安装程序影响的 MSCS 簇资源(诸如 SQL Server)。</p>
<h4>安装 MTS 之后安装 SQL Server 6.5 </h4>
<p>
可以在安装 MTS 之后安装 SQL Server 6.5。建议最好在安装 MTS 之前安装 SQL Server 6.5。如果在安装 MTS 之后安装 SQL Server 6.5,MTS 安装程序将试图确保 MS DTC 正常工作。</p>
<h4>运行 INSTCAT.SQL 脚本</h4>
<p>
为方便起见,MTS 包括了 INSTCAT.SQL 脚本。该脚本更新了为 SQL Server ODBC 驱动程序存储过程的目录。如果尚未这样做,请使用 SQL Server 的<b> isql </b>工具运行该脚本。</p>
<h4>有关安全性的文档勘误</h4>
<p>
默认情况下禁用安全性授权。</p>
<p>
不能将软件包的标识设置给组。</p>
<p>
当设置软件包标识时,MTS 将验证输入的口令。然而,如果为该帐号修改了口令却没有更新 MTS 资源管理器中的口令,软件包将不能运行。</p>
<h4>可以压缩 MS DTC 日志文件</h4>
<p>
现在可以把 MS DTC 日志文件放置在压缩目录中。然而,为了获得最优化的性能,请不要压缩 Microsoft DTC 日志文件或者将其存储在压缩目录中。在使用日志文件之前,MS DTC 必须将其进行解压缩。</p>
<h4>重置 Windows 98 上的 MS DTC 日志文件的问题</h4>
<p>
要重置 Windows 98 上的 MS DTC 日志文件,可以看到标有“MTxOCI” 的对话框以及标有“创建 MS DTC 日志文件失败”的第二个对话框。在此情况下,必须按照“Monitoring MTS Transactions on Windows 98”中的说明禁用 MS DTC 自动启动,重新启动计算机并重置计算机和日志文件。然后才可以重新启动 MS DTC 自动安装。</p>
<p>
其他重置 MS DTC 日志文件的问题可通过关闭 MTS Explorer、重新启动 MTS Explorer 和尝试再次重置来解决。在某些情况下,需通过多次尝试才能成功。</p>
<h4>在 Windows 98 中监视 MTS 事务</h4>
<p>
在 Microsoft<font face="Symbol"><span style="font-family:Symbol">&#210;</span></font> Windows<font face="Symbol"><span style="font-family:Symbol">&#210;</span></font> 98 上启动和停止 MS DTC 的文档应如下:</p>
<p>
默认情况下,当 Windows NT 或者 Windows 98 系统启动时, Microsoft Microsoft Distributed Transaction Coordinator (MS DTC) 被配置为自动启动。为了阻止重启 Windows 98 计算机后自动运行 MS DTC,请使用注册表编辑器查找注册表项<b> HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices </b>,然后删除名称为 <b> MSDTC </b>的表项。如果希望重新启用自动运行 MS DTC,请使用注册表编辑器在注册表项<b> HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices </b>下创建名称为<b> MSDTC </b>的表项,并将串值设置为“<code>msdtcw -start</code>”。</p>
<p>
请注意服务的名称是“<code>msdtcw</code>”,而不是“<code>msdtc</code>”,并且在连字符之前有一个空格。</p>
<h4>MTS 1.<i>x</i> 计算机不能远程管理安装 MTS 2.0 计算机</h4>
<p>
不能从运行先前版本 MTS 的计算机上远程管理 MTS 2.0 安装。试图这样做将返回一个错误代码或者导致 MTS Explorer 意外中止。</p>
<h4>远程管理 MTS 1.<i>x</i> 计算机时不能关闭单个软件包</h4>
<p>
当远程管理 MTS 1.<i>x</i> 计算机时,不支持关闭单个软件包。</p>
<h4>在 MTS 2.0 环境下关闭 Visual Basic 5.0</h4>
<p>
如果安装了 MTS 2.0,则在关闭 Microsoft<font face="Symbol"><span style="font-family:Symbol">&#210;</span></font> Visual Basic<font face="Symbol"><span style="font-family:Symbol">&#210;</span></font> 5.0 时可能会遇到一个“访问冲突”的信息。这是一个已知的 Visual Basic 5.0 错误,用户可从 http://www.microsoft.com/vstudio 站点下载并安装 Visual Studio<font face="Symbol"><span style="font-family:Symbol">&#212;</span></font> Service Pack 2 来修复该错误。有关该问题的更详细信息,请参阅“知识库”中第 Q167213 号文章。</p>
<h4>Windows 98 上的多服务器进程</h4>
<p>
在下述情形时可能会发生这个已知的错误:如果某个 MTS 服务器进程意外终止(由于一个 "failfast(快速故障报警)", 一个 "assert(断言)", 或一个 "access violation(非法访问)" )后来又重新启动该应用程序来创建多个 MTS 进程。(正确做法是每个软件包只能有一个 MTS 进程)。如果服务器进程意外终止,那么用户必须重新启动 Windows 98 计算机。</p>
<h4>在 Windows 98 上使用命名管道时死锁</h4>
<p>
当从 Windows 98 客户端到 MS 分布事务处理器(DTC)的命名管道连接超过大约 40 个时,一个已知的问题可能导致死锁。要解决该问题,应将 ODBC 驱动程序和 SQL Server 之间的协议更改为 TCP/IP。</p>
<h4>组件以及 TreatAs 和 AutoTreatAs 注册表项</h4>
<p>
COM 允许一个服务器使用 <b>TreatAs</b> 或 <b>AutoTreatAs</b> 注册表项来模拟另一个服务器。假设某个客户端用 <b>CoCreateInstance</b>创建了一个给定CLSID 的组件。如果 <b>TreatAs</b> 或 <b>AutoTreatAs</b> 项出现在这个 CLSID 所在的注册表中,则 COM 将创建由这个项所指定的组件。这将有效地将客户端请求传送给模拟服务器。(如果客户端是通过 ProgID 而非 CLSID 来引用其服务器,也是同样的过程)。</p>
<p>
正在使用 <b>TreatAs</b> 或 <b>AutoTreatAs</b> 模拟的组件是不合法的 MTS 组件,也不能被导入。如果模拟是在该组件被导入后添加的,则必须从 MTS 目录中将该组件删除,然后用正在模拟的组件取而代之。</p>
<h4>在服务器进程中的混合线程模式</h4>
<p>
在服务器进程中,具有相同活动的对象必须使用兼容线程模式注册。下面的组合是有效的:
<ul>
<li>
单元的任意组合,两个或者任意多个<br><br></li>
<li>
仅单线程</li>
</ul>
<p>
请注意,这意味着运行进程内 IIS 或使用进程隔离的 IIS 应用程序的活动服务器页不能创建单线程 MTS 组件。</p>
<h4>不能使用 CreateInstance 创建非 MTS 本地服务器</h4>
<p>
决不鼓励使用环境对象的 <b>CreateInstance</b> 方法创建非 MTS 本地服务器。这样的服务器可伸缩性差并且可能导致不由 MTS 关闭的额外的服务器实例。如果需要创建非 MTS 本地服务器,请使用 <b>CoCreateInstance</b>。</p>
<p>
不要在 MTS 中使用 COM 代理。而应该将进程内的服务器装入到 MTS 服务器进程中。</p>
<h4>MTS 安全性检查不能在 IIS 模拟方式下工作</h4>
<p>
当软件包被扮演多个客户端的多工器(例如 Internet Information Server)设为前台方式时,MTS 基于职能组的软件包的访问控制不能正常工作。在这些环境中使用的 MTS 软件包应配置为不启用安全性。</p>
<p>
此问题可通过安装 Windows NT QFE1 来解决。Windows NT QFE1 可从 Windows NT Option Pack Web download 站点下载。在安装该 QFE 之后,基于职能组的安全性将与 IIS 正常工作。</p>
<p>
当创建使用进程隔离的安全 IIS 应用程序时,IIS 将会创建设置为 IWAM_&lt;<i>计算机名称</i>&gt;运行的 MTS 软件包。如果要修改这些软件包的标识,应该向“MTS Trusted Impersonators”组添加新的软件包标识,否则在其它被软件包调用的进程外 MTS 组件中,安全性将不能正常工作。如果没有做到这一点,调用者将是 IWAM_&lt;<i>计算机名称</i>&gt; 而不是 IIS 的实际客户。</p>
<h4>在 ADO 中使用 ErrorInfo 对象</h4>
<p>
ADO 删除任何可以放到 ErrorInfo 对象中的信息,需要在您的错误处理程序中执行以下代码。</p>
<p>
对于 Visual Basic,则代码如下所示:</p>
<pre>ErrorHandler:
    ' cleanup
    If Not adoRS Is Nothing Then
        Set adoRS = Nothing
    End If
    If Not adoConn Is Nothing Then
        Set adoConn = Nothing
    End If
    
    Err.Raise Err.Number, &quot;Bank.Accout.Post&quot;, Err.Description

Exit Function</pre>
<p>
对于 Visual C++,则代码可以如下:</p>
<pre>//
//ErrorInfo is saved here because the following 
// ADO cleanup code may clear it.
//
IErrorInfo * pErrorInfo = NULL;
GetErrorInfo(NULL, &amp;pErrorInfo);

if (adoRsBalance) adoRsBalance-&gt;Release();
if (adoCoConnection) adoCoConnection-&gt;Release();

AtlReportError( CLSID_CAccount, pErrMsg, IID_IAccount, hr);

//
// put the error back in TLS
//
SetErrorInfo(NULL, pErrorInfo);</pre>
<p>
对于 Visual J++,则代码可以如下:</p>
<pre>if (adoRsBalance != null) {
&#09;if (adoRsBalance.getState() == ObjectStateEnum.adStateOpen)
&#09;&#09;adoRsBalance.Close();
&#09;ComLib.release (adoRsBalance);
}

if (adoConn != null) {
&#09;if (adoConn.getState() == ObjectStateEnum.adStateOpen)
&#09;&#09;adoConn.Close();
&#09;ComLib.release (adoConn);
}</pre>
<p>
<b>注意</b>   如果使用 Java,那么和显式地释放 ADO 对象一样,必须显式地关闭记录集和/或连接。</p>
<h4>没有 Sample Bank ASP 客户端</h4>
<p>
文档错误地声明提供了 Sample Bank 端的  Active Server Page(ASP) 版本。</p>
<h4>MTS 2.0组件上方法的最大个数为 1024</h4>
<p>
MTS 1.0 限制每个组件最多有 100 个方法。在 MTS 2.0 中该限制为1024个方法。</p>
<h4>在多处理器计算机上使用 RDO 2.0 的组件可能会遇到访问冲突</h4>
<p>
使用 RDO 2.0 并且被多个客户端同时访问的组件可能会遇到访问冲突。在有多个处理器的服务器上已经出现过这种情况。对于使用 ADO 的组件尚未出现这样的问题。</p>
<h4>Visual Basic Script 示例的位置</h4>
<p>
用于自动 MTS 管理的 Visual Basic Scripting (VBScript) 的示例位于 \Program Files\Mts\Samples,而不是文档中声明的 \Program Files\Mtx\Samples\WSH。</p>
<h4>Java Sample Bank 在 Windows 98 上没有编译。</h4>
<p>
如要在 Windows 98 上编译 Java Sample Bank,先在 Account.idl 文件上运行 midl.exe,然后运行 SetJavaDev.bat。</p>
<h2>使用 Microsoft Transaction Server API 来开发应用程序</h2>
<h3>使用 Microsoft Visual C++ 开发组件</h3>
<h4>MFC 的扩展 DLL</h4>
<p>
MTS 组件不能生成为 MFC 扩展 DLL,因为只有通过 MFC 应用程序才能加载这种 DLL。COM 组件以及由此而得的 MTS 组件,应生成为能装载到任意进程,而与启动该进程的应用程序无关。</p>
<p>
有关 MFC 扩展 DLL 的更详细信息,请参阅 Microsoft Visual C++ Programmer's Guide。</p>
<h3>使用 Microsoft Visual Basic 开发组件</h3>
<h4>ObjectControl</h4>
<ul>
<li>
The <b>ObjectControl</b> 接口是 C++ <b>IObjectControl</b> 接口的自动化副本。除非安装了 Microsoft Windows NT 4.0 Service Pack 2 或更高版本,否则不支持 <b>ObjectControl</b> 接口。<br><br></li>
<li>
当前的 Microsoft Transaction Server 运行时实现方案需要调用 Transaction Server 对象的 <b>CanBePooled </b>方法,这一点在 Transaction Server 的联机文档中做了说明。不过,该方法的返回值目前是被忽略的。返回 TRUE 也不能停止 Transaction Server 释放对象。 </li>
</ul>
<h4>使用 Visual Basic 4.0 组件时关闭 Mtx.exe 的已知问题</h4>
<p>
正在运行 Visual Basic 4.0 组件的 Mtx.exe 进程“可能因为空闲了 <i>x</i>分钟而关闭”,有一个由于“读访问冲突”而导致的已知问题。目前还不知道对该问题的解决方案。据认为,当一个进程中使用了两个以上的 Visual Basic 4.0 组件,则很可能发生该问题。一种应付措施是将软件包设为“当空闲时仍运行”。只有在使用由 Visual Basic 4.0 开发的组件时才有这个问题 -- 对于用 Visual Basic 5.0 开发的组件则没有。</p>
<h4>避免 Visual Basic 4.0/RDO 死锁</h4>
<p>
如果服务器组件使用 RDO,则一定避免带有活动 <b>rdoResultset</b> 的 <b>rdoConnection</b> 越界,否则可能导致死锁。必须手工关闭 <b>rdoResultset</b> 或 <b>rdoConnection</b> 来避免死锁。下述操作将会产生死锁:
<ol>
<li>
创建服务器组件的一个实例。调用创建 <b>rdoConnection</b> 的方法,然后调用创建 <b>rdoResultset</b>的方法。您可以从 <b>rdoResultset</b>获取数据,但不要取空或关闭这个 <b>rdoResultset</b>。<br><br></li>
<li>
释放这个实例。(由于该连接和结果集都已越界,不会立即产生所需的 ODBC 调用。而是要发送一个消息到一个隐藏的窗口,执行 <b>SQLFreeStmt+SQLDisconnect+SQLFreeConnect</b>操作)。<br><br></li>
<li>
创建该服务器组件的第二个实例。创建一个 <b>rdoConnection</b> ,并试图更新前面第 1 步的结果集中所包含的某一行。这样就形成了死锁,因为锁被第 1 步中创建的结果集占有,还没有释放。这样,用来处理前面第 2 步所发送消息的消息处理模块就不可能有机会运行了。</li>
</ol>
<p>
可以通过在第 1 步末尾时手工关闭结果集(或连接)来避免死锁,这样会立即产生 OBDC 调用以关闭语句(和连接)。这个问题的根源是由于将消息发送到隐藏窗口来执行 ODBC 关闭调用所导致的延迟。</p>
<h4>使用 Visual Basic 开发组件时 MTS 目录的维护</h4>
<p>
只要在 Visual Basic 4.0 中重新编译 OLE DLL工程,Visual Basic 就会重写位于该 DLL 中所有组件(Visual Basic 类)的所有注册表项。此外,Visual Basic 可能会产生新的 GUID(取决于您的工程配置)来标识该 DLL 中的组件。这就意味着该 MTS 组件在 MTS 目录中不再是正确注册的。</p>
<p>
对该问题有两个解决方案。首先,在“Transaction Server Explorer”中有一个“<b>刷新</b>”按扭,在“<b>工具</b>”菜单中也有功能相同的“<b>刷新所有组件</b>”命令。如果使用这个命令,则 Microsoft Transaction Server 会修复当前 Explorer 右窗格中组件注册表项输入项中的所有不一致之处。 </p>
<p>
如果安装了 Microsoft Transaction Server 的开发版本,请选取“<b>VB 外接程序</b>”选项,以启用在重新编译组件后自动刷新的功能。在下次运行 Visual Basic 4.0 时,该外接程序会自动安装到 Visual Basic 集成设计环境 (IDE)。也可以通过选择或取消选择 Visual Basic“<b>外接程序</b>”菜单中的“<b>MTxServer RegRefresh | AutoRefresh after compile </b>”命令,来针对每个项目打开或关闭此功能。如果决定在任何时候都刷新所有的 Microsoft Transaction Server 组件,可以使用“<b>外接程序</b>”菜单中的“<b>MTxServer RegRefresh | 立即刷新所有组件</b>”命令。 </p>
<p>
<b>重点</b>  Visual Basic 外接程序已更新为可用于 Visual Basic 4.0 及 5.0 版本。安装之后,该功能会根据每次编译所做的更改自动刷新 Transaction Server 目录。启用或禁止自动更新的“外接程序”菜单选项不再受支持。/p>
<p>
使用“外接程序”能正确更新 MTS 目录,即使在 Visual Basic 编译生成了新的组件 GUID 后。此外,也请注意在 Visual Basic“<b>工程选项</b>”对话框中的“<b>兼容的 OLE 服务器</b>”设置项可以用于防止 Visual Basic 生成新的组件 GUID。</p>
<p>
刷新 MTS 目录依赖于不能更改组件的程序标识符(ProgID)。在 Visual Basic 4.0中,组件的程序标识符是由下述连接组成的:项目名称.类名称。如果更改了其中一项,就需要在“MTS 资源管理器”中重新安装该组件。</p>
<p>
在 Visual Basic 4.0 中开发组件时,如果不选择“<b>兼容的 OLE 服务器</b>”选项,则每次编译都会替换旧的类标识符(CLSID) 和接口标识符 (IID)。这对 MTS 组件的开发是不利的,即使启用了 Visual Basic 外接程序。
<ul>
<li>
使用“MTS 资源管理器”分配给接口的职能组会丢失,因为该接口的接口标识符已作废。<br><br></li>
<li>
发布给远程机器的代理和注册表配置不能再引用该组件,必须全部更新。<br><br></li>
<li>
导出的包含该组件的软件包需要重新导出,因为该软件包定义文件的 GUID 现在不同步。</li>
</ul>

<hr>

<h1>报告问题和错误</h1>

<p>如果要报告错误,请在错误报告中包含下述信息:</p>

<ul>
<li>错误号及说明。</li>
<li>任何有关 Windows NT 事件查看器的信息。(Microsoft Transaction Server 在 Windows NT 事件查看器中报告错误信息。选择 Log Application and look for messages with Source = Transaction Server。如果发生错误,请查看 Windows NT 事件查看器)。</li>
<li>如果可能,请提供客户端计算机的配置。</li>
<li>服务器计算机的配置。</li>
<li>引起该问题的组件。</li>
<li>开发组件所用的语言(Microsoft Visual Basic,Microsoft Visual C++,及其他)。</li> 
<li>该组件实现的接口类型。例如,自定义接口,双重接口,或 dispinterface。</li>
<li>如果可能,请提供 ODBC 版本。</li>
<li>资源管理器的名称及版本。</li>
<li>导致问题的任何第三方组件、资源分配器、或资源管理器。</li>
<li>如果可能,发生该问题的代码行。</li>
</ul>

<hr>

<h1><a name="CopyrightInformation">版权声明</a></h1>

<p>&copy; 1997 Microsoft Corporation</p>

<p>本资料以“即此”形式、仅用于信息提供。</p>

<p>Microsoft 及其供应商不对本资料的内容或所包含的信息的准确性作任何明示或默示的保证,包括,但不限于,商销性或对于特定目的的适用性的默示保证。由于某些国家/司法辖区不允许排除默示保证,上述限制可能不适用于您。</p>

<p>Microsoft 及其供应商不对任何损失承担责任,包括后果性的,意外的,直接的,非直接的,特殊的和利润损失。由于某些国家/司法辖区不允许排除默示保证,上述限制可能不适用于您。无论在何种情况下,Microsoft 及其供应商就本资料以任何形式引起的全部责任,无论是依民事侵权行为、契约或其他形式,均不超过本资料的建议零售价。</p>
</hr>
<hr class="iis" size="1">
<p align="center"><em><a href="/iishelp/common/colegal.htm">&copy; 1997 Microsoft Corporation 版权所有,保留所有权利。</a></em></p></font>


</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -