none
errore sp_OACreate -2146959355 RRS feed

  • Domanda

  • Salve volevo sapere da che cosa deriva il seguente errore quando invoco la segeunte stored

    exec @hr = sp_OACreate 'Word.Application', @objWord OU

    @hr =  -2146959355

    grazie

    lunedì 27 maggio 2013 10:58

Tutte le risposte

  • Ciao Calagan (:

    gli errori più comuni che si presentano quando cerchi di creare un oggetto sul filesystem sono :

    • Problemi dell'utente che deve scrivere il file sul disco : L'utente che esegue l'istanza di SQLServer non ha i permessi di scrivere nell'area del disco designata, puoi fornire per prova una cartella accessibile tipo quella dei backup, in alternativa crea la cartella impostando le autorizzazioni corrette dalle proprietà della cartella

    Una domanda sul tuo codice, puoi spiegarci cosa vuoi realizzare? Perché stai settando la variabile @hr a -2146959355?

    lunedì 27 maggio 2013 23:52
  • Ciao e grazie della risposta.

    In pratica ho cambiato un server passando a un architettura a 64 bit. Premetto che nel vecchio server non ho avuto mai problemi di questo genere. Ho utilizzato una stored procedure per esportare una tabella in un documento word e quando chiamo exec @hr = sp_OACreate 'Word.Application', @objWord OUT mi dava il seguente codice errore -2146959355. Facendo un pò di prove ora mi restituisce 0. Ora il problema sta quando chiamo exec @hr = sp_OAMethod @objWord, 'ActiveDocument.SaveAs' , NULL , @DocumentFile restituisce il seguente codice errore -2146824090.  Può essere l'archiettura diversa la causa dei problemi??? o sto dicendo un mare di cavolate???

    martedì 28 maggio 2013 09:26
  • No, potrebbe benissimo essere colpa dell'architettura, mi è capitato spesso di avere problemi (ad esempio di drivers per odbc a 32 bit istanziati da un sql server 64).

    Architetture dei software installati? SQL Server, Microsoft Office.

    martedì 28 maggio 2013 15:24
  • Allora:

    Sql server 2008 R2 64bit

    Office  2010 professional 64 bit

    Windows server 2008 r2 64bit

    mercoledì 29 maggio 2013 07:40
  • No scusami, mi era sfuggita una riga del tuo post.. ora la sp_OACreate ti restituisce 0 quindi vuol dire che crea tranquillamente il documento!

    Adesso il problema stà nel salvataggio, quindi non dovrebbe essere una dipendenza dall'architettura quanto dal filesystem!

    Prova a verificare l'esistenza del path dove stai cercando di salvare il documento ed i permessi utente e applicazione come detto nel primo post di risposta al thread (:

    giovedì 30 maggio 2013 10:47
  • Scasa il ritardo ma sono stato impegnato negli ultimi giorni...la path è esistente anche perchè non ho fatto altro che copiarla da vecchio server...l'unica cosa sono i permessi cme hai indicato. Ma non ho ben capito come funzionano. Ho provato

    GRANT EXECUTE ON [sys].[sp_OAMethod] TO [YOURDOMAIN\YourUser] ed ora nella tabella SELECT * FROM master.sys.database_permissions lo trovo però il risulato non cambia...sbaglio qualcosa??? grazie


    lunedì 10 giugno 2013 12:57
  • No, intendo proprio i permessi sul filesystem, con la GRANT assegni i diritti di esecuzione della procedura al tuo utente SQL/Win-SQL..

    l'utente che esegue sql server ha i permessi in scrittura su quella cartella?

    lunedì 10 giugno 2013 14:31
  • ah scusa non avevo capito...allora sono loggato come amministratore e i permessi sulla cartella in questione sono a controllo completo...scusa la mia ignoranza ma non riesco a capire dove sbaglio
    lunedì 10 giugno 2013 15:23
  • I permessi sono a controllo completo per chi? Amministratore o everyone? Devi controllare che l'utente che esegue il servizio sql server possa raggiungere la cartella e scriverci sopra. (per vedere l'utente start -> esegui -> services.msc, cerchi il servizio, click destro -> proprietà, tab logon -> utente)

    Per fare un test clicka sui gruppi di utenti con permessi, cerca everyone e imposta temporaneamente il full control da parte del gruppo.

    Se ancora non funzionasse puoi provare a postare il codice che stai usando? Così facciamo una prova e vediamo se c'è qualcosa che non va.. 

    (:

    lunedì 10 giugno 2013 22:23
  • per me i permessi sono ok anche perchè sono identici a quelli nel vecchio server...il codice è di prova

    Declare @WordObject int, @RetCode int, @Document int , @Filename varchar(255)
    Exec @RetCode = sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
    SELECT @RetCode
    SELECT @WordObject
    Exec @RetCode = sp_OAMethod @WordObject, 'Documents.Add', @Document OUTPUT
    SELECT @RetCode
    exec @RetCode = sp_OAMethod @WordObject,'Selection.TypeText("Created from within SQL Server SP using OLE Automation.")'
    SELECT @Filename = 'C:\FTP\yes.doc'
    Exec @RetCode = sp_OAMethod @WordObject,'ActiveDocument.SaveAs' , NULL , @Filename
    SELECT @RetCode
    Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
    Exec sp_OADestroy @WordObject
    Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
    Exec sp_OADestroy @WordObject


    • Modificato Calagan85 martedì 11 giugno 2013 10:45
    martedì 11 giugno 2013 10:00
  • Ho provato anche a intercettare l'errore ma non ho molte informazioni aggiuntive, il programma si ferma anche da me sul Save As con questa dicitura :

    OLE Automation Error Information
      HRESULT: 0x800A1066
      Source: Microsoft Word
      Description: Command failed

    Questo fine settimana se ho un po di tempo controllo i comandi e ti sò dire.. (:

    giovedì 13 giugno 2013 06:37
  • grazie per il tempo dedicato.
    giovedì 13 giugno 2013 07:13
  • Quell'errore indica solitamente che durante la procedura Word ha richiesto una interazione utente, ad esempio un messaggio di errore o una richiesta di conferma. I casi più frequenti in fase di salvataggio sono le richieste relative al formato di salvataggio (ad esempio un rischio di perdita informazioni o una richiesta conversione nel formato più recente).

    giovedì 13 giugno 2013 10:22
    Moderatore
  • ok...quindi secondo te che dovrei fare per ovviare al problema??? grazie
    giovedì 13 giugno 2013 14:52
  • Nessuno mi sa dire di preciso la causa del problema???
    martedì 25 giugno 2013 09:26
  • Ciao Calagan, sono tornato ieri scusa, settimana piena (:

    stasera provo il codice

    martedì 25 giugno 2013 12:22
  • ok...quindi secondo te che dovrei fare per ovviare al problema??? grazie

    Intanto la versione di Word è la stessa rispetto a quando funzionava? Se è più aggiornata potrebbe anche essere un problema di impostazioni di sicurezza di Office (ad esempio di percorsi attendibili se utilizzi percorsi di rete come cartella di salvataggio).
    martedì 25 giugno 2013 14:07
    Moderatore
  • Ho appena riprovato, sul computer full 32 bit il tutto funziona perfettamente (Windows 7, Office 2010, Console) con il codice postato sopra 

    Declare @WordObject int, @RetCode int, @Document int , @Filename varchar(255)
    Exec @RetCode = sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
    SELECT @RetCode
    SELECT @WordObject
    Exec @RetCode = sp_OAMethod @WordObject, 'Documents.Add', @Document OUTPUT
    SELECT @RetCode
    exec @RetCode = sp_OAMethod @WordObject,'Selection.TypeText("Created from within SQL Server SP using OLE Automation.")'
    SELECT @Filename = 'C:\FTP\yes.doc'
    Exec @RetCode = sp_OAMethod @WordObject,'ActiveDocument.SaveAs' , NULL , @Filename
    SELECT @RetCode
    Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
    Exec sp_OADestroy @WordObject
    Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
    Exec sp_OADestroy @WordObject


    Ho ricontrollato le versioni locali delle mie applicazioni e mi sono accorto di avere si il server 64bit, Office 64bit.. ma la management console stà girando a 32!! (config Windows8 64 + Server2012 64 + Office 64 + Console 32)

    Può sembrare un'assurdità ma non vorrei che fosse quello che gli dà fastidio.. comunque il codice è corretto, idem per i problemi di salvataggio.. lo salva senza chiedere conferme ulteriori, il problema stà proprio nelle architetture.. 

    venerdì 28 giugno 2013 09:26
  • Utilizzo una cartella come ftp che risiede proprio nel server quindi non credo che gli dia fastidio.

    lunedì 1 luglio 2013 14:38
  • Dando un occhiata qua e la alcuni dicono che può essere un problema del servizio di COM+ che gira a 32 bit invece di 64 però io non me ne intendo molto...
    lunedì 1 luglio 2013 14:46
  • Utilizzo una cartella come ftp che risiede proprio nel server quindi non credo che gli dia fastidio.

    Non è detto...esegui un controllo delle impostazioni di sicurezza (consenso salvataggio in base al formato, ecc..) ed aggiungi esplicitamente il percorso della cartella come attendibile.

    http://office.microsoft.com/it-it/word-help/office-2010-security-protecting-your-files-RZ101665538.aspx?section=6

    lunedì 8 luglio 2013 09:01
    Moderatore
  • Ho provato a impostare la sicurezza di word aggiungendo il percorso desiderato ma non cambia nulla.
    lunedì 8 luglio 2013 15:25