sp_OACreate VBScript.RegExp Classe non registrata
-
16-10-2019 - |
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
*/
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).