sqlserver如何修改primary的路径和日志路径?

本文详细介绍如何将SQL Server数据库从C盘迁移至其他磁盘分区的方法,包括备份数据库、转移MDF和LDF文件、分离及重新附加数据库等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]1.前言。[/b]
对于已经建库的数据库来说,这个有点麻烦,最好刚建库的时候就不要分配到c盘。
[b]2.步骤[/b]
(1)先备份好你的数据库,防止误操作丢失!
(2)先拷贝你的mdf和ldf到空间比较大的磁盘,如d:\data1,这里的路径自己去创建一个。把mdf和ldf两个文件拷到d:\data1。
(3).分离数据库

EXEC sp_detach_db 'pubs', 'true'--分离数据库


如果此步失败,可尝试

USE [master]
GO
/****** 对象: StoredProcedure [dbo].[killspid] 脚本日期: 01/03/2014 15:11:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[killspid] (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end

然后执行 exec [dbo].[killspid] pubs --pubs为你的数据库名字,将所有占用线程结束。
(4)删除或者重命名原来的日志文件(最好重命名),然后附加数据库,此步骤在master用户下操作

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'd:\data1\pubs.mdf',
@filename2 = N'd:\data1\pubs_log.ldf' 附加

如果此步失败,可以尝试

sp_attach_single_file_db @dbname = 'pubs',
@physname = 'D:\data1\pubs.mdf'

这个是只恢复mdf,没有日志参数,没关系,系统会自动提示你创建了一个新文件在D:\data下面了,而不是c盘,至此附加成功。
[b]3.注意事项。[/b]
一定要注意先备份数据库!!。
### 如何在 SQL Server 中创建新数据库时更改默认存储路径 #### 使用 T-SQL 脚本指定文件路径 当通过 `CREATE DATABASE` 命令创建数据库时,可以显式定义 `.mdf` `.ldf` 文件的存储路径。这种方式允许用户完全控制数据文件日志文件的位置。 以下是具体的语法示例: ```sql CREATE DATABASE [NewDatabaseName] ON PRIMARY ( NAME = N'NewDatabaseName_Data', FILENAME = N'D:\CustomPath\NewDatabaseName.mdf', -- 自定义的数据文件路径 SIZE = 8192KB, MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON ( NAME = N'NewDatabaseName_Log', FILENAME = N'E:\CustomPath\NewDatabaseName.ldf', -- 自定义的日志文件路径 SIZE = 8192KB, MAXSIZE = 2048GB, FILEGROWTH = 65536KB ); ``` 上述脚本中指定了自定义路径用于存放 `.mdf` `.ldf` 文件[^3]。 --- #### 修改 SQL Server 的默认文件保存路径 如果希望全局更改 SQL Server 默认的数据库文件日志文件保存路径,则可以通过以下两种方法实现。 ##### 方法一:使用 SSMS 图形化界面 打开 SQL Server Management Studio (SSMS),连接到目标实例后: 1. 右键单击服务器名称,选择 **属性**。 2. 切换至 **数据库设置** 页面。 3. 更改 **默认数据文件位置** **默认日志文件位置** 字段中的路径[^4]。 完成此操作后,后续新建数据库会自动遵循新的默认路径。 ##### 方法二:执行系统存储过程修改注册表项 也可以通过运行以下 T-SQL 脚本来更新 SQL Server 实例的默认路径配置: ```sql USE [master]; GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\DefaultData'; -- 新的默认数据文件路径 GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\DefaultLogs'; -- 新的默认日志文件路径 GO ``` 注意:该方式直接写入 Windows 注册表,因此需谨慎操作,并确保具有管理员权限[^5]。 --- #### 动态调整现有数据库的文件路径 对于已经存在的数据库,可通过 `ALTER DATABASE` 命令移动其文件到其他目录。具体步骤如下: 1. 将数据库置为脱机状态; 2. 手动复制原始文件到目标位置; 3. 更新数据库元数据以反映新路径; 4. 将数据库重新设为联机状态。 样例代码展示如下: ```sql -- 设置数据库为脱机模式 ALTER DATABASE ExistingDB SET OFFLINE; GO -- 移动 .mdf/.ldf 文件到新位置(手动操作) -- 修改数据库记录中的文件路径 ALTER DATABASE ExistingDB MODIFY FILE ( NAME = 'ExistingDB_Data', FILENAME = 'D:\NewLocation\ExistingDB.mdf' ); ALTER DATABASE ExistingDB MODIFY FILE ( NAME = 'ExistingDB_Log', FILENAME = 'E:\NewLocation\ExistingDB.ldf' ); GO -- 设置数据库为在线模式 ALTER DATABASE ExistingDB SET ONLINE; GO ``` 以上命令适用于迁移已有数据库的情况[^1]。 --- ### 总结 无论是创建新数据库还是调整已有的数据库,默认文件路径都可以灵活定制。推荐优先采用显式的 `CREATE DATABASE` 或者 `ALTER DATABASE` 配合文件选项的方式来满足特定需求;而针对长期规划,则可考虑修改 SQL Server 的全局默认路径设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值