Trasportare il database sql Server 2005 express

martedì 10 ottobre 2006 - 23.44

paolo973 Profilo | Senior Member

Ho ultimato un'applicazione C# che fa uso di MS sql Server 2005 express.

è arrivata lora di andare dal cliente ed installare l'applicazione.

Installerò il framework e copierò l'eseguibile dell'applicazione in una directory del suo Computer.

per far uso del database:

cosa installare sul PC del cliente ?

ma cosa più importante come portare il database già con diverse tabelle piene nel PC del mio cliente ?

grazie sempre

MarKonE Profilo | Guru

Spero ti possa essere utile : http://msdn2.microsoft.com/it-it/library/ms165716.aspx

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

paolo973 Profilo | Senior Member

Allora in pratica ho SQL SERVER 2005 Express ed ho Visual C# express con l'applicazione che gira, accedendo al database.

Cosa fare per trasportare tale applicazione in un altro Computer ?

MarKonE Profilo | Guru

Scusa ma hai letto l'articolo che ti ho indicato ????

Mi sembra abbastanza esplicativo ma magari mi sbaglio.


Su quale punto in particolare hai dubbi ?

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

paolo973 Profilo | Senior Member

"Quando si utilizza la distribuzione tramite Xcopy per le applicazioni, è possibile che alcune funzionalità di SQL Server Express non funzionino come previsto".

Tale limitazione mi scoraggia ad applicare tale metodo.

nonostante mi ritrovi, dopo aver sviluppato un'applicazione, ad non poterla portare dal cliente.

Scusatemi per l'ignoranza.


MarKonE Profilo | Guru

>"Quando si utilizza la distribuzione tramite Xcopy per le applicazioni,
>è possibile che alcune funzionalità di SQL Server Express non
>funzionino come previsto".

Nel dettaglio :

"
# Qualsiasi struttura di codice Transact-SQL contenente nomi di database logici non funzionerà.
Poiché il nome logico del database dipende dal percorso del file, che varia per ogni operazione Xcopy, l'esecuzione di qualsiasi blocco di codice che specifica un nome di database logico avrà esito negativo.
# Le funzionalità di replica non sono disponibili.
Per la replica è necessario un nome di database logico persistente. Se l'applicazione utilizza la replica, non è possibile utilizzare la distribuzione tramite Xcopy.
"

Come accedi ai dati ?


>Tale limitazione mi scoraggia ad applicare tale metodo.
>
>nonostante mi ritrovi, dopo aver sviluppato un'applicazione,
>ad non poterla portare dal cliente.
>
>Scusatemi per l'ignoranza.

Vedi questa ottima panoramica su SQL Express:

http://download.microsoft.com/download/A/5/9/A59493FE-F1A4-4672-A87E-C7A38B93CAD3/SQLServer2005ExpressEdition.doc

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

paolo973 Profilo | Senior Member

ok mi hai convinto.

se puoi seguimi:

mio PC -- > PC1

PC dove copiare il mio database -- > PC2

Obiettivo: spostare il mio database in altro PC collegato in rete e con SQL Server 2005

1° passo)
sono nel PC2: da questo link sotto, scarico SQLEXPR_ITA.EXE e lo installo

http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&displaylang=it

2° passo) già devo chiedere aiuto

domanda : che significa in pratica avere disponibile nel PC2 una istanza in esecuzione ?

MarKonE Profilo | Guru

>Obiettivo: spostare il mio database in altro PC collegato in
>rete e con SQL Server 2005
>
>1° passo)
>sono nel PC2: da questo link sotto, scarico SQLEXPR_ITA.EXE e
>lo installo
>
>http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&displaylang=it

Meglio questo, aggiornato al SP1 :
http://www.microsoft.com/downloads/details.aspx?familyid=11350B1F-8F44-4DB6-B542-4A4B869C2FF1&displaylang=it

>2° passo) già devo chiedere aiuto
>
>domanda : che significa in pratica avere disponibile nel PC2
>una istanza in esecuzione ?

Semplicemente che sul pc di destinazione deve essere già installato e funzionante (servizio avviato) sql server express.

Il nome di istanza SQLEXPRESS è il predefinito quindi non ti devi preoccupare.


Un altro download che ti potrebbe essere utile, più che altro nel pc dove sviluppi ma anche sui client, è il Microsoft SQL Server Management Studio Express :

http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=it

E' paragonabile all' Enterprise Manager della versione a pagamento di sql 2000, hai presente ?


Ciao
My Blog... http://blogs.dotnethell.it/Mark/

paolo973 Profilo | Senior Member

Passo 3 )

con il comando XCOPY, precisamente,

