数据库远程全备份的一种解决方案
数据库远程全备份的一种解决方案
--exec BackUPDatabase_MaJiatao 'pubs','\\XZ154\ABC$','16:50:00.000',1,'XZ154\MaJiatao','MaJiatao'/***************************************************描述:数据库全备份和增量备份编写:马加涛修改:马加涛:2014-02-12:1.加入了备份路径可以选择本机和远程路径2.修正了保存历史备份记录的方式,不在需要本机硬盘上的文本文件来做保存介质***************************************************/if object_id('BackUPDatabase_MaJiatao') is not nulldrop PRoc BackUPDatabase_MaJiatao
GO
alter proc BackUPDatabase_MaJiatao@database_name sysname,--要备份的数据库名称@physical_backup_device_name sysname,--备份文件存放目录@all_backup_datetime char(17)='20:00:00.000',--全备份的时间@IntDistance int=1,--全备份的时间范围(小时)@UserName varchar(100),--远程服务器登录名称@PassWord varchar(100)=''--远程服务器登录密码with ENCRYPTION as
/*********************************declare @database_name sysname,--要备份的数据库名称@physical_backup_device_name sysname,--备份文件存放目录@all_backup_datetime char(17)select @database_name='test',@physical_backup_device_name='E:\备份文件\查询服务器',@all_backup_datetime='16:00:00.000'
***************************************/
--建立备份历史记录if not exists (select * from dbo.sysobjects where id = object_id(N'backup_recorder') and OBJECTPROPERTY(id, N'IsUserTable') = 1) exec('CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)')elsebeginif not exists(select * from syscolumns where name='file_is_exists' and ID=object_id(N'backup_recorder'))begindrop table backup_recorderexec('CREATE TABLE backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)')endend
declare @backup_set_full sysname,@backup_set sysname,--备份文件名称@backup_name sysname
declare @Return_Int intdeclare @CommandText nvarchar(4000)declare @DelFilePathName nvarchar(4000)
declare @physical_backup_device_name_now nvarchar(4000)
declare @physical_backup_device_namebackup nvarchar(4000)
if isnull(@database_name,'')='' or rtrim(@database_name)=''--数据库名称为空set @database_name=db_name()--备份当前数据库
if isnull(@physical_backup_device_name,'')='' or rtrim(@physical_backup_device_name)=''--备份目录为空,使用系统默认目录beginSELECT @physical_backup_device_name=ltrim(rtrim(reverse(filename))) FROM master.dbo.sysdatabases where name=@database_nameset @physical_backup_device_name=reverse(substring(@physical_backup_device_name,charindex('\',@physical_backup_device_name)+5,260))+'backup'end
--判断路径是网络路径还是本机路径if left(@physical_backup_device_name,2)='\\' and ltrim(rtrim(@UserName))<>'' and ltrim(rtrim(@Password))<>''beginselect @CommandText='net use '+@physical_backup_device_name+' "'+@Password+'" /user:'+@UserNameexec master..xp_cmdshell @CommandText,no_outputend
--确定目录是否存在select @CommandText='dir '+@physical_backup_device_name+'\全备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int<>0 --目录不存在,建立beginselect @CommandText='Mkdir '+@physical_backup_device_name+'\全备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend
select @CommandText='dir '+@physical_backup_device_name+'\差异备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputif @Return_Int<>0 --目录不存在,建立beginselect @CommandText='Mkdir '+@physical_backup_device_name+'\差异备份'exec @Return_Int=master..xp_cmdshell @CommandText, no_outputend
select @physical_backup_device_name_now=@database_name+'_'+ltrim(rtrim(REPLACE(REPLACE(REPLACE(REPLACE(convert(char(23),getdate(),21),'-',''),':',''),'.',''),' ','')))+'.bak'
if object_id('tempdb..#backup_recorder') is not nulldrop table #backup_recorderCREATE TABLE #backup_recorder (backup_datetime datetime not null,backup_name varchar (500) PRIMARY KEY,backup_path varchar (500) NOT NULL ,is_all_backup char(1) not null default 0,file_is_exists char(1) not null default 0)
--检查是否有全备份存在select @CommandText='dir '+@physical_backup_device_name+'\全备份\*.bak'exec @Return_Int=master..xp_cmdshell @CommandText, no_output
if @Return_Int<>0 --没有全备份文件存在,进行全备份beginselect @backup_set_full='全备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\全备份\'+@physical_backup_device_name_now
--全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0--备份成功,删除当天全备份之前的所有历史备份文件begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'1','1')insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='1' and file_is_exists='1'endendelsebegin--有全备份,验证全备份是否为上一天得指定时间之后--select @all_backup_datetime=REPLACE(REPLACE(@all_backup_datetime,':',''),'.','')if right(left(right(@physical_backup_device_name_now,21),17),9) between REPLACE(REPLACE(@all_backup_datetime,':',''),'.','') and REPLACE(REPLACE(substring(convert(char(23),dateadd(hh,@IntDistance,@all_backup_datetime),21),12,12),':',''),'.','')--进行全备份beginselect @backup_set_full='全备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\全备份\'+@physical_backup_device_name_now--全备份,重写媒体头BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH FORMAT ,NAME = @backup_set_fullif @@error=0--备份成功begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'1','1')--查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='1' and file_is_exists='1'endendelse--当前备份时间小于指定的全备份时间,进行差异备份begin
select @backup_set_full='增量备份 '+@database_nameselect @physical_backup_device_namebackup=@physical_backup_device_name+'\差异备份\'+@physical_backup_device_name_now--差异备份,追加媒体BACKUP DATABASE @database_name to DISK=@physical_backup_device_namebackup WITH NOINIT , DIFFERENTIAL,NAME = @backup_setif @@error=0--备份成功begin--写备份日志insert into backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)values(getdate(),@physical_backup_device_name_now,@physical_backup_device_namebackup,'0','1')--查找历史备份文件insert into #backup_recorder(backup_datetime,backup_name,backup_path,is_all_backup,file_is_exists)select backup_datetime,backup_name,backup_path,is_all_backup,file_is_existsfrom backup_recorderwhere backup_name<>@physical_backup_device_name_now and is_all_backup='0' and file_is_exists='1'endendend
DECLARE DelFilePathName CURSOR FORWARD_ONLY FOR select backup_path From #backup_recorder OPEN DelFilePathNameFETCH NEXT FROM DelFilePathName into @DelFilePathNameWHILE @@FETCH_STATUS = 0beginif exists(select *from backup_recorder where backup_path=@DelFilePathName and backup_name<>@physical_backup_device_name_now)beginselect @CommandText='del '+@DelFilePathNameexecute @Return_Int=master..xp_cmdshell @CommandText--,no_outputif @Return_Int=0 beginupdate backup_recorder set file_is_exists=0 where backup_path=@DelFilePathNameendendFETCH NEXT FROM DelFilePathName into @DelFilePathNameendCLOSE DelFilePathNameDEALLOCATE DelFilePathName
if object_id('tempdb..#backup_recorder') is not nulldrop table #backup_recorder
if left(@physical_backup_device_name,2)='\\' and ltrim(rtrim(@UserName))<>'' and ltrim(rtrim(@Password))<>''beginselect @CommandText='net share '+@physical_backup_device_name+' /delete'exec master..xp_cmdshell @CommandText,no_outputend
以上就是数据库远程全备份的一种解决方案的内容,更多相关文章请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et PDO : Comment effectuer des opérations de sauvegarde et de restauration de bases de données Lors du développement d'applications Web, la sauvegarde et la restauration de bases de données sont des tâches très importantes. En tant que langage de script côté serveur populaire, PHP fournit une multitude de bibliothèques et d'extensions, parmi lesquelles PDO (PHP Data Objects) est une puissante couche d'abstraction d'accès aux bases de données. Cet article explique comment utiliser PHP et PDO pour effectuer des opérations de sauvegarde et de restauration de bases de données. Étape 1 : Connexion à la base de données Avant l'opération proprement dite, nous devons établir une connexion à la base de données. Utiliser la paire PDO

À l’ère actuelle d’Internet, l’importance des données est évidente. En tant qu'un des composants essentiels des applications Internet, le travail de sauvegarde et de restauration des bases de données est particulièrement important. Cependant, à mesure que la quantité de données continue d'augmenter et que les exigences des entreprises deviennent de plus en plus complexes, les solutions traditionnelles de sauvegarde et de restauration de bases de données ne peuvent plus répondre aux exigences de haute disponibilité et de hautes performances des applications modernes. Par conséquent, l’optimisation des performances de sauvegarde et de récupération de la base de données MySQL est devenue un problème urgent qui doit être résolu. Dans la pratique, nous avons adopté une série d'expériences de projets pour améliorer efficacement les données MySQL

Dans le processus de développement de systèmes d’entreprise, la base de données constitue un élément très important. Par conséquent, la sauvegarde et la restauration de la base de données sont une opération très nécessaire. Cet article combinera des exemples du framework ThinkPHP6 pour présenter comment utiliser ThinkPHP6 pour implémenter la sauvegarde et la récupération de bases de données. 1. Sauvegarde de la base de données 1.1 Préparation de l'environnement Avant d'effectuer la sauvegarde de la base de données, vous devez confirmer les points suivants : 1. Vous devez définir l'adresse du répertoire bin de la base de données mysql et ajouter son chemin à la variable système Path 2. Mysqld doit être ; installé

La sauvegarde de votre base de données dans Golang est cruciale pour protéger vos données. Vous pouvez utiliser le package database/sql dans la bibliothèque standard ou un package tiers tel que github.com/go-sql-driver/mysql. Les étapes spécifiques incluent : Connectez-vous à la base de données. Créez un fichier pour stocker les données de sauvegarde. Utilisez la fonction Dump ou Exporter pour sauvegarder la base de données dans un fichier.

Titre : Utiliser ThinkORM pour réaliser la sauvegarde et la restauration de bases de données Introduction : Dans le processus de développement, la sauvegarde et la restauration de bases de données sont une tâche très importante. Cet article explique comment utiliser le framework ThinkORM pour implémenter la sauvegarde et la restauration de bases de données et fournit des exemples de code correspondants. 1. Introduction au contexte Au cours du processus de développement, nous utilisons généralement des bases de données pour stocker et gérer les données. Le principe de la sauvegarde et de la restauration de la base de données est d'effectuer des sauvegardes régulières de la base de données afin que les données puissent être rapidement restaurées en cas de problèmes de base de données ou de perte de données. Avec l'aide de

Avec le développement rapide d'Internet, la sauvegarde et la restauration de bases de données MySQL à grande échelle sont devenues l'une des compétences essentielles des grandes entreprises et des sites Web. Avec l'application généralisée de Memcached, la manière de sauvegarder et de restaurer Memcached est également devenue un problème important. En tant que l'un des principaux langages de développement Web, PHP présente des avantages et des compétences uniques dans la gestion de la sauvegarde et de la récupération de MySQL et Memcached. Cet article présentera en détail la méthode d'implémentation du traitement PHP de la sauvegarde et de la récupération MySQL et Memcached.

Dans le monde en ligne d'aujourd'hui, les sites Web sont devenus un support important permettant à chaque entreprise, organisation ou individu d'afficher ses marques, services, produits, etc. Afin de garantir le fonctionnement normal et la sécurité du site Web, nous devons continuellement sauvegarder et optimiser la base de données et la récupération. En tant que logiciel de gestion de serveur avec une utilisation simple, des fonctions riches et une belle interface, Pagoda Panel est également très excellent en matière de gestion de bases de données et possède des fonctions importantes telles que la sauvegarde, l'optimisation et la récupération. Cet article se concentrera sur les fonctions de sauvegarde, d'optimisation et de récupération de base de données de Pagoda Panel et les préoccupations associées.

Avec le développement d’Internet, la sauvegarde et la restauration des bases de données sont devenues une partie très importante du processus d’exploitation et de développement d’un site Web. La base de données est le cœur du site Web et contient de nombreuses informations importantes. Si des données sont perdues ou endommagées, cela aura un impact important sur le fonctionnement du site Web et sur l'expérience utilisateur. Par conséquent, pour les opérateurs et les développeurs de sites Web, l’importance de la sauvegarde et de la restauration des bases de données va de soi. Cet article se concentrera sur les opérations de sauvegarde et de récupération de bases de données dans la programmation PHP pour référence par les développeurs. 1. Numéro
