Frage

Stellen Sie sich eine Windows Server 2003 Enterprise X64 Edition vor.

Ich kann ein 'vbscript.regexp' Objekt unter Verwendung eines VBSCripts erstellen (das bestätigt, dass die DLL registriert ist).

Ich kann kein 'vbscript.reGexp' Objekt mit sp_oacreate in einer SQL Server 2005 SP3 (.4053) (Cluster) (Cluster) erstellen.

Die OLE -Automatisierung wird in der Oberflächenkonfiguration überprüft.

Die sp_oacreate arbeitete bis vor kurzem.

Kannst du mir helfen?

*CODE*

            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
            */
War es hilfreich?

Lösung

Zehn Monate später trat das Problem erneut auf demselben System auf.

  • Spezifischer Fehler: 0x8007045a (eine Initialisierungsroutine für dynamische Verbindungsbibliothek (DLL) fehlgeschlagen)

Ich kann die Ursache für dieses Problem nicht finden. Ich fand jedoch genügend verwandte Szenarien (vor zehn Monaten), die darauf hinwiesen, dass das Neustart des Servers das Problem lösen würde.

Ich habe den Servercluster neu gestartet (beide Knoten, folgenden gesteuerten Fehler), und das Problem wurde behoben (kann ein Objekt 'vbscript.regexp' mit sp_oacreate erstellen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top