Подтвердить что ты не робот

Переименуйте файл данных базы данных в SQL Server 2005

Мне нужно переименовать файл данных баз данных. Это возможно с помощью SQL Server Management Studio?

FYI, у меня нет прав на базовое поле.

Изменить: мне также нужно изменить расположение файла.

4b9b3361

Ответ 1

Да, вы можете это сделать, если у вас есть право отсоединить и повторно подключить базу данных, и пока вы найдете способ физически переименовать файлы на диске:

1) выдает эти команды

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

(как отметил DGGenuine в комментарии: "ваш-новый файл-на-диске .mdf" должен быть полным именем файла, включая путь, на вашем диске)

2) отделить базу данных

3) переименуйте файлы на диске

4) снова подключите базу данных

Ответ 2

  • Сделайте полную резервную копию базы данных.
  • Отбросьте его.
  • Восстановите его, указав разные имена файлов и пути в диалоговом окне восстановления.

Вы можете сделать это без каких-либо разрешений в базовой файловой системе, потому что вы не перемещаете физический файл, вы просите SQL Server создать новый файл от вашего имени и скопировать данные из него из резервной копии.

Чтобы установить новые имена файлов и пути, перейдите на вкладку "Параметры" диалогового окна "Восстановить". Вы даже получаете диалоговое окно просмотра папки, в котором отображается представление SQL Server о файловой системе, а не о вашем.

Минимальные разрешения, необходимые для этой процедуры:

  • db_backupoperator роль в базе данных Роль
  • dbcreator на сервере

Ответ 3

Try:

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

Это изменит только внутреннее определение имени файла SQL Server, оно не изменит фактическое имя файла в файловой системе OS.

Ответ 4

вы можете использовать sp_detach_db, чтобы отключить базу данных. найти файлы и переименовать их, перенести их. затем используйте sp_attach_db, чтобы снова подключить их из нового местоположения. что как я это делаю.

С наилучшими пожеланиями, дон

Ответ 5

Да и Нет. Вы можете изменить имя файла файла базы данных:

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

Это приведет к обновлению главного каталога, чтобы при первом открытии новой базы данных новое имя файла было просмотрено. Но нет прямого способа переименовать/переместить файл в Transact-SQL.

Вы можете использовать xp_cmdshell для переименования файла или вы можете развернуть сборку CLR с включенным EXTERNAL_ACCESS, который может выполнять операцию переименования/перемещения файла.

Ответ 6

Запустите это в SSMS в текстовом режиме, чтобы получить команды T-SQL script и DOS, которые переименуют все ваши .ndf файлы. Предполагается, что вы хотите, чтобы ваши файлы назывались такими же, как ваши файловые группы, минус префикс 'FG_', который мне нравится использовать в моих файловых группах.

Приветствия.

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

SCRIPT ИМЯ: Переименовать имена файлов 02.sql

ЦЕЛЬ: Переименуйте несколько имен файлов в базе данных.

История изменений:
  19.03.2010 16:15 - gmilner: Создано.

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

SET NOCOUNT ON

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

ПЕЧАТЬ '--------------------------------------------- ------------------------------- "PRINT" ЗАПУСТИТЕ ЭТИ В ОТДЕЛЬНОМ ОКНО SSMS" РАСПЕЧАТАТЬ '------------------------------------------------ ----------------------------

- создайте файлы ALTER DATABASE, чтобы изменить имена файлов в sys

/*   ПРИМЕЧАНИЕ. "Это изменит только внутреннее определение имени файла SQL Server,       он не изменит фактическое имя файла в файловой системе OS." */

SELECT   'ALTER DATABASE' + @DATABASE_NAME + CHAR (13) +   'MODIFY FILE (NAME =' + [name] + ',' + CHAR (13) + 'FILENAME =' '' +   /* строка ниже ограничивает путь только от всего (старого) имени файла       поэтому новые файлы сопоставляются с тем же местом, что и старые /   SUBSTRING (физическое имя, 1, PATINDEX ('%' + REVERSE (SUBSTRING (REVERSE (физическое имя), 1, CHARINDEX ('\', REVERSE (физическое имя)) - 1)) + '%', физическое_имя) -1) +   @DATABASE_NAME + '_' +
  REPLACE ([имя], 'FG_', '') + '.ndf' ');'/ПРИМЕЧАНИЕ: все файловые группы начинаются с "FG", но файлы не должны. /   + CHAR (13)/положить пустую строку между каждой командой */ FROM sys.master_files WHERE database_id = DB_ID (@DATABASE_NAME)  И физическое имя LIKE '%.ndf';

