加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 13:36:28 所属栏目:MsSql教程 来源:网络整理
导读:1.前言。 ?? 对于已经建库的数据库来说,这个有点麻烦,最好刚建库的时候就不要分配到c盘。 2.步骤 (1)先备份好你的数据库,防止误操作丢失! (2)先拷贝你的mdf和ldf到空间比较大的磁盘,如d:data1,这里的路径自己去创建一个。把mdf和ldf两个文件拷到d:dat
1.前言。
?? 对于已经建库的数据库来说,这个有点麻烦,最好刚建库的时候就不要分配到c盘。
2.步骤
(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:data1pubs.mdf',@filename2 = N'd:data1pubs_log.ldf' 附加

? 如果此步失败,可以尝试
sp_attach_single_file_db @dbname = 'pubs',@physname = 'D:data1pubs.mdf'

? 这个是只恢复mdf,没有日志参数,没关系,系统会自动提示你创建了一个新文件在D:data下面了,而不是c盘,至此附加成功。
3.注意事项。 ?? 一定要注意先备份数据库!!。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读