Domanda

Immaginate un Windows Server 2003 Enterprise x64 Edition.

posso creare un oggetto 'VBScript.RegExp' utilizzando un VBScript (che conferma che la DLL viene registrata).

Non è possibile creare un oggetto 'VBScript.RegExp' utilizzando sp_OACreate in uno SQL Server 2005 SP3 (0,4053) ambiente (cluster).

OLE Automation è controllata ON nella configurazione di superficie.

Lo sp_OACreate stava lavorando fino a poco tempo fa.

Mi potete aiutare?

* codice *

            declare
                @source varchar(5000),
                @regexp varchar(1000),
                @replace varchar(1000),
                @globalReplace bit,
                @ignoreCase bit

            set @source = 'NBG76TF43'
            set @regexp = '[^0-9]'
            set @replace = ''
            set @globalReplace = 1
            set @ignoreCase = 1

                DECLARE @hr integer
                DECLARE @objRegExp integer
                DECLARE @result varchar(5000)

                EXECUTE @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
                IF @hr <> 0 
                    BEGIN
                        EXEC @hr = sp_OADestroy @objRegExp
                        PRINT  'A'
                        PRINT @hr
                    END
                EXECUTE @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
                IF @hr <> 0 
                    BEGIN
                        EXEC @hr = sp_OADestroy @objRegExp
                        PRINT  'B'
                        PRINT @hr
                    END
                EXECUTE @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
                IF @hr <> 0 
                    BEGIN
                        EXEC @hr = sp_OADestroy @objRegExp
                        PRINT  'C'
                        PRINT @hr
                    END
                EXECUTE @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
                IF @hr <> 0 
                    BEGIN
                        EXEC @hr = sp_OADestroy @objRegExp
                        PRINT  'D'
                        PRINT @hr
                    END

                EXECUTE @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
                IF @hr <> 0 
                    BEGIN
                        EXEC @hr = sp_OADestroy @objRegExp
                        PRINT  'E'
                        PRINT @hr
                    END

                EXECUTE @hr = sp_OADestroy @objRegExp
                    IF @hr <> 0 
                        BEGIN
                            PRINT  'F'
                        PRINT @hr
                        END

                PRINT  @result

            /*
            A
            -2147211480
            B
            -2147211480
            C
            -2147211480
            D
            -2147211480
            E
            -2147211480
            F
            -2147211480
            */
È stato utile?

Soluzione

mesi Dieci più tardi, il problema si è verificato di nuovo sullo stesso sistema.

  • errore specifico: 0x8007045A (una libreria di collegamento dinamico (DLL) routine di inizializzazione non)

Non riesco a trovare la causa di questo problema. Tuttavia, ho trovato gli scenari relativi a sufficienza (dieci mesi fa) che suggerivano che il riavvio del server avrebbe risolto il problema.

ho riavviato il cluster di server (entrambi i nodi, a seguito di failover sotto controllo), e il problema è stato risolto (in grado di creare un oggetto 'VBScript.RegExp' utilizzando sp_OACreate).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top