当前位置: 首页 > news >正文

东莞网站建设牛魔网a/广东省最新疫情

东莞网站建设牛魔网a,广东省最新疫情,wordpress 重定向次数,用asp.net 做网站需求(1)需要把现有test库备份,修改成test_当前日期,加入现在是 20200716,就改成 test_200716。(2)然后重新创建数据库test,把原来的表结构和存储过程函数一类的全部构建到新建的 test 库上。(3)把现有用户对新建的这个 test 库授权…

需求

(1)需要把现有test库备份,修改成test_当前日期,加入现在是 20200716,就改成 test_200716。

(2)然后重新创建数据库test,把原来的表结构和存储过程函数一类的全部构建到新建的 test 库上。

(3)把现有用户对新建的这个 test 库授权读写访问

(4)把 test_200716 的一些数据清理掉,并且把一部分数据比如某些表的三天内数据插入到新建的 test 库中

(5)然后以为有多个操作,每次我们新建一个 test_200716 这样的,我们就把最老的 比如 test_200602库 给删掉(删之前脚本里有操作先备份避免误删和无法找回)

(6)操作完之后对线上数据库备份,并且删除4个月前的备份文件

【0】bat架构结构

e9e85bc78b0bba87fbc3dce4f2716d61.png

【1】bat脚本

@echo off

set today=%date:~0,4%%date:~5,2%%date:~8,2%

set logfile=log_%today%.log

set errorfile=error_%today%.logecho--------------------- >>%logfile%

echo %date%%time%>>%logfile%echo 测试引擎服务是否启动......set /p="测试引擎服务是否启动......">%logfile%sqlcmd-S 127.0.0.1,1433 -Q "declare @i int;select @i=1;" 2>%errorfile%

IF ERRORLEVEL 1 echo fail>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 开始重命名数据库/创建数据库......set /p="开始重命名数据库/创建数据库......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 1_DB_renameAndCreate.sql -E -b 2>>%errorfile% 1>db_log_%today%.log

IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 新建表和存储过程_修改存储过程......set /p="新建表和存储过程_修改存储过程......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 2_新建表和存储过程_修改存储过程.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log

IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 授权_收缩日志......set /p="授权_收缩日志......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 3_授权_收缩日志.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log

IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 维护......set /p="维护......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 4_维护.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log

IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 删除最早的库_删除4个月前的备份文件......set /p="删除最早的库_删除4个月前的备份文件......">%logfile%sqlcmd-S 127.0.0.1,1433 -i 5_删除最早的库_删除4个月前的备份文件.sql -E -b 2>>%errorfile% 1>>db_log_%today%.log

IF ERRORLEVEL 1 echo fail......请检查db_log_%today%.log 文件>>%logfile%

IF ERRORLEVEL 0 echo ok>>%logfile%echo 启动sql server代理服务......set /p="启动sql server代理服务......">%logfile%net start "SQLSERVERAGENT"1>>%logfile%net start "SQLSERVERAGENT"2>>%logfile%echo 执行完毕,请查看%errorfile%与%logfile%!

timeout/t 100

【2】1_DB_renameAndCreate.sql(重命名与创建数据库)

修改老数据库  test为 test_当前日期,新建一个test

begintryusemaster;set nocount on;print '----------------------------------------------'

print '~~~~~~~~~~1_DB_renameAndCreate.sql~~~~~~~~~~~~'

print '----------------------------------------------'

----------------------------------------------

print ' '

print '------renameDB------'

print ' '

declare @db_name varchar(100),@new_db_name varchar(100)declare @sql varchar(3000),@mdf varchar(500),@ldf varchar(500)--设置需要修改的数据库名称 --默认 PQDL_LogCenter

set @db_name='test'

select @new_db_name=@db_name+'_'+right(convert(varchar(8),getdate(),112),6)print '修改信息----老数据库名:'+@db_name+',修改后的数据库名:'+@new_db_name

--判断@db_name指定的数据库是否存在

if not exists(select 1 from master.sys.master_files where database_id=db_id(@db_name))begin

declare @error_msg varchar(200)set @error_msg='renamedb.sql => 指定的数据库'+@db_name+'不存在!...'

RAISERROR (@error_msg, 16, 1);return

end

--杀需要重命名的数据库进程

set @sql=''

select @sql=@sql+';kill'+cast(spid as varchar)+';'

frommaster.dbo.sysprocesseswhere dbid=db_id(@db_name)exec(@sql)--重命名操作

