Creare un database con dei file .mdf e .ldf gia esistenti?

martedì 23 novembre 2004 - 11.44

NikCH Profilo | Newbie

Come si fa a creare un database con dei file .mdf e .ldf gia esistenti?

Grazie mille Nik

GvnnRules Profilo | Senior Member

Devi usare la funzione sp_attach_db, ecco un esempio:

EXECUTE sp_attach_db @dbname = 'mioDatabase',
@filename1 = 'c:\test_db.mdf',
@filename2 = 'c:\test_db_log.ldf'

Ahh devi eseguirla sul database Master :-P

Ciaoz
Gvnn

NikCH Profilo | Newbie

grazie mille,

ma in query analyzer facendo partire questa funzione mi esce scritto: @filename1 i s not a parameter for procedure sp_attach_db.

GvnnRules Profilo | Senior Member

Strano, questo è l'esempio della documentazione in linea ...

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

Ciaoz
Gvnn

NikCH Profilo | Newbie

Finalmente son riuscito a capire il problema.

Le virgole vanno messe prima del filename

Invece di cosi:
EXECUTE sp_attach_db @dbname = 'mioDatabase',
@filename1 = 'c:\test_db.mdf',
@filename2 = 'c:\test_db_log.ldf'

Le virgole vanno messe cosi: (che pignoleria)
EXECUTE sp_attach_db @dbname = 'mioDatabase'
,@filename1 = 'c:\test_db.mdf'
,@filename2 = 'c:\test_db_log.ldf'

NikCH Profilo | Newbie

Grazie mille per le risposte. e per fortuna che esiste la guida in linea.

bico Profilo | Newbie

Scusami io ho lo stesso problema e vorrei delle delucidazioni essendo alle prime esperienze.
Se ho ben capito si tratta di realizzare una nuova stored procedure in master se è così ci ho provato ma non riesco a completarla perchè mi chiede il proprietario ed il nome che io non riesco ad assegnarci.
Cortesemente potresi essere più chiaro.
Grazie.

Etruria Profilo | Newbie

SP_ATTACH_DB

hhhhh .. a me pare strano se lancio la procedura dal QueryAnalyzer con il seguente comando Funziona!

use master Exec sp_attach_db 'pubs','c:\Programmi\Microsoft SQL Server\MSSQL\data\pubs.mdf',
'c:\Programmi\Microsoft SQL Server\MSSQL\data\pubs_log.ldf'

.. se invece creo un Cmd in VB con esattamente uguale,
e lo lancio con NonExecuteQuery


Dim CmdtxtAttacca As String = "USE MASTER EXEC SP_ATTACH_DB '" & PathDataBase & "', '" & ToData & "', '" & ToLog & "'"

Dim CmdAttacca As New SqlCommand(CmdtxtAttacca, sqlCnn)

Try
sqlCnn.Open()
CmdAttacca.ExecuteNonQuery() 'Attacca la Bd ai file mdf e log


....
NOn va! e mi da Execption: Errore Generale di Rete!


Idee?

Chiara

lbenaglia Profilo | Guru

>use master Exec sp_attach_db 'pubs','c:\Programmi\Microsoft SQL
>Server\MSSQL\data\pubs.mdf',
>'c:\Programmi\Microsoft SQL Server\MSSQL\data\pubs_log.ldf'
>
>.. se invece creo un Cmd in VB con esattamente uguale,
>e lo lancio con NonExecuteQuery
>
>
>Dim CmdtxtAttacca As String = "USE MASTER EXEC SP_ATTACH_DB '"
>& PathDataBase & "', '" & ToData & "', '" & ToLog & "'"

Ciao Chiara,

Non vedo il nome del db (pubs nell'esempio che hai eseguito da QA)....
Ad ogni modo l'attach di un db è una operazione amministrativa CHE NON DEVE essere eseguita applicativamente.
Se provi a spiegarci le tue esigenze vedremo di capirci qualcosa di più.

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

Etruria Profilo | Newbie

Grazie,
scusate il ritardo!

le mie esigenze richiedono un bachup ed un ripristina .. almeno io non vedo laternative
(stacca-attaca lo esculo perchè mi spaventa! ;)))

Ho varie Database su un server, i miei colleghi devono partire quotidianamente/settimanalmente con i portatili e portandosi via
alcuni database per poi riportarli aggiornati!
Guardacaso Server ho DB sul disco D.. mentre nei portatile installati su C:
la mia idea è stata creare Backup sul server trasportare la copia del backp sul Portatile e fare ripristino backup sul portatile imponendo la destinazione che risulta diversa!

Sarebbe bello riuscissi a permetterlo anche dal programma VB! Tasto TRAVASO ;),
cosìcchè ognuno esegue il suo caricaPc/scaricaPc!

quindi Creo prima il comando:
"BACKUP DATABASE " & PathDataBase & " TO " & NomePerifericaBkp
poi copio il file sulla cartella (resa condivisa)
'C:\Programmi\Microsoft SQL Server\MSSQL\Backup

poi 2° fase dove tento ripristino utilizzando un Db Alternativo Global dove ho altri dati

"USE Global " &
"RESTORE DATABASE " & PathDataBasedaRipristinare & _
" FROM DISK = '" & NomeFisicoFileBkp & "' " & _
WITH REPLACE" & _
", MOVE '" & FileDataBkp & "' TO '" & ToData & "'" &
", MOVE '" & FileLogBkp & "' TO '" & ToLog & "'"


'USE Global
'RESTORE DATABASE TributiProva
'FROM disk = '\\PCportatile\SQLBackUp\BkpTravasoDaServerProva.bkp'
'WITH REPLACE,
'MOVE 'DBProva_Data' TO 'C:\Programmi\Microsoft SQL Server\MSSQL\Data\DBProva_Data.MDF',
'MOVE 'DBProva_Log' TO 'C:\Programmi\Microsoft SQL Server\MSSQL\Data\DBProva_Log.LDF'

Connesso come Server=(local); DataBase=Global;


a me pareva giusto.. ma spesso mi da errore.. a volte va!
cambiare Global con Master?
A volte non ha funzionato ed ha lasciato il DB "Sospetto"!


Meglio passare a Stacca Attacca.. permettendo di staccare il db sul server?

Chiara

lbenaglia Profilo | Guru

>Ho varie Database su un server, i miei colleghi devono partire
>quotidianamente/settimanalmente con i portatili e portandosi
>via
>alcuni database per poi riportarli aggiornati!

Ciao Chiara,

esiste la possibilità in cui 2 o più colleghi utilizzano gli stessi database?
In questo caso come pensi di sincronizzare i database sul server?
Sia utilizzando il detach/attach o backup/restore andrai a sovrascrivere di volta in volta il database con l'ultima versione, perdendo i dati precedenti.

In un caso come il tuo è ideale implementare uno scenario di replica tramite il quale i tuoi colleghi andranno a sincronizzare i loro db locali con quello centrale.
SQL Server offre diverse tipologie di replica, ognuna con i suoi pro e contro. Sui Books Online troverai ampia documentazione sull'argomento.

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

Etruria Profilo | Newbie

Grazie!

escludo (non a priori, ma per ora) la concorrenza,
ogni collega lavora solo su un DataBase!

Comunque mi informo, sono curiosa di veder come salta fuori dalla replica
!

magari sviluppi nuovi!
Grazie sempre molto utile!

Chiara
Chiara
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