2010-02-03 28 views

Respuesta

32

Sí, puede hacerlo, siempre y cuando usted tiene el derecho de quitar y volver a colocar la base de datos, y siempre que se encuentre una manera de cambiar el nombre físicamente los archivos en el disco:

1) problemas estos comandos

ALTER DATABASE yourdatabase 
MODIFY FILE (NAME = logical_file_name, FILENAME = 'your-new-file-on-disk.mdf') 

(como DGGenuine señaló en un comentario: el 'tu-new-archivos-en-disco.mdf' debe ser un nombre completo de archivos - incluyendo el camino - en el disco)

2) separar la base de

3) cambiar el nombre de los archivos en el disco

4) vuelva a colocar la base de datos de nuevo

+1

Gracias. En mi experiencia 'your-new-file-on-disk.mdf' debe ser una ruta completa. –

+0

@DGGenuine: sí, el nombre de archivo ** completo ** (incluida la ruta) donde reside su nuevo archivo –

+0

NAME puede ser: db o db_log. No use apóstrofes – neves

1

puede usar sp_detach_db para poner la base de datos fuera de línea. encuentre los archivos y cámbieles el nombre, muévalos lo que sea. luego use sp_attach_db para volver a conectarlos desde una nueva ubicación. así es como lo hago de todos modos.

mejores deseos, Don

+0

Estoy bastante seguro de estudio tiene la capacidad de interfaz gráfica de usuario para hacer esas cosas, aunque no los he utilizado personalmente. Acabo de ejecutar los procedimientos almacenados en una ventana de consulta. –

2
  1. Tome una copia de seguridad completa de la base de datos.
  2. Colóquelo.
  3. Restaure, especificando diferentes nombres de archivos y rutas en el diálogo de restauración.

Puede hacerlo sin permisos en el sistema de archivos subyacente, porque no está moviendo un archivo físico, le pide a SQL Server que genere un nuevo archivo en su nombre y copie datos desde la copia de seguridad .

Para establecer los nuevos nombres de archivo y rutas, vaya a la pestaña Opciones del cuadro de diálogo Restaurar. Incluso obtiene un diálogo de búsqueda de carpeta que le muestra la vista del sistema de archivos de SQL Server, no la suya.

Permisos mínimos requeridos para este procedimiento:

  • db_backupoperator papel en la base de datos
  • dbcreator papel en el servidor
1

Sí y No. Puede cambiar el archivo de base de datos de objeto de nombre de archivo:

ALTER DATABASE <dbname> MODIFY FILE (NAME=<logicalname>, FILENAME=<newfilename>); 

Este w Actualizará el catálogo maestro para que, en el próximo evento abierto de la base de datos, se busque el nuevo nombre de archivo. Pero no hay una manera directa de renombrar/mover el archivo en Transact-SQL.

Aunque puede usar xp_cmdshell para cambiar el nombre del archivo, o puede implementar un ensamblado CLR con EXTERNAL_ACCESS habilitado que puede realizar la operación de cambio de nombre de archivo/mover.

2

Probar:

ALTER DATABASE <DBName> 
MODIFY FILE (NAME = logical_file_name, FILENAME = 'new-file-on-disk.mdf') 

Esto sólo va a alterar la definición interna de SQL Server del nombre del fichero, no va a cambiar el nombre real de la archivo en el sistema de archivos del sistema operativo.

+0

No necesita comillas alrededor del nombre del archivo lógico. – Geoff

0

Ejecute esto en SSMS en modo texto para obtener un script T-SQL y comandos DOS que cambiarán el nombre de todos sus archivos .ndf. Asume que desea que sus archivos tengan el mismo nombre que sus grupos de archivos menos el prefijo 'FG_' que me gusta usar en mis grupos de archivos.

Saludos.

 
/**********************************************************************

SCRIPT NAME: Rename FileNames 02.sql

PURPOSE: Rename multiple filenames on the database.

Change History:
03/19/2010 4:15 PM - gmilner: Created.

**********************************************************************/

SET NOCOUNT ON

DECLARE @DATABASE_NAME VARCHAR(64) SET @DATABASE_NAME = 'YOUR_DATABASE_NAME_HERE'

PRINT '----------------------------------------------------------------------------' PRINT ' RUN THESE IN A SEPARATE SSMS WINDOW' PRINT '----------------------------------------------------------------------------'

-- create the ALTER DATABASE files to change the file names in the sys

/* NOTE: "This will only alter SQL Server's internal definition of the filename, it will not change the actual name of the file in the OS file system." */

