SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
--作业定时压缩脚本 多库批量操作
DECLARE @DatabaseName NVARCHAR(50)
DECLARE @ExecuteSql NVARCHAR(MAX)
SET @ExecuteSql=''
DECLARE name_cursor CURSOR
FOR
SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb',
'northwind','pubs' )
OPEN name_cursor;
FETCH NEXT FROM name_cursor INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ExecuteSql =''
SET @ExecuteSql +='
USE ['+@DatabaseName+'];
DECLARE @Error INT
SET @Error=(SELECT TOP 1 size/128.0 - CAST(FILEPROPERTY([NAME], ''SpaceUsed'') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files ORDER BY [NAME] DESC)
--PRINT @Error IF(@Error>1)
BEGIN
ALTER DATABASE ['+@DatabaseName+'] --数据库名字
SET RECOVERY SIMPLE; --设置简单恢复模式
DBCC SHRINKFILE ([YiDianTongV2], 1); --(M)不能小于1M,
DBCC SHRINKFILE ([YiDianTongV2_log], 1); --(M)不能小于1M
ALTER DATABASE ['+@DatabaseName+']
SET RECOVERY FULL; --恢复为原来完整模式
END
'
PRINT @ExecuteSql; --打印
EXEC(@ExecuteSql) --执行
FETCH NEXT FROM name_cursor INTO @DatabaseName;
END;
CLOSE name_cursor;
DEALLOCATE name_cursor;
DECLARE @DatabaseName NVARCHAR(50)
DECLARE @ExecuteSql NVARCHAR(MAX)
SET @ExecuteSql=''
DECLARE name_cursor CURSOR
FOR
SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb',
'northwind','pubs') AND name LIKE '%mh%'
OPEN name_cursor;
FETCH NEXT FROM name_cursor INTO @DatabaseName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ExecuteSql =''
SET @ExecuteSql ='USE ['+@DatabaseName+'];'
SET @ExecuteSql +='这里换成要执行的sql语句'
PRINT @ExecuteSql; --打印
--EXEC(@ExecuteSql) --执行
FETCH NEXT FROM name_cursor INTO @DatabaseName;
END;
CLOSE name_cursor;
DEALLOCATE name_cursor;
/************************************************************
* 数据备份脚本:
* 1.运行前,请根据实际配置修改相应账户信息;
* 2.请将脚本执行结果另存为批处理文件,执行批处理文件即可;
************************************************************/ DECLARE @name NVARCHAR(200)
DECLARE @path NVARCHAR(500)
DECLARE @dbServer NVARCHAR(500)
DECLARE @dbUserName NVARCHAR(500)
DECLARE @dbUserPwd NVARCHAR(500)
--备份文件存放路径
SET @path = 'E:\05_DataBase_bakup\'
--数据库服务器
SET @dbServer = '.'
--数据库用户名
SET @dbUserName = 'sa'
--数据库用户密码
SET @dbUserPwd = '123'
DECLARE cursors CURSOR
FOR
--查询集合
SELECT [name]
FROM [sysdatabases]
WHERE NAME NOT IN ('master', 'tempdb', 'model', 'msdb') OPEN cursors
FETCH NEXT FROM cursors INTO @name
WHILE @@fetch_status = 0
BEGIN
--遍历集合
PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd +
' -Q "BACKUP DATABASE ['
+ @name + '] TO DISK = ''' + @path +
'[%date:~0,4%%date:~5,2%%date:~8,2%]' + @name + '.bak''"'
FETCH NEXT FROM cursors INTO @name
END
CLOSE cursors
DEALLOCATE cursors
/************************************************************
* 生成批量还原数据库脚本
************************************************************/
DECLARE @name NVARCHAR(200)
DECLARE @fileName NVARCHAR(200)
DECLARE @path NVARCHAR(500)
DECLARE @restorePath NVARCHAR(500)
DECLARE @dbServer NVARCHAR(500)
DECLARE @dbUserName NVARCHAR(500)
DECLARE @dbUserPwd NVARCHAR(500)
--数据库备份文件存放路径
SET @path = 'E:\05_DataBase_bakup\'
--数据库还原后的文件存放路径
SET @restorePath = 'E:\db2008\'
--还原到的数据库服务器
SET @dbServer = '192.168.0.7,1501\SQL2008'
--还原到的数据库用户名
SET @dbUserName = 'netuser'
--还原到的数据库用户密码
SET @dbUserPwd = 'netuser2008'
DECLARE cursors CURSOR
FOR
--查询集合
--注意:这里将数据库文件的物理路径替换掉了一部分,只保留数据库名称
SELECT [name],
REPLACE (REPLACE(FILENAME, 'E:\01.数据库\', ''), '.mdf', '') AS
[fileName]
FROM [sysdatabases]
WHERE NAME NOT IN ('master', 'tempdb', 'model', 'msdb') OPEN cursors
FETCH NEXT FROM cursors INTO @name,@fileName
WHILE @@fetch_status = 0
BEGIN
--遍历集合
PRINT 'osql -S ' + @dbServer + ' -U ' + @dbUserName + ' -P ' + @dbUserPwd +
' -Q "RESTORE DATABASE [' + @name + '] FROM DISK = ''' + @path + @name +
'.bak'' WITH FILE = 1, MOVE N''' + @fileName + ''' TO N''' + @restorePath
+ @name
+ '.mdf'', MOVE N''' + @fileName + '_log'' TO N''' + @restorePath + @name +
'.LDF'', NOUNLOAD, REPLACE,STATS = 10'
FETCH NEXT FROM cursors INTO @name,@fileName
END
CLOSE cursors
DEALLOCATE cursors
SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原的更多相关文章
- 数据库日志文件——数据库“xxx”的事务日志已满,原因为“LOG_BACKUP”
治标的方案: 参考网址:http://blog.csdn.net/tianlianchao1982/article/details/7388616 http://bbs.51cto.com/threa ...
- oracle导入命令,记录一下 数据库日志太大,清理日志文件
oracle导入命令,记录一下 工作中用到了,这个命令,记录一下,前提要安装imp.exe imp PECARD_HN/PECARD_HN@127.0.0.1:1521/orcl file=E:\wo ...
- SQL Server 数据库备份还原和数据恢复
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...
- SqlServer批量备份多个数据库且删除3天前的备份
/******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...
- SqlServer 获取 当前地址下 所有数据库字段信息 / 快速 批量插入数据库(TVPs)
SQL执行 --拼装 当前地址下 所有数据库字段信息 BEGIN DECLARE @dataBaseName NVARCHAR(MAX)--数据库名称 DECLARE @tableName NVARC ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
- SqlServer压缩数据库日志
)--数据库名称 )--数据库日志文件名称 --替换成自己的文件名称 select @dbName='dbname' select @dbNamelog='dbname_log' ) set @sql ...
- Python:使用pymssql批量插入csv文件到数据库测试
并行进程怎么使用? import os import sys import time def processFunc(i): time.sleep(10-i) print i if __name__= ...
- Sqlserver数据库日志太大如何快速删除
sqlserver使用在windows系统中,如果文件超上百GB了,我们还直接删除不了,这个问题我以前的apache日志就碰到过,至今还没删除呢,那么Sqlserver数据库日志太大如何快速删除呢,有 ...
随机推荐
- java--css+js做的树形菜单(完整版)
jsp页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...
- MKNetworkKit的断点续传SIDownloader下载
comefrom:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73d6f8b9042238fce098 ...
- 【hdu2457】ac自动机 + dp
传送门 题目大意: 给你一个字符主串和很多病毒串,要求更改最少的字符使得没有一个病毒串是主串的子串. 题解: ac自动机 + dp,用病毒串建好ac自动机,有毒的末尾flag置为true 构建fail ...
- Node.js,一生所爱
下午参加了<云品秀--前端前沿>,用友云平台前端架构师郭永峰(站着的那位)讲得很棒,而我最关注的就是Node了.最后我问了他关于独立开发,后端选择Node还是别的语言.他讲了很多,说自己在 ...
- git安装使用详解
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何 ...
- 百度2014 Summer Party视频集锦
博客已经迁移到reetsee.com,在百度或其他搜索引擎搜"吹水小镇"就能够了.要看原版的博客请到:blog.reetsee.com 转载请注明: 吹水小镇 | reetsee. ...
- sklearn 下距离的度量 —— sklearn.metrics
1. pairwise from sklearm.metrics.pairwise import pairwise_distance 计算一个样本集内部样本之间的距离: D = np.array([n ...
- 整了一天,明白一个道理:线程里post数据,即loop.exec+quit,然而这个quit之后,导致无法在线程里建立新的loop.exec,直接就退出了
跟踪到exec的代码里,发现: 无奈,把第二个post移到主线程里去执行了. 如果大家发现有好办法,请告知我.
- 基于WPF实现双色球
原文:基于WPF实现双色球 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/82959625 ...
- ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...