这是联机,不是脱机。
sp_who 看到的,你要看看dbname 列,是不是你要脱机的数据库
第一步:查看需要备份的数据库 登入SQL Server Management Studio后,在右侧打开树状图可以看到相关数据库。 第二步:数据库脱机 选中需要备份的数据库后,选中“任务”->“脱机”,脱机时候,必须关掉表、查询等 第三步:确认脱机成功 脱机这一步很...最近遇到一个服务器的数据库文件增长很快,情况属于正常,磁盘空间很快就要满了,但是另一个分区还有大把的空间,所以寻思着怎么把数据库文件,放过去,代码如下:DECLARE @DBNAME VARCHAR(255)
DECLARE @TargetPath VARCHAR(255)
DECLARE @CmdCommand VARCHAR(2000)
SET @DBNAME='TEST'
SET @TargetPath='D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA'
--第一步:设置数据库脱机
SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET OFFLINE'
EXEC(@CmdCommand)
--第二步:物理拷贝数据库文件到新目录
DECLARE @FileName VARCHAR(255)
DECLARE @SourceFullName VARCHAR(255)
DECLARE FileCur CURSOR for SELECT name,physical_name from sys.master_files where database_id=db_id(@DBNAME)
OPEN FileCur
FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName
WHILE @@FETCH_STATUS=0
BEGIN
SET @CmdCommand= 'copy "'+@SourceFullName+'" "'+@TargetPath+'"'
EXEC master..xp_cmdshell @CmdCommand
--修改数据库文件的路径指向新目录
SET @CmdCommand='ALTER DATABASE '+@DBNAME+' MODIFY FILE(FILENAME='''+@TargetPath+CASE WHEN RIGHT(@TargetPath,1)='\'THEN'' ELSE'\' END+
RIGHT(@SourceFullName, CHARINDEX('\', REVERSE(@SourceFullName))-1)+''',name='''+@FileName+''')'
EXEC(@CmdCommand)
FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName
END
CLOSE FileCur
DEALLOCATE FileCur
--第三步:设置数据库联机
SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET ONLINE'
EXEC(@CmdCommand)
也可以把这个做成一个过程,就不在这里修改了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)