none
SQLServer 2008 Express e SQLDMO RRS feed

  • Domanda

  • Buongiorno

    avrei bisogno di far funzionare una applicazione già scritta che usa SQLDMO con SQLServer 2008, credo di aver fatto i passi corretti ma mi viene sempre restituito questo errore nella creazione di un oggetto SQLDMO:
    errore: 2147165949 '... per connettersi a questo server è necessario utilizzare ...' in inglese: To connect to this server you must use SQL Server Management Studio or SQL Server Management Objects (SMO)

    in dettaglio:
    - ho effettuato le prove su un certo numero di pc virtuali (VMWare) con varie combinazioni di Sistema operativo, versione di SQLServer Express, relativo service pack ma sempre installando 'Componenti per la compatibilità con le versioni precedenti a Microsoft SQL Server 2005' (Pacchetto per X86 (SQLServer2005_BC.msi) - 11273 KB)
    - riporto come esempio i dati dell'unica installazione su pc reale:
     - Windows 7 Professional
     - SQLServer 2008 Express Edition with Advanced - SP1
     - SQLServer2005_BC.msi
     - SQLDSMO installato da un mio setup (*)(**)

    (*) sono certo che funziona sia perchè lo uso da anni sia perchè se con l'applicazione mi connetto ad un SQLServer 2000 su un altro PC le operazioni con SQLDMO funzionano
    (**) non sono sicuro del service pack a cui questi files si riferiscono, ritengo SP3

    a beneficio d'inventario aggiunto che invece sul mio PC di sviluppo funziona tutto! Questa è la configurazione
     - Windows XP Professional - SP3
     - SQLServer 2000 Developer - SP4
      - SQLDSMO incluso
     - SQLServer 2008 Standard - SP1
     - SQLServer2005_BC.msi

    qualche idea?
    grazie

    Alberto Testa

    martedì 19 gennaio 2010 11:16

Risposte

Tutte le risposte

  • salve Alberto,
    non so bene cosa tu debba fare con DMO con "SQL Server > 2000"... il modello non consente molte cose in maniera esaltante.. se devi fare un backup va bene, ma se devi gestire gli attributi di un'entita' allora e' tutt'altra cosa.. personalmente mi muoverei verso SMO, come ovviamente caldeggiato dal messaggio..
    quindi, se e' lecito, "cosa devi fare" ? :)
    saluti
    http://www.asql.biz - DbaMgr2k - DbaMgr and further SQL Tools
    martedì 19 gennaio 2010 16:20
    Moderatore
  • scusa, deve essere che mi sono spiegato male
    in realtà, come scrivi tu, la profondità delle cose che devo fare non è stratosferica, sono normali operazioni di manutenzione e poco altro:
    - verificare se il servizio e avviato ed avviarlo
    - backup
    - piano di manutenzione
    - ottimizzazione
    - esecuzione di script Sql e Stored, functions etc.
    non sono cose geniali ma permettono all'applicazione di vivere degnamente senza quotidiani interventi

    - l'applicazione è già scritta con SQLDMO per SQLServer 2000 ma volevamo abbandonare SQLServer 2000 (e MSDE)
    - adesso dovevamo supportare SQLServer 2008 (in particolare le versioni gratuitamente distribuibili), solo che SQLServer 2008 supporta solo SMO e quindi una applicazione .NET (a meno dell compatibilità COM che lascerei perdere)
    - volevamo evitare di fare SUBITO il passaggio di tutta l'applicazione iniziando con lo strato di compatibilità che la stessa Microsoft cita nella documentazione, avremmo così qualche mese per riscrivere tutta l'applicazione (purtroppo il problema è il solito... chi ci paga?)
    - a questo punto lo strano è che sul mio PC di sviluppo (vedi primo Post) funziona tutto! ... tutto quello che ho scritto sopra
    - mentre su varie VM create in varie configurazioni (vedi sempre primo Post) MAI e mi dà sempre lo stesso errore e per quello che ho cercato sul web trovo solo che quello che ho fatto è corretto

    ciao
    mercoledì 20 gennaio 2010 08:40
  • a beneficio d'inventario per i pochi interessati la soluzione me l'ha fornita:
    Davide Mauri
    Microsoft MVP
    e la potete leggere sul forum dell'UGISS: http://community.ugiss.org/forums/p/2669/6972.aspx#6972

    alla soluzione ho fatto alcune precisazioni ma il concetto finale è che: SI...PUO'....FA..RE!
    (qualcuno di voi ha presente Frankenstein Junior?)
    • Contrassegnato come risposta Alberto Testa giovedì 21 gennaio 2010 09:34
    giovedì 21 gennaio 2010 09:33
  • salve Alberto,
    mi pare non ci sia "novita'" rispetto a quanto predisposto sulle tue macchine..
    SQLServer2005_BC.msi e' infatti riportato come da te gia' installato, a meno che il problema non sia legato all'indicazione di Davide relativa a eventuali doppioni del componente, e quindi registrazione dell'OLE server "sbagliato".. non mi e' chiaro pero' "da dove" provenga tale eventuale doppione, in quanto SQLExpress 2008 non installa SQL-DMO e la sua presenza puo' solo essere legata all'installazione di SQLServer2005_BC.msi..

    al di la' di cio', ovviamente il mio consiglio resta l'abbandono del componente SQL-DMO per lo scenario SQL Server 2005-2008, in quanto le tue esigenze possono tranquillamente essere soddisfatte dall'esecuzione di comandi Transact-SQL "generici", quindi senza dover assolutamente scomodare il componente specifico ed evitando tutti i problemi relativi al suo deployment..
    infatti, anche nello scenario SQL Server 2000, ti e' necessaria l'installazione dei componenti client di SQL Server ovvero del componente SQL-DMO nel caso di MSDE.. cosa assolutamente fattibile, ma sempre relativamente delicata, tanto piu' che non e' mai stato disponibile un package di installazione per lo stesso.. si e' sempre dovuto, in un qualche modo, provvedere ad una specie di "cannibalizzazione" di un'installazione di MSDE, installando e manualmente registrando i file giusti (ed anche qui la posizione a livello di file system era importante, specialmente per le localizzazioni linguistiche), provvedendo indi ad aggiornare manualmente ogni client remoto ad ogni installazione di service pack/hot fix, in quanto il componente mi e' sempre risultato molto "sensibile" alle differenze di versione.. la cosa e' fattibilissima, ma laboriosa e tediosa, specialmente in ambienti particolarmente "distribuiti"..
    per i compiti che hai elencato, l'esecuzione di comandi Transact-SQL tramite, ad esempio, ADO o Ado.Net mi pare piu' che sufficiente allo scopo..
    saluti
    http://www.asql.biz - DbaMgr2k - DbaMgr and further SQL Tools
    giovedì 21 gennaio 2010 11:53
    Moderatore