Sql server 服务器无法加载DCOM错误

Sql server 服务器无法加载DCOM错误,sql-server,Sql Server,我有一个本地SQL 2000数据库。我的Winform应用程序在尝试删除所有未更改的存储过程时突然死机。以下是错误消息: 服务器:Msg 7404,16级,状态2,过程记录CurrentUser2,第45行 服务器无法加载DCOM 然后,我注意到,当我尝试使用查询分析器更改SP时,当我尝试执行alter命令时,会出现相同的错误。我精简了存储过程,留下了执行时导致错误的核心代码: SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER

我有一个本地SQL 2000数据库。我的Winform应用程序在尝试删除所有未更改的存储过程时突然死机。以下是错误消息:

服务器:Msg 7404,16级,状态2,过程记录CurrentUser2,第45行 服务器无法加载DCOM

然后,我注意到,当我尝试使用查询分析器更改SP时,当我尝试执行alter命令时,会出现相同的错误。我精简了存储过程,留下了执行时导致错误的核心代码:

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO


ALTER PROCEDURE dbo.RecordCurrentUser2
(
 @xmlUser           varchar(8000)
)
AS 

BEGIN

    DECLARE @Now                datetime 
    DECLARE @ChangedRecordCount int

    --Normally this is commented out, but for testing, we'll hard code a param value:
    SET @xmlUser = '<User>
  <User>     
    <EmailId>chad.smith@effedupcompany.com</EmailId>
    <LastName>Chad</LastName>
    <FirstName>Smith</FirstName>
    <Initials />
    <DomainName>NA</DomainName>
    <Account>SMITH</Account>
    <TelephoneNumber>179-1458</TelephoneNumber>
    <PeoplesoftId>031X45</PeoplesoftId>
    <Department>Order to Collect BI Reporting</Department>
    <StreetAddress>58 Hill Road</StreetAddress>
    <PostalCode>06333</PostalCode>
    <Location>MAIN</Location>
    <State>AK</State>
    <Country>United States</Country>
  </User>
</User>'


    DECLARE @DocHandle      int

    SET @Now = GETUTCDATE()

     -- Create an internal representation of the XML document.

    EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xmlUser

     --Put the contents of the XML string into a temp table

    SELECT 
          EmailId          
         ,LastName           
         ,FirstName       
         ,Initials As Initials
         ,DomainName        
         ,Account           
         ,TelephoneNumber    
         ,PeoplesoftId       
         ,Department        
         ,StreetAddress      
         ,PostalCode         
         ,Location           
         ,State              
         ,Country            
         ,OtherTelephone
         ,NonUnisysDomainName
         ,NonUnisysAccount
    INTO
        #TempItems
    FROM
        OPENXML (@DocHandle, '/User/User', 2)
            WITH 
            (
             EmailId                nvarchar(80)
            ,LastName               nvarchar(50)
            ,FirstName              nvarchar(50)
            ,Initials               nvarchar(30)  
            ,DomainName             nvarchar(10)
            ,Account                nvarchar(10)
            ,TelephoneNumber        nvarchar(50)
            ,PeoplesoftId           nvarchar(50)
            ,Department             nvarchar(50)
            ,StreetAddress          nvarchar(50)
            ,PostalCode             nvarchar(50)
            ,Location               nvarchar(80)
            ,State                  char(2)
            ,Country                nvarchar(30)
            ,OtherTelephone         nvarchar(50)
            ,NonUnisysDomainName    nvarchar(10)
            ,NonUnisysAccount       nvarchar(10)
            )

END
以下服务正在我的计算机中运行,尽管它们可能不相关: 运行本地数据库的分布式事务协调器说明 COM++

我最近并没有故意安装任何东西,尽管我记得看到一个微软补丁被公司策略自动应用,但我不知道它是什么,也不知道如何发现


如何解决此错误?

我已使用管理员帐户运行SQL Server,而不是本地系统帐户,而是我的个人域帐户,该帐户是机箱上的管理员。这里没有变化

但是我确实重新启动了,问题就消失了。我提到的修补程序必须重新启动,但没有说明需要重新启动。令人惊讶的是,安装补丁时没有警告,并且没有告诉我安装完成后需要重新启动

对尝试管理帐户的合理建议投赞成票。谢谢!也要感谢火箭外科医生。

阻止内存泄漏的呼声在哪里

已解析的文档存储在 SQL Server的内部缓存。这个 MSXML解析器Msxmlsql.dll使用 可用内存总量的八分之一 对于SQL Server。为了避免耗尽 内存不足时,运行sp_xml_removedocument 释放内存


编辑:至少适用于SQL Server 2000至2008

阅读有关SQL错误7404的信息后,SQL Server在某些内部缓存中的文件操作似乎有问题。对不起,如果我的评论太广泛,没有帮助。这应该是一个可以接受的答案。这看起来像是一个永久的解决方案。谢谢你的评论。为了最小化存储过程的大小以便于发布,并隔离导致问题的实际源代码,我删除了大部分代码,删除了没有导致报告错误的任何代码。就目前而言,SP并不是很有用。原始SP包含您所引用的代码。谢谢你的帮助。