Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cambiare nome ai file mdf e log

307 views
Skip to first unread message

Alessandro AKA Trinità

unread,
Sep 11, 2006, 9:19:02 AM9/11/06
to

Devo rifare un database e volevo rinominarlo con _3 (in precedenza era _2)

ho fatto

EXEC sp_renamedb 'miodb_2' , 'miodb_3'

poi

ALTER DATABASE Protezione_civile_3
MODIFY FILE (NAME = miodb_2_Data, NEWNAME = miodb_3_Data)

ALTER DATABASE Protezione_civile_3
MODIFY FILE (NAME = miodb_2_Log, NEWNAME = miodb_3_Log)

solo che se rinomino i file con F2 e ricollego il db sql si accorge del
"trucco"

quella giusta dovrebbe essere
ALTER DATABASE Protezione_civile_3
MODIFY FILE (NAME = miodb_3_Data, FILENAME = 'miodb_3_Data')
ma non mi fuziona
ricevo questo errore
La clausola MODIFY FILE non è riuscita. Non specificare il nome fisico.


Alessandro AKA Trinità

unread,
Sep 11, 2006, 9:44:16 AM9/11/06
to
dovrei essere riuscito.
Quando ricollego il database da ent M. e cerco il file MDF (ora rinominato
con _3) non capivo come mai andasse a ricercare quelli con _2...
Basta dirgli _3 nel path dove va a cercare i file e tutto si sistema (almeno
spero, perchè il db ora è su, leggo i dati tranquillamente, spero non ci sia
nascosta qualche gabola..)

Lorenzo Benaglia

unread,
Sep 11, 2006, 9:50:55 AM9/11/06
to
Alessandro AKA Trinità wrote:
> Devo rifare un database e volevo rinominarlo con _3 (in precedenza
> era _2)
>
> ho fatto
<SNIP>

Quindi in sostanza vuoi fare 3 cose:

1) Cambiare il nome al database;
2) Cambiare il nome fisico dei files;
3) Cambiare il nome logico dei files.

Io seguirei una strada differente:

USE master;
GO

/* Definisco il database Pippo */
CREATE DATABASE Pippo;
GO

/* Effettuo il Detach */
EXEC sp_detach_db 'Pippo';
GO

/* Rinomino i files fisici */
!!ren "C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Pippo.mdf"
"Pippo2.mdf"
!!ren "C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Pippo_log.ldf"
"Pippo_log2.ldf"

/* Effettuo l'Attach cambiando nome al database*/
EXEC sp_attach_db 'Pippo2',
'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Pippo2.mdf',
'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Pippo2_log.ldf';
GO

/* Modifico il nome logico dei files */
ALTER DATABASE Pippo2
MODIFY FILE (NAME = Pippo, NEWNAME = Pippo2);
GO

/* Output:

The file name 'Pippo2' has been set.

*/

ALTER DATABASE Pippo2
MODIFY FILE (NAME = Pippo_log, NEWNAME = Pippo2_log);
GO

/* Output:

The file name 'Pippo2_log' has been set.

*/

/* Verifica */
EXEC sp_helpdb 'Pippo2'
GO

/* Output:

name
-------- ...
Pippo2


name fileid filename
------------ ------ --------------------------------------------------------------------
Pippo2 1 C:\Programmi\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Pippo2.mdf
Pippo2_log 2 C:\Programmi\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Pippo2_log.ldf

*/

/* Pulizia */
DROP DATABASE Pippo2;

Ciao!

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


AlessandroD

unread,
Sep 11, 2006, 9:51:19 AM9/11/06
to
E si, sei costretto a passare per il detach e successivo attach visto che la
sintassi che stavi provando con ALTER DATABASE funziona solo se il DB di
riferimento è tempdb, per gli altri DB, picche...
Cercando un po' qui c'è una testimonianza del sig. Erland Sommarskog:
http://www.issociate.de/board/post/239918/Moving_the_distribution_database.html
Ciao, Alessandro


Alessandro AKA Trinità

unread,
Sep 11, 2006, 10:42:02 AM9/11/06
to

> 1) Cambiare il nome al database;
> 2) Cambiare il nome fisico dei files;
> 3) Cambiare il nome logico dei files.

si esatto. Alla fine ho fatto proprio questo, con qualche passaggio in più.
Se non ci sono controindicazioni e l'avvenuto collegamento con nomi nuovi è
sionimo di operazione effettuata correttamente io sono a posto.
Grazie a tutti cmq

CIAO !

0 new messages