Sql server 2005 ed express insieme

mercoledì 10 gennaio 2007 - 16.44

trinity Profilo | Guru

Allora il programma cheatto deve ho realizzato deve girare su database sql server express. quindi ecco le mie domande:

1 si può installare sql server express su una macchina dove mi è già installato per esempio sql server 2000 o 2005?

2 se la risp. alla prima domanda è SI tramite codice eseguendo il comand Create database ecc....come faccio a creare il database nell'apposita cartella data che fa riferimento a sql server express? e poi un eventuale restore di un file .bak?

Ciao grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>1 si può installare sql server express su una macchina dove mi
>è già installato per esempio sql server 2000 o 2005?
Certo. Se è già presente una istanza di default dovrai installarlo come named instance.

>2 se la risp. alla prima domanda è SI tramite codice eseguendo
>il comand Create database ecc....come faccio a creare il database
>nell'apposita cartella data che fa riferimento a sql server express?
Non specificarla ed i files .mdf e .ldf verranno automaticamente inseriti nella directory Data dell'istanza alla quale sei connesso

>e poi un eventuale restore di un file .bak?
Idem con patate

>Ciao grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

>>1 si può installare sql server express su una macchina dove mi
>>è già installato per esempio sql server 2000 o 2005?
>Certo. Se è già presente una istanza di default dovrai installarlo
>come named instance.
>
>>2 se la risp. alla prima domanda è SI tramite codice eseguendo
>>il comand Create database ecc....come faccio a creare il database
>>nell'apposita cartella data che fa riferimento a sql server express?
>Non specificarla ed i files .mdf e .ldf verranno automaticamente
>inseriti nella directory Data dell'istanza alla quale sei connesso
>

quindi mi stai dicendo che la prima connessione visto che il db non è creato la faccio sul Master e quindi connettendomi con la stringa:
Data Source=LocalHost\SQLEXPRESS;Initial Catalog=dbsend;Integrated Security=SSPI;
lui andrà a vedere già di default la connessione a sql server express e quindi qualsiasi operazione di creazione backup e restore la farà sulla cartella data giusta.

Giusto?

ps Lorenzo ho un thread importante postato prima senza risposta puoi dargli un'occhiata? te ne sarei infinitamente grato.
ecco il link: http://www.dotnethell.it/forum/messages.aspx?ThreadID=12880
>
>>e poi un eventuale restore di un file .bak?
>Idem con patate
>
>>Ciao grazie
>Prego.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>quindi mi stai dicendo che la prima connessione visto che il
>db non è creato la faccio sul Master e quindi connettendomi con
>la stringa:
>Data Source=LocalHost\SQLEXPRESS;Initial Catalog=dbsend;Integrated
>Security=SSPI;
Questa connection string non ti connette al master

>lui andrà a vedere già di default la connessione a sql server
>express e quindi qualsiasi operazione di creazione
Si

>backup e restore
Dipende, di default utilizza il path memorizzato nel backup set, quindi quello del computer che l'ha generato.
Se tale path in produzione è diverso dovrai ricorrere alla clausola WITH MOVE ma a questo punto ti serve conoscere il nuovo path.
Come? Su 2000 questa info era memorizzata nel registry, in 2005 non saprei ma penso che le cose non siano cambiate
Vediamo... eh si, eccola lì:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup\SQLDataRoot

Aggiungici un bel "\Data" ed ecco la tua directory Data.

Attenzione che MSSQL.1 si riferisce alla prima istanza SQL Server 2005, altre istanze e servizi (Analysis Services, Reporting Services, ecc.) avranno un valore MSSQL.x.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

>>quindi mi stai dicendo che la prima connessione visto che il
>>db non è creato la faccio sul Master e quindi connettendomi con
>>la stringa:
>>Data Source=LocalHost\SQLEXPRESS;Initial Catalog=dbsend;Integrated
>>Security=SSPI;
>Questa connection string non ti connette al master
>
>>lui andrà a vedere già di default la connessione a sql server
>>express e quindi qualsiasi operazione di creazione
>Si
>
>>backup e restore
>Dipende, di default utilizza il path memorizzato nel backup set,
>quindi quello del computer che l'ha generato.
>Se tale path in produzione è diverso dovrai ricorrere alla clausola
>WITH MOVE ma a questo punto ti serve conoscere il nuovo path.
>Come? Su 2000 questa info era memorizzata nel registry, in 2005
>non saprei ma penso che le cose non siano cambiate
>Vediamo... eh si, eccola lì:
>
>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup\SQLDataRoot


ok ma se ci sono + di una installazione come per esempio nel mio pc io trovo sotto la directory Microsoft SQL Server\ + di una cartella MSSQL.1 io a dirti la verità ne ho 3, e quindi come potrei sapere qual'è quella di riferimento a sql server express.
Cmq hai un esempio di come potrei fare il restore con la clausola With Move, perchè ora ti spiego e mi risposi già su un altro post.
io ho il database con i dati dentro e devo installarlo a tutti i clienti. Quindi come tu mi dissi tempo fa procedo in questo modo:

installa sql server express
con la mia applicazione devo rilevare se il database esiste o no(non so ancora farlo)
se esiste ok altrimenti si connette al db master e procedo con la creazione del database
una volta creata la cartella copio su c dal supporto magnetico il file .bak e devo farci il restore.
qui nasce il problema che ogni macchina è diversa dalla mia e che anche le cartelle MSSQ1.x possono essere + di una se ci fosse per esempio installato anche sql server 2000

quindi ecco realmente il mio problema e come lo risolveresti tu?

cmq ecco la stringa che utilizzerei per il restore

RESTORE DATABASE [dbsend] FROM DISK = N'C:\dbsend.bak' WITH FILE = 1, KEEP_REPLICATION, NOUNLOAD, REPLACE, STATS = 10
GO

ps scusa se te lo richiedo potresti dare uno sguardo a questo post?
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12880


Ciao
>
>Aggiungici un bel "\Data" ed ecco la tua directory Data.
>
>Attenzione che MSSQL.1 si riferisce alla prima istanza SQL Server
>2005, altre istanze e servizi (Analysis Services, Reporting Services,
>ecc.) avranno un valore MSSQL.x.
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>installa sql server express
>con la mia applicazione devo rilevare se il database esiste o
>no(non so ancora farlo)
>se esiste ok altrimenti si connette al db master e procedo con
>la creazione del database
>una volta creata la cartella copio su c dal supporto magnetico
>il file .bak e devo farci il restore.
Non ti serve a niente creare un db vuoto se poi lo sovrascrivi con il restore di un backup!
Fai il restore e chiuso, questa operazione provvederà ANCHE a crearti il db (ovviamente).

>quindi ecco realmente il mio problema e come lo risolveresti
>tu?
Perché vuoi installare una istanza a tutti i costi? Se il cliente ne ha già una perché installarne un'altra?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

perchè io quando creao il setup in visual studio 2005 stabilisco quali sono i prerequisiti di installazione tra cui vedere se c'è in stallato sql server express se non c'è si installa ovviamente se sulla macchina vi è sql server 2000 o 2005 e msde penso cmq che per il setup sql server express nn è installato e lo installa, giusto?

ma la stringa di resto che ti ho postato va bene nel caso in cui ci siano nella directory Microsoft Sql Server + di una cartella MSSQL1.x?


cmq ho provato a fare con sql management il restor del file .bak da c ed il database non era creato, utilizzando il tool mi diceva di indicare un db di destinazione e se non ho quello mio devo indicarci il Master? ed in più non mi funzionava, in altre parole ho dovuto creare il database che mi serviva e poi fare il restore
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5