SELECT 'ALTER DATABASE '+ @DATABASE_NAME + CHAR(13) + ' MODIFY FILE (NAME = ' + [name] + ', ' + CHAR(13) + ' FILENAME = ''' + /* the line below strips the path only from the whole (old) filename so the new files are mapped to the same place as the old / SUBSTRING(physical_name,1,PATINDEX('%'+REVERSE(SUBSTRING(REVERSE(physical_name),1,CHARINDEX('\',REVERSE(physical_name))-1))+'%' ,physical_name)-1) + @DATABASE_NAME + '_' +
REPLACE([name],'FG_','') + '.ndf'');' /
NOTE: all filegroups start with 'FG' but files should not. / + CHAR(13) / put in a blank line between each command */ FROM sys.master_files WHERE database_id = DB_ID(@DATABASE_NAME) AND physical_name LIKE '%.ndf';

-- Now we need DOS BATCH commandS to rename the actual files. -- We run them as Administrator on the box itself

PRINT '----------------------------------------------------------------------------' PRINT ' NOW, DETACH THE DATABASE AND THEN ... ' PRINT ' RUN THESE IN A DOS BATCH AS ADMINISTRATOR' PRINT '----------------------------------------------------------------------------'

SELECT 'rename "' + physical_name + '" "' + @DATABASE_NAME + '' +
REPLACE([name],'FG
','') + '.ndf";' /* NOTE: all filegroups start with 'FG' but files should not. */

FROM sys.master_files WHERE database_id = DB_ID(@DATABASE_NAME) AND physical_name LIKE '%.ndf';

PRINT '----------------------------------------------------------------------------' PRINT ' AFTER THE DOS BATCH IS RUN, REATTACH THE DATABASE' PRINT '----------------------------------------------------------------------------'

SET NOCOUNT OFF

0

Tenga cuidado cuando se utiliza la opción del menú contextual que aparecen cuando hace clic derecho sobre la base de datos en Management Studio Renombrar. Esta opción no cambia los nombres de los archivos de la base de datos. Para cambiar los nombres de archivos lógicos para los archivos DATA y LOG , también puede usar una interfaz de Management Studio, pero desafortunadamente a veces no funciona.

Hagámoslo correctamente ... debería funcionar siempre. base de datos de

  1. Separar: Usando Management Studio, haga clic en la base de datos> vaya a “tareas”> “Separar”, haga clic en OK para separar una base de datos (nota: que el PP no puede ser utilizado para desprenderla)
  2. renombrar archivos físicos: Una vez que la base de datos está separado los archivos físicos son desbloqueado y se puede cambiar el nombre de ellos utilizando el Explorador de Windows: base de datos de enter image description here
  3. Colocación con nuevo nombre: Para ello utilizar T SQL:

    USO [maestro] CREAR BASE DE DATOS [SqlAndMe] EN (FILENAME = N'C: \ ... \ NewName.mdf '), (FILENAME = N'C: \ ... \ NewName_log.LDF ') para una conexión

  4. Cambiar el nombre de los nombres de archivos lógicos: ejecutar esta camiseta SQL:

    USO [NuevoNombre] ALTER DATABASE [NuevoNombre] MODIFY FILE (NOMBRE = N'OldName', NEWNAME = N'NewName ') ALTER BASE DE DATOS [NuevoNombre] MODIFY FILE (NOMBRE = N'OldName_log’, NEWNAME = N'NewName_log’) SELECT nombre, physical_name DE [NuevoNombre] .sys.database_files

TI deben obras!

0

Aquí hay un código de ejemplo para la respuesta de marc_s:

Después de cambiar el nombre de mi prueba de la base de datos, a TestSimple, quería cambiar el nombre de sus archivos. Lo siguiente funcionó para el archivo de registro. (Para el archivo principal, el nombre = parte se convirtió en la prueba, y sustituido el camino que quería para ese archivo.)

USE [master] 
ALTER DATABASE [TestSimple] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
GO 
ALTER DATABASE [TestSimple] 
MODIFY FILE (NAME = Test_log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\TestSimple_log.ldf') 
GO 
ALTER DATABASE TestSimple SET MULTI_USER 
GO 

Lo anterior ha cambiado lo que los archivos SSMS busca, pero en realidad no cambiar el nombre de los archivos. Así que tuve que hacer eso a través de Windows.

0

Después renombramos la base de datos, si queremos cambiar el nombre del archivo de registro de datos y también, podríamos utilizar siguiente paso:

1.

USE master; 
GO 
ALTER DATABASE TESTDB 
Modify Name = Northwind ; 
GO 

2.

ALTER DATABASE Northwind SET OFFLINE; 

ALTER DATABASE Northwind MODIFY FILE (NAME = TESTDB, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Northwind.mdf'); 
ALTER DATABASE Northwind MODIFY FILE (NAME = TESTDB_log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Northwind_log.ldf'); 

Cambiar el nombre de archivo en el servidor de Windows

4.

ALTER DATABASE Northwind SET ONLINE; 
Cuestiones relacionadas