Newsgroup: it.comp.lang.visual-basic
Titolo: Copia di un database SQL Server

Ciao a tutti.
Finora ho sempre fatto applicazioni che usavano DBF oppure MDB.
Adesso stiamo per rilasciare la prima applicazione che utilizza SQL Server
2000 come database.
Spesso capitano casi in cui il cliente ci deve inviare i dati per fare
alcuni controlli/sistemazioni.
Con i DBF e con MDB era facile. Facevo zippare il file o i files necessari e
me li facevo inviare via mail. Se dovevo fare qualche modifica particolare
sui dati, la facevo, rimandavo indietro il file zippato, lo facevo
scompattare e tutto era fatto.
Ma con SQL come posso fare?
Ho letto qualcosa sul Detach e Attach del file MDF, ma non ho capito con
precisione se č necessario fare il Detach dal PC del cliente prima di farmi
mandare il file MDF o se č sufficiente farmi mandare questo file e fare
l'Attach qui in ufficio.
Voi come avete risolto il problema? Esistono altri modi per trasferire
velocemente l'intero DB?
Pensavo di mettere una voce a menů che faccia tutto in automatico (per
venire incontro alle limitate competenze informatiche dei miei clienti).
Qualcuno ha qualche suggerimento / idea / link da segnalarmi?
Grazie... e ciao!
-- 
Skysurfer

 Grazie... e ciao!
ciaociao

 velocemente l'intero DB?
Hai pensato al Backup/Restore del DB?


Grazie ad entrambi per i suggerimenti.
Ho provato sia con l'Attach dell'MDF che con il Backup/Restore.
Per quanto riguarda l'Attach perň ho visto che funziona anche senza fare il
Detach nel server di origine.
Io ho fatto cosi': Ho sospeso il servizio, ho copiato il file MDF sul nuovo
PC e da lě ho fatto l'Attach.
I dati li vedo correttamente. E' giusto cosě, anche senza fare il Detach?
Serve anche il file di Log LDF?
Per quanto riguarda il ripristino, il risultato č lo stesso, ma mi sembra
che siano necessari un po' piů di passaggi per ottenere lo stesso
risultato...
Grazie e ciao
-- 
Skysurfer

 Serve anche il file di Log LDF?
talvolta funziona anche senza, e SQL Server provvede in tal caso alla
ricostruzione del file di log... non e' comunque una best practice...
diciamo che quando funziona vuole dire che SQL Server ci ama =:-))
in tale caso e' meglio utilizzare la stored procedure di sistema
sp_attach_single_file_db
saluti
Andrea Montanari (Microsoft MVP - SQL Server)
andre...@virgilio.it
http://www.asql.biz/DbaMgr.shtm
 
http://italy.mvps.org
DbaMgr2k ver 0.4.0  -  DbaMgr ver 0.50.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual
interface)
--------- remove DMO to reply

 nella stessa condizione..
Grazie Andrea per la risposta.
Quindi tu mi consigli di fare un Backup + Restore per inviare i dati via
mail tra due pc?
Oppure di farmi mandare il file MDF ma prima di far sempre eseguire il
Detach?
E, in questo caso... cosa succede dopo aver eseguito il Detach del DB? E'
necessario rieseguire l'Attach per poterlo usare, giusto?
Grazie, ciao
-- 
Skysurfer

 ha scritto nel messaggio
news:bpfrr8$n1u$1...@serv1.iunet.it...

comincio dall'ultima .....
il distacco/riattacco prevede le seguenti operazioni...
distacco del database, copia di tutti i file costituenti lo stesso,
riattacco del database sul server di origine, riattacco del database sul
server di destinazione...
sinceramente puoi benissimo usare entrambi i metodi... il distacco/riattacco
prevede chiaramente l'invio di TUTTI i file componenti il database, sai
tutti i file dati che tutti i file di log, mentre il backup/restore
necessita solitamente di un singolo file...
operativamente entrambe le operazioni sono semplici da effettuare, entrambe
sono altamente intrusive, nel senso che bloccano l'accesso al database in
questione al momento del restore mentre nel caso del riattacco il database
NON deve essere presente con lo stesso nome logico sul server interessato)..
entrambe necessitano di aggiustamenti, nel senso che il restore richiedera'
sicuramente (o probabilmente) la specifica
RESTORE DATABASE nome_db
 FROM c:\...\...
 WITH
  MOVE 'nome_logico_file_dati' TO 'c:\..\posizione_file_dati.Mdf'
  MOVE 'nome_logico_file_log' TO 'c:\..\posizione_file_log.Ldf'
mentre il riattacco del database dichiara la posizione fisica nella sintassi
stessa della stored procedure di sistema richiamata
EXE sp_attach_db nome_db,
 @filename1 = 'c:\..\posizione_file_dati.Mdf'
 @filename2 = 'c:\..\posizione_file_log.Ldf'
(fino a 16 file sono indicabili)
entrambe le operazioni richiedono la verifica ed eventualmente la messa a
punto di eventuali utenti orfani residui dell'lo spostamento del database
tra vari server...
a tale proposito vedi anche
http://www.support.microsoft.com/?id=314546
     Moving DB's between Servers
http://www.support.microsoft.com/?id=224071
     Moving SQL Server Databases
to a New Location with Detach/Attach
http://support.microsoft.com/?id=221465
             Using WITH MOVE in a
Restore
http://www.support.microsoft.com/?id=246133
     How To Transfer Logins and
Passwords Between SQL Servers
http://www.support.microsoft.com/?id=298897
    Mapping Logins & SIDs after a
Restore
http://www.dbmaint.com/SyncSqlLogins.asp
         Utility to map logins to
users
http://www.support.microsoft.com/?id=168001
     User Logon and/or Permission
Errors After Restoring Dump
http://www.support.microsoft.com/?id=240872
    How to Resolve Permission
Issues When a Database Is Moved Between SQL Servers
http://www.sqlservercentral.com/scripts/scriptdetails.asp?scriptid=599
Restoring a .mdf
entrambe richiedono privilegi di syadmin ovvero dbcreator al fine
dell'esecuzione delle stesse..


 sul server di destinazione...
[...]
Grazie ancora, sei stato molto utile, sia per la spiegazione che per i link
che mi hai segnalato.
Ciao!
-- 
Skysurfer