手记

[SQL SERVER]-数据库备份-语法

数据库常常要做“完整/差异”备份,以下的语法是己撰写好的应用语法,只要填入JSON内的数据,就可以做到轻易的数据库备份应用。我采用的是“预存程序”+ JSON的方法来达到可以备份资料库,可以在JSON语法中去多做变化,来达到您的需求。




透过IT邦帮忙也给我记录




IF OBJECT_ID('dbo.数据库备份-快速执行数据库备份')IS NOT NULL


DROP PROCEDURE [dbo].[数据库备份-快速执行数据库备份]


GO




CREATE PROCEDURE [dbo].[数据库备份-快速执行数据库备份]



@_InBox_JSON_Source nvarchar(Max)--数据源



AS


--相关注解说明请写在这里,以免从Visual Studio转至SQL说明内容没有一起上去


-- ==========================================================================


--用途:数据库备份-完整备份(handbags-coupons)


--制作人:


--年月日:


--说明:这部份是给API应用




-- 1.专业人员没有写注释不叫专业


-- 2.请尽可能FROM后面加WITH(NOLOCK)不要锁定表格


-- 3.转JSON格式FOR JSON PATH,(输出Null)INCLUDE_NULL_VALUES,(排除[]格式)WITHOUT_ARRAY_WRAPPER


-- 4.字段不分大小写COLLATE Chinese_Taiwan_Stroke_CI_AS


-- ==========================================================================


-- ========宣告系统要用的信息-开始================


DECLARE @_InBox_DataBaseName nvarchar(100)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_Name')


DECLARE @_InBox_BackName nvarchar(100)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_BackupFileName')


DECLARE @_InBox_BackMemo nvarchar(100)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_BackupMemo')


DECLARE @_InBox_BackupMethod nvarchar(100)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_BackupMethod')




DECLARE @_InBox_BackDate nvarchar(100)=REPLACE(CONVERT(nvarchar(30),GETDATE(),112),':','');


DECLARE @_InBox_BackTime nvarchar(100)=REPLACE(CONVERT(nvarchar(30),GETDATE(),8),':','');


DECLARE @_InBox_BackServiceName nvarchar(100)=@_InBox_BackName+@_InBox_BackTime


DECLARE @_InBox_DISK_DB_Path nvarchar(500)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_Directory')+@_InBox_BackName+'_'+ @_InBox_BackupMethod +'_'+'_DB_' +@_InBox_BackDate +'_'+@_InBox_BackTime+'.Bak'


DECLARE @_InBox_DISK_Log_Path nvarchar(500)=JSON_VALUE(@_InBox_JSON_Source,'$[0].DB_Directory')+@_InBox_BackName+'_'+ @_InBox_BackupMethod +'_'+'_Log_' +@_InBox_BackDate +'_'+@_InBox_BackTime+'.Bak'






--回传执行上的可能错误


DECLARE @_SystemInfoLog Table



DBName nvarchar(1000),--数据库名称


DBPathInfo nvarchar(1000),--储存备份路径


DBErrorMessage nvarchar(Max),--错误说明


Sysinfo_isError nvarchar(2),--记录错误的信息


SysInfo_MainCode nvarchar(200),


SysInfo_MinorCode nvarchar(200)





-- ========宣告系统要用的信息-结束================






if(LEN(@_InBox_DataBaseName)!=0 AND LEN(@_InBox_BackupMethod)!=0)


Begin




if(@_InBox_BackupMethod='完整')


Begin




--执行Try


BEGIN TRY


--下达完整备份


BACKUP DATABASE @_InBox_DataBaseName


--========备份磁盘实际上的位置==========


--储存档案的位置


--==========================


TO DISK = @_InBox_DISK_DB_Path


--========备份方式==========


--完整备份>> WITH NOFORMAT


--差异备份>> WITH DIFFERENTIAL


WITH NOFORMAT,


--========压缩方式==========


--档案压缩>> COMPRESSION


--档案压缩>> NO_COMPRESSION


--==========================


COMPRESSION,


--========备份作业复写========


--备份复写>> INIT


--附加媒体>> NOINIT


--==========================


NOINIT,


--========预设数据库备份或还原的I/O=========


--预设为>> 10


--==============================


BUFFERCOUNT = 1024,


--========此备份数据库的名称与说明255字以内=========


--预设为>> 10


--==============================


NAME = @_InBox_BackMemo,


--========检查媒体备份到期日====


--必须要检查>> NOSKIP先检查媒体中所有备份组的到期日


--不须要检查>> SKIP则略过检查动作


--==============================


SKIP,


--=====备份硬件-磁带备份设定====


--释放和倒转磁带>> REWIND将释放和倒转磁带


--释放和倒转磁带>> NOREWIND不释放和倒转磁带(ernakulamchess)


--==============================


NOREWIND,


--=====备份硬件-自动倒转和卸载磁带====


--释放和倒转磁带>> UNLOAD自动倒转和卸载磁带


--释放和倒转磁带>> NOUNLOAD磁带机上保持加载

0人推荐
随时随地看视频
慕课网APP