Sql server 2005 在SQLServer2005中重命名数据库数据文件
我需要重命名数据库数据文件。这是否可以通过SQLServerManagementStudio实现 仅供参考,我没有对基础框的权限Sql server 2005 在SQLServer2005中重命名数据库数据文件,sql-server-2005,ssms,Sql Server 2005,Ssms,我需要重命名数据库数据文件。这是否可以通过SQLServerManagementStudio实现 仅供参考,我没有对基础框的权限 编辑:我还需要更改文件的位置。您可以使用sp\u detach\u db使数据库脱机。找到文件并重命名它们,移动它们。然后使用sp_attach_db从新位置重新连接它们。反正我就是这样做的 致以最良好的祝愿, 堂 对数据库进行完整备份 放下它 还原它,在“还原”对话框中指定不同的文件名和路径 您可以在对基础文件系统没有权限的情况下执行此操作,因为您没有移动物理文件,
编辑:我还需要更改文件的位置。您可以使用sp\u detach\u db使数据库脱机。找到文件并重命名它们,移动它们。然后使用sp_attach_db从新位置重新连接它们。反正我就是这样做的 致以最良好的祝愿, 堂
数据库中的角色db_backupoperator
服务器中的角色dbcreator
ALTER DATABASE <dbname> MODIFY FILE (NAME=<logicalname>, FILENAME=<newfilename>);
alterdatabasemodifyfile(NAME=,FILENAME=);
这将更新主目录,以便在下一次数据库打开事件中首先查找新文件名。但在Transact-SQL中没有直接的方法重命名/移动文件
您可以使用xp_cmdshell重命名文件,也可以部署启用外部访问的CLR程序集,以执行文件重命名/移动操作。是的,您可以这样做,只要您有权分离和重新连接数据库,并且只要找到物理重命名磁盘上文件的方法: 1) 发出这些命令
ALTER DATABASE yourdatabase
MODIFY FILE (NAME = logical_file_name, FILENAME = 'your-new-file-on-disk.mdf' )
(正如DGR在一篇评论中指出的:“磁盘上的新文件.mdf”必须是磁盘上的完整文件名,包括路径)
2) 分离数据库
3) 重命名磁盘上的文件
4) 重新连接数据库尝试:
ALTER DATABASE <DBName>
MODIFY FILE (NAME = logical_file_name, FILENAME = 'new-file-on-disk.mdf' )
ALTER数据库
修改文件(名称=逻辑文件名,文件名='磁盘上的新文件.mdf')
这只会更改SQL Server文件名的内部定义,不会更改操作系统文件系统中文件的实际名称 以文本模式在SSMS中运行此命令,以获取T-SQL脚本和DOS命令,这些命令将重命名所有.ndf文件。它假定您希望文件的名称与文件组的名称相同,减去我喜欢在文件组上使用的“FG_u2;”前缀 干杯 /********************************************************************** 脚本名称:重命名文件名02.sql 用途:重命名数据库中的多个文件名 更改历史记录:
2010年3月19日下午4:15-gmilner:已创建 **********************************************************************/ 不计较 声明@DATABASE_NAME VARCHAR(64) 设置@DATABASE\u NAME='YOUR\u DATABASE\u NAME\u HERE' 打印“--------------------------------------------------------------” 打印“在单独的SSMS窗口中运行这些” 打印“--------------------------------------------------------------” --创建ALTER数据库文件以更改sys中的文件名 /* 注意:“这只会更改SQL Server文件名的内部定义, 它不会更改操作系统文件系统中文件的实际名称。” */ 挑选 “alterdatabase”+@DATABASE_NAME+CHAR(13)+ '修改文件(名称='+[NAME]+','+CHAR(13)+'文件名=''''+ /*下面的行仅从整个(旧)文件名中删除路径 因此,新文件将映射到与旧文件相同的位置/ 子字符串(物理名称,1,PATINDEX(“%”+反向(子字符串(反向(物理名称),1,CHARINDEX(“\”,反向(物理名称))-1))+“%”,物理名称)-1+ @数据库名称+''''+
替换([名称],'FG_','')+'.ndf'');'/注意:所有文件组都以“FG”开头,但文件不应以“FG”开头/ +CHAR(13)/在每个命令之间放置一个空行*/ 从sys.master_文件 其中database\u id=DB\u id(@database\u NAME) 和物理名称,如“%.ndf” --现在我们需要DOS批处理命令来重命名实际文件。 --我们在盒子本身上以管理员的身份运行它们 打印“--------------------------------------------------------------” 打印“现在,分离数据库,然后…” 打印“以管理员身份在DOS批处理中运行这些” 打印“--------------------------------------------------------------” 选择“重命名”+物理名称+ '" "' + @数据库名称+“”+
替换([名称],'FG','')+'.ndf','/*注意:所有文件组都以“FG”开头,但文件不应以“FG”开头*/ 从sys.master_文件 其中database\u id=DB\u id(@database\u NAME) 和物理名称,如“%.ndf” 打印“--------------------------------------------------------------” 打印“DOS批处理运行后,重新连接数据库” 打印“--------------------------------------------------------------” 抵消
使用右键单击Management Studio中的数据库时出现的上下文菜单中的“重命名”选项时要小心。此选项不会更改数据库文件名。要更改数据和日志文件的逻辑文件名,您也可以使用Management Studio界面,但遗憾的是,有时它不起作用 让我们好好做吧。。。它应该始终有效。
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
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
USE master;
GO
ALTER DATABASE TESTDB
Modify Name = Northwind ;
GO
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' );
ALTER DATABASE Northwind SET ONLINE;