C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data> XCOPY mioDB.mdf c:\temp\mioDB.mdf /K

analogamente per l'altro file

e fino ad ora ho copiato il file in altra directory sempre nel mio PC

Passo 4)
nel PC remoto installo, Framework, sqlserver, e management studio per sql server express

copio i due file nel PC remoto nella cartella del'sql server.

Passo 5)

apro il management studio sql express e collego tale database ma ottengo il seguente errore:

TITLE: Microsoft SQL Server Management Studio Express
------------------------------

Impossibile eseguire Collega database per Server 'IPPO\SQLEXPRESS'. (Microsoft.SqlServer.Express.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.2047.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Collega+database+Server&LinkId=20476

------------------------------
ADDITIONAL INFORMATION:

Eccezione durante l'esecuzione di un'istruzione o un batch Transact-SQL. (Microsoft.SqlServer.Express.ConnectionInfo)

------------------------------

I file 'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mioDB.mdf' e 'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mioDB_log.ldf' sono entrambi primari. Pu esistere un solo file primario per database.
(Microsoft SQL Server, Error: 1830)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.2047&EvtSrc=MSSQLServer&EvtID=1830&LinkId=20476


che significa sono entrambe primari ?

paolo973 Profilo | Senior Member

Avevo commesso un errore nel fare xcopy.

fatto l'XCOPY posso spostare i due file nel PC2 nella directory

e collegarlo mediante il management sql express, fin quì funziona.


Apro il database con Microsoft SQL Server Management Studio Express

e vado nel database alla sezione Diagrammi database trovo

Impossibile installare gli oggetti di supporto per i diagrammi di database perch al database non associato un proprietario valido. Per continuare, utilizzare innanzitutto la pagina File della finestra di dialogo Proprietà database o l'istruzione ALTER AUTHORIZATION per impostare il proprietario del database su un account di accesso valido, quindi aggiungere gli oggetti di supporto per i diagrammi di database.

vado nelle proprietà del database e alla selezione File come impostare il proprietario, tale campo è vuoto

inoltre
- tabelle ci sono ma ci sono anche tabelle di sistema che prima non c'erano
- viste contene viste di sistema che prima non c'erano

lbenaglia Profilo | Guru

>Apro il database con Microsoft SQL Server Management Studio Express
>
>e vado nel database alla sezione Diagrammi database trovo
>
>Impossibile installare gli oggetti di supporto per i diagrammi
>di database perch al database non associato un proprietario
>valido. Per continuare, utilizzare innanzitutto la pagina File
>della finestra di dialogo Proprietà database o l'istruzione ALTER
>AUTHORIZATION per impostare il proprietario del database su un
>account di accesso valido, quindi aggiungere gli oggetti di supporto
>per i diagrammi di database.
>
>vado nelle proprietà del database e alla selezione File come
>impostare il proprietario, tale campo è vuoto

Quando effettui il RESTORE o l'attach di un backup/database su un server diverso da quello di origine si viene a rompere la relazione tra login (a livello di server) e user account (a livello di database), quindi occorre ricrearla manualmente ad esempio utilizzando la stored procedure di sistema sp_changedbowner:

USE <tuo database> EXEC sp_changedbowner 'sa'

Inoltre il problema segnalato può essere causato da un livello di compatibilità < di 9.0 (ma non credo che sia questo il tuo caso dato che hai effettuato l'attach di un db creato in un'altra istanza di SQL Server 2005).

>inoltre
>- tabelle ci sono ma ci sono anche tabelle di sistema che prima
>non c'erano
>- viste contene viste di sistema che prima non c'erano
L'operazione di attach NON crea nuove tabelle/viste di sistema...

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

paolo973 Profilo | Senior Member

Dal Management Studio Express, vado su nuova query e digito:

USE aziendaDB
EXEC sp_changedbower 'sa'

esegui query ma ottengo:

Messaggio 2812, livello 16, stato 62, riga 2
Impossibile trovare la stored procedure 'sp_changedbower'.

lbenaglia Profilo | Guru

>Dal Management Studio Express, vado su nuova query e digito:
>
>USE aziendaDB
>EXEC sp_changedbower 'sa'

Manca una "n", sp_changedbowner

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

paolo973 Profilo | Senior Member

Sembra tutto ok, solo che:

le tabelle

e

le viste

sembrano sporcate dalla presenza di tabelle e viste di sistema che nel database creato nel PC1 non c'erano.

MarKonE Profilo | Guru

E' possibile che sul PC1 questi oggetti di sistema non fossero visualizzati ?

Ciao
My Blog... http://blogs.dotnethell.it/Mark/
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5