Мне нужно переименовать файл данных баз данных. Это возможно с помощью SQL Server Management Studio?
FYI, у меня нет прав на базовое поле.
Изменить: мне также нужно изменить расположение файла.
Мне нужно переименовать файл данных баз данных. Это возможно с помощью SQL Server Management Studio?
FYI, у меня нет прав на базовое поле.
Изменить: мне также нужно изменить расположение файла.
Да, вы можете это сделать, если у вас есть право отсоединить и повторно подключить базу данных, и пока вы найдете способ физически переименовать файлы на диске:
1) выдает эти команды
ALTER DATABASE yourdatabase
MODIFY FILE (NAME = logical_file_name, FILENAME = 'your-new-file-on-disk.mdf' )
(как отметил DGGenuine в комментарии: "ваш-новый файл-на-диске .mdf" должен быть полным именем файла, включая путь, на вашем диске)
2) отделить базу данных
3) переименуйте файлы на диске
4) снова подключите базу данных
Вы можете сделать это без каких-либо разрешений в базовой файловой системе, потому что вы не перемещаете физический файл, вы просите SQL Server создать новый файл от вашего имени и скопировать данные из него из резервной копии.
Чтобы установить новые имена файлов и пути, перейдите на вкладку "Параметры" диалогового окна "Восстановить". Вы даже получаете диалоговое окно просмотра папки, в котором отображается представление SQL Server о файловой системе, а не о вашем.
Минимальные разрешения, необходимые для этой процедуры:
db_backupoperator
роль в базе данных
Роль dbcreator
на сервереTry:
ALTER DATABASE <DBName>
MODIFY FILE (NAME = logical_file_name, FILENAME = 'new-file-on-disk.mdf' )
Это изменит только внутреннее определение имени файла SQL Server, оно не изменит фактическое имя файла в файловой системе OS.
вы можете использовать sp_detach_db, чтобы отключить базу данных. найти файлы и переименовать их, перенести их. затем используйте sp_attach_db, чтобы снова подключить их из нового местоположения. что как я это делаю.
С наилучшими пожеланиями, дон
Да и Нет. Вы можете изменить имя файла файла базы данных:
ALTER DATABASE <dbname> MODIFY FILE (NAME=<logicalname>, FILENAME=<newfilename>);
Это приведет к обновлению главного каталога, чтобы при первом открытии новой базы данных новое имя файла было просмотрено. Но нет прямого способа переименовать/переместить файл в Transact-SQL.
Вы можете использовать xp_cmdshell для переименования файла или вы можете развернуть сборку CLR с включенным EXTERNAL_ACCESS, который может выполнять операцию переименования/перемещения файла.
Запустите это в 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
Будьте внимательны при использовании функции переименования в контекстном меню, которое появляется при щелчке правой кнопкой мыши по базе данных в Management Studio. Этот параметр не изменяет имена файлов базы данных. Чтобы изменить логические имена файлов для файлов DATA и LOG , вы также можете использовать интерфейс Management Studio, но, к сожалению, иногда он не работает.
Давайте сделаем это правильно... он должен работать всегда.
Присоединение базы данных с помощью нового имени: Для этого используется 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
Он должен работать!
Вот пример кода для ответа 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.
После того, как мы переименуем базу данных, если мы хотим изменить имя и имя файла журнала, мы можем использовать следующий шаг:
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;