- Теперь нам нужны команды DOS BATCH, чтобы переименовать фактические файлы. - Мы запускаем их как Администратор в самом окне

ПЕЧАТЬ '--------------------------------------------- ------------------------------- "ПЕЧАТЬ" ТЕПЕРЬ, СДЕЛАТЬ БАЗУ ДАННЫХ И ТОГДА... "ПЕЧАТЬ" ЗАПУСКАЙТЕ ЭТИ В АКСЕССИИ ДОС, КАК АДМИНИСТРАТОР" РАСПЕЧАТАТЬ '------------------------------------------------ ----------------------------

SELECT 'rename "' + физическое имя +   ''" '+   @DATABASE_NAME + '' +
  REPLACE ([имя], 'FG', '') + '.ndf ";'/* ПРИМЕЧАНИЕ: все файловые группы начинаются с 'FG', но файлы не должны. */

FROM sys.master_files WHERE database_id = DB_ID (@DATABASE_NAME)  И физическое имя LIKE '%.ndf';

ПЕЧАТЬ '--------------------------------------------- ------------------------------- "ПЕЧАТЬ" ПОСЛЕ ТОГО, ЧТО DOS BATCH RUN, REATTACH THE DATABASE" РАСПЕЧАТАТЬ '------------------------------------------------ ----------------------------

SET NOCOUNT OFF

Ответ 7

Будьте внимательны при использовании функции переименования в контекстном меню, которое появляется при щелчке правой кнопкой мыши по базе данных в Management Studio. Этот параметр не изменяет имена файлов базы данных. Чтобы изменить логические имена файлов для файлов DATA и LOG , вы также можете использовать интерфейс Management Studio, но, к сожалению, иногда он не работает.

Давайте сделаем это правильно... он должен работать всегда.

  • Отсоединить базу данных: Используя Management Studio, щелкните правой кнопкой мыши по базе данных > перейдите в раздел "Задачи" > "Отсоединить", нажмите "ОК", чтобы отделить базу данных (обратите внимание: что БД нельзя использовать для ее отсоединения).
  • Переименование физических файлов: После отсоединения базы данных физические файлы разблокируются, и вы можете переименовать их с помощью проводника Windows: enter image description here
  • Присоединение базы данных с помощью нового имени: Для этого используется T SQL:

    ИСПОЛЬЗОВАТЬ [мастер] CREATE DATABASE [SqlAndMe] ON (FILENAME = NC: \...\NewName.mdf), (FILENAME = NC: \...\NewName_log.LDF) ДЛЯ ПРИСУТСТВИЯ

  • Переименовать логические имена файлов: Выполнить этот T SQL:

    ИСПОЛЬЗОВАТЬ [NewName] ALTER DATABASE [NewName] ИЗМЕНИТЬ ФАЙЛ (NAME = NOldName, NEWNAME = NNewName) ALTER DATABASE [NewName] ИЗМЕНИТЬ ФАЙЛ (NAME = NOldName_log, NEWNAME = NNewName_log) Имя SELECT, имя_файла FROM [NewName].sys.database_files

Он должен работать!

Ответ 8

Вот пример кода для ответа marc_s:

После переименования моей базы данных Test, TestSimple, я хотел переименовать его файлы. Следующие файлы работали в файле журнала. (Для основного файла NAME = part стал Test, и я заменил путь, который мне нужен для этого файла.)

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

Вышеизложенное изменило файлы, которые ищет SSMS, но фактически не переименовывает файлы. Поэтому я должен был сделать это через Windows.

Ответ 9

После того, как мы переименуем базу данных, если мы хотим изменить имя и имя файла журнала, мы можем использовать следующий шаг:

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' );

3.

Измените имя файла на сервере Windows

4.

ALTER DATABASE Northwind SET ONLINE;