如何更改文件组位置?
How can I change filegroup location?
我在我的项目中使用 filetable 来存储文件。现在我想更改文件组位置并将其移动到另一个驱动器。
我该怎么做?
有两个人。
- 首先分离数据库,移动文件,然后重新附加数据库
- 其次在文件组中创建一个新文件,并使用带有EMPTY选项的命令DBCC SHRINKFILE (...),然后删除空文件
第一个 :
EXEC sp_detach_db 'MyDatabase';
--> move the file with a system command
CREATE DATABASE MyDatabase
ON FILE (FILENAME = '...',
FILENAME = '...',
...
)
FOR ATTACH;
第二个
ALTER DATABASE MyDatabase
ADD FILE (NAME = '...',
FILENAME = '...',
SIZE = ... GB,
FILEGROWTH = 64 MB)
TO FILEGROUP ...; --> the same filegroupe
DBCC SHRINKFILE ( '...', EMPTYFILE);
ALTER DATABASE MyDatabase
REMOVE FILE '...';
第一个需要将数据库设置为离线,第二个不需要,但会阻止对移动文件内的表和索引的所有访问。
我在我的项目中使用 filetable 来存储文件。现在我想更改文件组位置并将其移动到另一个驱动器。 我该怎么做?
有两个人。
- 首先分离数据库,移动文件,然后重新附加数据库
- 其次在文件组中创建一个新文件,并使用带有EMPTY选项的命令DBCC SHRINKFILE (...),然后删除空文件
第一个 :
EXEC sp_detach_db 'MyDatabase';
--> move the file with a system command
CREATE DATABASE MyDatabase
ON FILE (FILENAME = '...',
FILENAME = '...',
...
)
FOR ATTACH;
第二个
ALTER DATABASE MyDatabase
ADD FILE (NAME = '...',
FILENAME = '...',
SIZE = ... GB,
FILEGROWTH = 64 MB)
TO FILEGROUP ...; --> the same filegroupe
DBCC SHRINKFILE ( '...', EMPTYFILE);
ALTER DATABASE MyDatabase
REMOVE FILE '...';
第一个需要将数据库设置为离线,第二个不需要,但会阻止对移动文件内的表和索引的所有访问。