set @sql='sp_renamedb'+@db_name+','+@new_db_name+';'

exec(@sql)--收缩日志

DBCC SHRINKDATABASE (@new_db_name, TRUNCATEONLY)-------------------------------------------------

print ' '

print '------createDB------'

print ' '

declare @path_dir nvarchar(500)declare @mdf_path nvarchar(500),@ldf_path nvarchar(500)select top(1) @path_dir=filename from master.sys.sysdatabases where name like '%'+@db_name+'%'

set @path_dir=left(@path_dir,len(@path_dir)-charindex('\',reverse(@path_dir))+1)select @mdf_path=@path_dir+@db_name+'_'+convert(char(8),getdate(),112)+'.mdf'

select @ldf_path=@path_dir+@db_name+'_'+convert(char(8),getdate(),112)+'_log.ldf'

print '创建数据库'+@db_name

print 'MDF文件路径为:'+@mdf_path

print 'MDF文件路径为:'+@ldf_path

set @sql='create database'+@db_name+'on primary

(

name='+@db_name+',

filename='''+@mdf_path+''',

size=10MB,

filegrowth=32MB

)

log on

(

name='+@db_name+'_log,

filename='''+@ldf_path+''',

size=10MB,

filegrowth=10MB

);

alter database'+@db_name+'set recovery simple with no_wait'

exec(@sql)endtrybegincatchDECLARE @ErrorMessage NVARCHAR(4000);DECLARE @ErrorSeverity INT;DECLARE @ErrorState INT;SELECT

@ErrorMessage =ERROR_MESSAGE(),@ErrorSeverity =ERROR_SEVERITY(),@ErrorState =ERROR_STATE();print @errorMessage

RAISERROR (@ErrorMessage, --Message text.

@ErrorSeverity, --Severity.

@ErrorState --State.

);ENDCATCH;--

【3】2_新建表和存储过程_修改存储过程.sql

比较机密,就不贴具体代码了

set nocount on;print ' '

print '----------------------------------------------'

print '~~~~~~~~~~2_新建表和存储过程_修改存储过程.sql~~~~~~~~~~~~'

print '----------------------------------------------'

print ' '

print '------创建表和存储过程------'

print ' '

----------------------------------------------[2]

print ' '

print '------更新存储过程------'

print ' '

----------------------------------------------[3]导入前三天的日志

print ' '

print '------导入前三天日志------'

print ' '

【4】3_授权_收缩日志.sql

set nocount on;print ' '

print '----------------------------------------------'

print '~~~~~~~~~~3_授权_收缩日志.sql~~~~~~~~~~~~'

print '----------------------------------------------'

print ' '

print '------授权------'

print ' '

USEmaster;if not exists(select 1 from master.sys.syslogins where name='test_user')CREATE USER [test_user] FOR LOGIN [test_user]

USE [test]

if not exists(select 1 from sysusers where name ='test_user')begin

CREATE USER [test_user] FOR LOGIN [test_user]

end

EXEC sp_addrolemember N'db_datareader', N'test_user'

EXEC sp_addrolemember N'db_datawriter', N'test_user'

EXEC sp_addrolemember N'db_owner', N'test_user'

USE [master]

if not exists(select 1 from master.sys.syslogins where name='testQuery')CREATE LOGIN testQuery with password='a123456!'

USE [test]

if not exists (select 1 from sysusers where name ='testQuery')begin

CREATE USER [testQuery] FOR LOGIN [testQuery]

end

EXEC sp_addrolemember N'db_datareader', N'testQuery'

----------------------------------------------

print ' '

print '------收缩------'

print ' '

declare @db_name varchar(100)declare @logic_name varchar(100)set @db_name='test'

select top(1) @logic_name=name from master.sys.master_files where type_desc='LOG' and database_id=db_id(@db_name)print @logic_name

dbcc shrinkfile(@logic_name,10)

【5】4_维护.sql

usemaster;set nocount off;print ' '

print '----------------------------------------------'

print '~~~~~~~~~~4_维护.sql~~~~~~~~~~~~'

print '----------------------------------------------'

print ' '

print '------备份数据库------'

begintrybegin tran

print ' '

print '------操作------'run spcommit tran

endtryBEGINCATCHDECLARE

@ErrorMessage NVARCHAR(MAX)

,@ErrorSeverity INT,@ErrorState INT,@exception NVARCHAR(255);SELECT

@ErrorMessage =ERROR_MESSAGE()

,@ErrorSeverity =ERROR_SEVERITY()

,@ErrorState =ERROR_STATE();SET @exception

= '(State' + CAST(@ErrorState AS NVARCHAR(20)) + ', Severity' + CAST(@ErrorSeverity AS NVARCHAR(20)) + ')'

+ @ErrorMessage;RAISERROR (@exception,16,1);ROLLBACK tran;PRINT '回滚成功'

end catch

【6】5_删除最早的库_删除4个月前的备份文件.sql

usemastergo

PRINT ' '

print '----------------------------------------------'

print '~~~~~~~~~~5_删除最早的库_删除4个月前的备份文件.sql~~~~~~~~~~~~'

print '----------------------------------------------'

----------------------------------------------

DECLARE @drop_dbname VARCHAR(300),@Bak_dir VARCHAR(500),@bak_filename VARCHAR(500)DECLARE @delete_Day_before datetime, @flag INT,@db_name varchar(200)set @db_name='test'

SELECT

TOP(1) @drop_dbname=nameFROMsys.databasesWHERE name LIKE @db_name+'_%'

ORDER BY CAST(right(name,6) AS INT) ASC

SELECT

top(1) @Bak_dir=left(bmf.physical_device_name,len(bmf.physical_device_name)-charindex('\',reverse(bmf.physical_device_name))+1) --,--bs.backup_set_id,--bs.database_name,--bs.backup_start_date,--bs.backup_finish_date,--CAST(CAST(bs.backup_size/1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS [Size],--CAST(DATEDIFF(second, bs.backup_start_date,--bs.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' [TimeTaken],--CASE bs.[type]--WHEN 'D' THEN 'Full Backup'--WHEN 'I' THEN 'Differential Backup'--WHEN 'L' THEN 'TLog Backup'--WHEN 'F' THEN 'File or filegroup'--WHEN 'G' THEN 'Differential file'--WHEN 'P' THEN 'Partial'--WHEN 'Q' THEN 'Differential Partial'--END AS BackupType,--CAST(bs.first_lsn AS VARCHAR(50)) AS first_lsn,--CAST(bs.last_lsn AS VARCHAR(50)) AS last_lsn,--bs.server_name,--bs.recovery_model

FROMmsdb.dbo.backupset bsINNER JOINmsdb.dbo.backupmediafamily bmfON bs.media_set_id =bmf.media_set_idORDER BY bs.backup_start_date desc;SET @bak_filename=@Bak_dir+@drop_dbname+'_'+CONVERT(CHAR(8),GETDATE(),112)+'_recovery.bak'

PRINT '要删除的数据库是:'+@drop_dbname+',为了防止误删备份文件在:'+@bak_filename

print ' '

print '------备份要删除的数据库'+@drop_dbname+'------'

print ' '

BACKUP DATABASE @drop_dbname TO DISK=@bak_filename WITHinitprint ' '

print '------删除数据库'+@drop_dbname+',以及删除'+@bak_dir+'目录下超过半年的bak备份文件------'

print ' '

EXEC master.dbo.xp_fileexist @bak_filename,@flagOUTPUTIF @flag!=0

begin

EXEC('DROP DATABASE'+@drop_dbname)END

ELSE

BEGIN

RAISERROR('删除数据库失败!因为备份文件不存在,为了安全,不允许删除该数据库!',16,1)END

SET @delete_Day_before=GETDATE()-120 --4个月

EXEC master.dbo.xp_delete_file 0,@Bak_dir,'bak',@delete_Day_before

【7】log_20200716.log (流程日志)

---------------------

2020/07/16 周四16:06:53.13测试引擎服务是否启动......ok

开始重命名数据库/创建数据库......ok

新建表和存储过程_修改存储过程......ok

授权_收缩日志......ok

维护......fail......请检查db_log_20200716.log文件

ok

删除最早的库_删除4个月前的备份文件......ok

启动sql server代理服务......请求的服务已经启动。

请键入 NET HELPMSG2182 以获得更多的帮助。

【8】db_log_20200716(输出日志)

已将数据库上下文更改为 'master'。----------------------------------------------

~~~~~~~~~~1_DB_renameAndCreate.sql~~~~~~~~~~~~

----------------------------------------------

------renameDB------

修改信息----老数据库名:test,修改后的数据库名:test_200716

数据库 名称 'test_200716'已设置。DBCC SHRINKDATABASE: 已跳过数据库 ID 13 的文件 ID 1,因为该文件没有足够的可用空间可以回收。DBCC 执行完毕。如果 DBCC输出了错误信息,请与系统管理员联系。------createDB------

创建数据库test

MDF文件路径为:D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_20200716.mdf

MDF文件路径为:D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\test_20200716_log.ldf

已将数据库上下文更改为'test'。----------------------------------------------

~~~~~~~~~~2_新建表和存储过程_修改存储过程.sql~~~~~~~~~~~~

----------------------------------------------

------创建表和存储过程------

------更新存储过程------

today:200716

------复制老数据库的数据到新数据库------

----------------------------------------------

~~~~~~~~~~3_授权_收缩日志.sql~~~~~~~~~~~~

----------------------------------------------

------授权------

已将数据库上下文更改为'master'。

已将数据库上下文更改为'test'。

已将数据库上下文更改为'master'。

已将数据库上下文更改为'test'。------收缩------

test_log

DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages------ ----------- ----------- ----------- ----------- --------------

10 2 1280 1280 1280 1280

DBCC 执行完毕。如果 DBCC输出了错误信息,请与系统管理员联系。

已将数据库上下文更改为'master'。----------------------------------------------

~~~~~~~~~~4_维护.sql~~~~~~~~~~~~

----------------------------------------------

------备份数据库------

消息 911,级别 16,状态 1,服务器 BF-DBP-01,第 15行

在 sysdatabases 中找不到数据库'BOX_ServerCenter'所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。

已将数据库上下文更改为'master'。----------------------------------------------

~~~~~~~~~~5_删除最早的库_删除4个月前的备份文件.sql~~~~~~~~~~~~

----------------------------------------------

要删除的数据库是:test_200716,为了防止误删备份文件在:D:\backup_bak\test_200716_20200716_recovery.bak------备份要删除的数据库 test_200716------

已为数据库'test_200716',文件 'test' (位于文件 1 上)处理了 232页。

已为数据库'test_200716',文件 'test_log' (位于文件 1 上)处理了 1页。BACKUP DATABASE 成功处理了 233 页,花费 0.609 秒(3.134 MB/秒)。------删除数据库 test_200716,以及删除D:\backup_bak\目录下超过半年的bak备份文件------

(1 行受影响)

【9】error_20200716.log (错误日志)

只有在有sqlcmd语法错误的时候才会有内容

http://www.lbrq.cn/news/730999.html

相关文章:

  • 河北软件开发网站建设/朋友圈广告
  • 成都网站建设公司电话/市场调查报告
  • 品牌vi设计理念/谷歌seo排名公司
  • 蓬莱做网站价格/seo中介平台
  • 荔湾做网站的公/今日要闻新闻
  • 做p2p理财网站/代写平台在哪找
  • 众筹平台网站搭建/12月10日新闻
  • 中象做网站怎么样/广告推广
  • 中国供应商网app下载/网络优化排名培训
  • 电商类网站建设需要多少钱/丁香人才网官方网站
  • 潍坊公司做网站/长沙seo霜天
  • 老河口网站设计/在百度怎么免费发布广告
  • 网站标题切换/百度指数购买
  • 微信怎么自己创建公众号/重庆seo海洋qq
  • 微信网站建设和维护/广州网站优化公司排名
  • 晋中建设集团有限公司网站/windows优化大师破解版
  • 漯河哪里做网站/2022近期重大新闻事件10条
  • 毕业设计做网站应该学什么/2023疫情第三波爆发时间
  • 怎么做qq代挂网站/白度指数
  • 怎样自己制作网站做情感顾问/网络营销的模式有哪些?
  • 青岛集团网站建设/seo优质友链购买
  • 河南建设工程一体化/百度代做seo排名
  • 网站不符合个人备案性质/百度推广关键词排名在哪看
  • 核酸检测公司上市/seo技术培训海南
  • 网站备案关闭/外贸怎么建立自己的网站
  • 建设政府网站申请/营销软文是什么
  • 黑龙江网站建设巨耀网络/行业关键词分类
  • 淘宝网的网络营销方式/网站seo教材
  • 陕西做网站电话/百度线上推广
  • 我想克隆个网站 怎么做/烟台seo
  • 为什么访问HTTPS站点时,会发生SSL证书错误
  • 软件设计师——计算机网络学习笔记
  • 制造企业用档案宝,档案清晰可查
  • 本地组策略编辑器图形化工具
  • 数据工程师——ETL
  • 【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es