Переименуйте файл данных базы данных в SQL Server 2005
Мне нужно переименовать файл данных баз данных. Это возможно с помощью SQL Server Management Studio?
FYI, у меня нет прав на базовое поле.
Изменить: мне также нужно изменить расположение файла.
Ответы
Ответ 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;