salve Ciro,
cicorvin ha scritto:
Vorrei distribuire un db sql server, i file mdf e ldf, con un pacchetto di installazione, ed avrei la necessita di installarli sul sql server.
E' possibile installare un db in sql server attraverso una procedura automatica avviabile da un pacchetto di installazione?
Eventualmente potrei accedere da programma ai file suddetti senza bisogno del sql server?
Grazie e ciao.
ciro
lo puoi fare, se il tuo installer engine prevede in un qualche modo anche la possibilita' di creare ad esempio oggetti COM (ad esempio CreateObject("ADODB.Connection") ovvero anche CreateObject("SQLDMO.SQLServer")), in questo modo potrai poi eseguire l'attach/restore/create database come preferito...
resta un problema di UI, nel senso che dovresti anche richiedere una login e relative credenziali di accesso a SQL Server, ovvero indicare se utilizzare una connessione trusted, ma penso sia risolvibile dai vari installer disponibili.. InnoSetup ad esempio lo supporta...
un altro aspetto pero' vorrei farti notare... personalmente mi sono sempre "battuto" contro questo modo di distribuzione delle basi dati, e se googli un po' potrai trovarne conferma, questo anche "contro" le indicazioni di politica di distribuzione rilasciate da Microsoft stessa..
personalmente non amo molto l'installazione via attach/restore in quanto non rispetta le impostazioni utente relative sia alla collation di sistema che eventuali impostazioni da ereditare dal database Model... questo inteso per tutti gli eventuali oggetti aggiunti dall'utente al database Model, siano essi oggetti di database che eventuali Utenti, Ruoli etc...
riguardo alle regole di confronto si puo' benissimo obiettare che SQL Server 2000 e successivi supportano diverse specifiche di collation, sia a livello di istanza, che di singolo database ed addirittura di colonna, ma ho visto molto spesso query fallire proprio perche' non risolte nella collation, specificatamente relativamente alle tabelle temporanee generate in tempdb (che eredita la collation di sistema)..
e' opportuno in tal caso codificare le proprie query in modo da risolvere correttamente le collation, ad esempio come brillantemente indicato da AlessandroD nel ng microsoft.public.it.sql, http://tinyurl.com/rjoyv ..
riguardo agli oggetti... c'e' poco da dire/fare... mancano e basta
ripeto, Microsoft stessa utilizza e consiglia anche soluzioni basate su attach/restore, ma personalmente preferisco ed adotto da sempre soluzioni di scripting, dove fornisco solamente gli script DDL (ed eventalmente DML per il caricamento di tabelle da prepololare) che vengono eseguiti da un tool appositamente confezionato, che oltre ad occuparsi della creazione delle basi dati e' anche in grado di gestirne l'aggiornamento strutturale che sicuramente prima o poi sara' necessario...
oltre a garantire il rispetto delle impostazioni utente, cio' garantisce anche la possibilita' di mantenere lo schema delle basi dati sotto strumenti di controllo di versione (ad esempio SourceSafe)
presso http://msdn.microsoft.com/msdnmag/issues/04/09/customdatabaseinstaller/ puoi vedere l'articolo che da sempre reputo il "migliore" riguardo questa problematica e che piu' si avvicina al mio modo di operare..
saluti