想象一下Windows Server 2003 Enterprise X64 Edition。

我可以使用VBScript创建“ vbscript.regexp”对象(确认已注册DLL)。

我无法使用SQL Server 2005 SP3(.4053)(群集)环境中的SP_OACREATE创建“ vbscript.regexp”对象。

在表面积配置中检查了OLE自动化。

直到最近,SP_OACREATE一直在工作。

你能帮助我吗?

*代码*

            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
            */
有帮助吗?

解决方案

十个月后,该问题再次发生在同一系统上。

  • 特定错误:0x8007045a(动态链接库(DLL)初始化例程失败)

我找不到这个问题的原因。但是,我发现了足够的相关方案(十个月前),建议重新启动服务器可以解决问题。

我重新启动了服务器群集(两个节点,之后的故障转移之后),并解决了问题(可以使用sp_oacreate创建'vbscript.regexp'对象)。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top