Серверу не удалось загрузить ошибку DCOM - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть локальная база данных SQL 2000. Мое приложение Winform внезапно умерло при попытке сохранить все сохраненные процедуры, которые не изменились. Вот сообщение об ошибке:

Сервер: сообщение 7404, уровень 16, состояние 2, процедура RecordCurrentUser2, строка 45 Сервер не может загрузить DCOM.

Затем я заметил, что когда я пытаюсь изменить SP с помощью Query Analyzer, я получаю ту же ошибку при попытке выполнить команду 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 ++

Недавно я ничего не устанавливал намеренно, хотя помню, что патч MS автоматически применялся в соответствии с политикой компании, не уверен, что это было и как это выяснить.

Как я могу устранить эту ошибку?

Ответы [ 2 ]

1 голос
/ 01 декабря 2009

Где ваш sp_xml_removedocument звонок для остановки утечек памяти?

разобранный документ сохраняется в внутренний кеш SQL Server. MSXML parser (Msxmlsql.dll) использует одна восьмая всей доступной памяти для SQL Server. Чтобы не кончились памяти, пробег sp_xml_removedocument освободить память.

Редактировать: относится к SQL Server 2000 до 2008 по крайней мере

0 голосов
/ 01 декабря 2009

Я уже запускал SQL Server под учетной записью администратора, а не учетной записью локальной системы, а моей учетной записью личного домена, которая является администратором на коробке. Здесь нет изменений.

Я все же перезагрузился, и проблема ушла. Патч, о котором я упоминал, должен был перезагрузиться, но на это не указывалось. Удивительно, но патч установлен без предупреждения и не требует перезагрузки после завершения установки.

Один голос за разумное предложение попробовать административный акт. Спасибо! И благодаря Rocket Surgeon тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...