sql server 备份脚本
SQLServer自动备份脚本bat
SQLServer自动备份脚本bat这几天了解SQL server,针对sql server 定时自动备份数据库做了一些了解,现将收集的资料做份整理步骤一、写SQL脚本,保存到sqlserverbackup.sqlsql脚本内容(ecology为数据库名)declare @device varchar(30);declare @filename varchar(50);declare @datetime varchar(50);declare @weekname varchar(50);declare @weeknametmp varchar(4);declare @weekday int;set @weekname=datename(weekday,getdate());set @datetime = convert(varchar(20),getdate(),112);set @device= 'NWdevice' + @datetime;set @filename='c:\NWdevice'+@datetime+'.bak';set @weeknametmp=substring(@weekname,3,1);if (@weeknametmp='一')set @weekday=1;else if (@weeknametmp='二')set @weekday=2;else if (@weeknametmp='三')set @weekday=3;else if (@weeknametmp='四')set @weekday=4;else if (@weeknametmp='五')set @weekday=5;else if (@weeknametmp='六')set @weekday=6;else if (@weeknametmp='日')set @weekday=0;set @datetime = convert(varchar(20),getdate()-@weekday,112);set @device= 'NWdevice' + @datetime;set @filename='c:\NWdevice'+@datetime+'.bak'if (@weekname='星期日')beginexecute sp_addumpdevice 'disk',@device,@filename;backup database ecology to @deviceendelsebeginbackup database ecology to @device with differentialend步骤二、写bat脚本,t.bat内容:@net start "mssqlserver"@sqlcmd -Usa -Psa -i d:\sqlscript\sqlserverbackup.sql -o d:\sqlscript\sqlserverbackup.out@echo ……正在备份中……@pause注:@sqlcmd是sqlserver 2005@isql是sqlserver2000以上在sqlserver 2008下测试通过步骤三、设置windows操作系统的定时任务打开(附件)里的(任务计划),选择(添加任务计划),点击(下一步),点击(浏览),找到想要执行的程序或文件,点击(打开),输入任务名字,可以任意填写,选择执行任务的时间,点击(下一步),选择任务的起始时间,点击(下一步),输入用户名和密码,没有就不填,点击(下一步),点击(完成)。
sqlserver备份还原数据库sql语句
sqlserver备份还原数据库sql语句SQL Server备份还原数据库是数据库管理的重要操作之一,可以保障数据库的安全性和可靠性。
本篇文章将详细介绍备份还原数据库的操作流程,包括备份数据库、还原数据库的SQL语句。
以下将一步一步回答。
1. 备份数据库的SQL语句备份数据库是将数据库的数据和日志文件备份到指定的位置以进行数据库恢复。
SQL Server提供了BACKUP DATABASE语句用于备份数据库。
以下是备份数据库的SQL语句示例:BACKUP DATABASE [数据库名称]TO DISK = '备份路径'WITH INIT, FORMAT, NAME = '备份名称'其中,[数据库名称]是要备份的数据库的名称,'备份路径'是备份文件的存储路径,'备份名称'是备份文件的名称。
语句中的WITH INIT表示每次备份都初始化备份介质,FORMAT表示将备份文件格式化,使其可与其他SQL Server版本兼容。
2. 还原数据库的SQL语句还原数据库是将备份的数据库文件恢复到数据库中。
SQL Server提供了RESTORE DATABASE语句用于还原数据库。
以下是还原数据库的SQL语句示例:RESTORE DATABASE [数据库名称]FROM DISK = '备份文件路径'WITH REPLACE, RECOVERY其中,[数据库名称]是要还原的数据库的名称,'备份文件路径'是备份文件的存储路径。
语句中的WITH REPLACE表示在还原数据库之前会替换掉已经存在的同名数据库,RECOVERY表示数据库将处于可使用状态。
3. 备份还原数据库的操作流程备份还原数据库的操作流程包括备份数据库和还原数据库两个步骤。
3.1 备份数据库的操作流程(1)连接到SQL Server数据库。
(2)选择要备份的数据库。
sql server 2016 定时自动备份和自动删除方法
sql server 2016 定时自动备份和自动删除方法在 SQL Server 2016 中,您可以使用 SQL Server 代理来配置定时自动备份和自动删除任务。
以下是配置的步骤:1. 打开 SQL Server Management Studio (SSMS) 并连接到您的 SQL Server 2016 实例。
2. 在对象资源管理器中,展开 "SQL Server 代理" 节点。
3. 右键单击 "作业" 文件夹,选择 "新建作业"。
4. 在 "新建作业" 对话框中,为作业指定一个名称和描述。
5. 切换到 "步骤" 选项卡,单击 "新建" 创建一个新的步骤。
6. 在 "新建作业步骤" 对话框中,为步骤指定一个名称,选择数据库上下文,然后输入备份脚本。
7. 切换到 "计划" 选项卡,单击 "新建" 创建一个新的计划。
8. 在 "新建作业计划" 对话框中,为计划指定一个名称,并选择适当的调度选项,如每天、每周或每月执行。
如果您想要在每天的特定时间执行备份任务,可以选择 "每天" 选项,并指定执行的时间。
9. 在 "作业活动" 部分,选择刚才创建的步骤。
10. 单击 "确定" 完成作业的配置。
11. 如果您还希望自动删除旧的备份文件,您可以创建另一个作业来执行此任务。
12. 配置自动删除作业的计划,以便在适当的时间执行。
请确保在配置自动备份和自动删除作业时注意以下几点:- 确保指定的备份路径是存在且可访问的。
- 调度计划应该是合理的,确保不会在数据库高峰期间执行备份操作。
- 考虑对备份文件进行适当的管理,以免占用过多的磁盘空间。
这些步骤将帮助您配置 SQL Server 2016 中的定时自动备份和自动删除任务。
sql server 备份一张表的方法-概述说明以及解释
sql server 备份一张表的方法-概述说明以及解释1.引言1.1 概述概述部分的内容可以简要介绍SQL Server备份的概念以及备份单张表的方法的重要性。
下面是一个示例:概述在数据库管理中,备份是一项必要的操作,旨在保护数据的完整性和可靠性。
SQL Server是一种常用的关系型数据库管理系统,它提供了多种备份选项以满足不同的需求。
无论是出于数据安全的考虑,还是为了避免意外删除或修改数据导致的严重后果,备份单张表的方法在SQL Server中具有重要的意义。
通过备份单张表,我们可以在数据丢失或错误操作时恢复表的特定数据,而无需恢复整个数据库。
本文将介绍SQL Server备份单张表的方法,帮助读者了解如何保护和恢复他们最关注的表的数据。
我们将探讨不同的备份选项和技术,以及它们的优缺点。
同时,我们还会展望未来备份技术的发展,以便读者能够更好地应对日益复杂的数据管理挑战。
通过本文的阅读,读者将能够了解到如何使用SQL Server的备份功能来保护他们的数据,并能够应对突发事件,迅速恢复关键数据。
备份单张表是一项关键的技术,它为数据库管理提供了更大的灵活性和安全性,使得数据恢复变得更加可靠和高效。
在接下来的章节中,我们将详细介绍SQL Server备份的概述、备份单张表的重要性以及备份单张表的具体方法,以帮助读者更好地理解和运用这一关键技术。
文章结构部分的内容应该包括以下信息:文章结构部分主要目的是向读者介绍本文的整体结构和内容安排。
通过详细介绍文章的各个章节和子章节,读者可以快速了解文章的组织方式和内容分布,从而更好地理解和阅读全文。
本文按照以下结构进行组织和呈现:1. 引言1.1 概述在本部分,将简要介绍SQL Server备份的概念和作用。
通过了解备份的基本概念,读者可以更好地理解后续章节中讨论的备份方法。
1.2 文章结构当前章节,即文章结构部分,将介绍全文的组织方式和内容安排。
通过阅读本部分,读者可以了解全文的大致框架和各个章节的概要内容。
sql_server_2012数据库_自动备份与还原代码
sql server 2012数据库自动备份与还原代码1. 引言1.1 概述在当前的信息化时代,数据库管理对于企业和组织来说至关重要。
而数据库备份与还原是保障数据完整性与安全性的重要手段之一。
SQL Server 2012作为一款广泛应用于企业级数据库系统的软件,具备了强大的备份与还原功能。
自动化备份与还原是提高数据库管理员工作效率和数据安全性的关键步骤。
通过编写相应代码,可以实现定时、自动进行数据库备份与还原操作,减少人工干预带来的错误风险,并能够快速恢复数据以防止意外故障或损坏导致的数据丢失。
本文将详细介绍SQL Server 2012中如何通过编写代码实现自动备份与还原功能,并提供相关示例代码和解析,帮助读者理解备份与还原操作的关键步骤及其实现方式。
1.2 文章结构本文共分为五个主要部分:引言、SQL Server 2012数据库自动备份与还原代码、代码示例与解析、实验结果与效果分析以及结论与展望。
引言部分主要介绍了本文的背景和目标,概述了自动备份与还原在数据库管理中的重要性。
SQL Server 2012数据库自动备份与还原代码部分将详细阐述如何通过编写备份和还原指令来实现自动化操作,并介绍了相关的实施步骤。
代码示例与解析部分将提供一些具体的代码示例,并对其进行逐行解析,帮助读者理解每个步骤的目的和实现方式。
实验结果与效果分析部分将描述搭建实验环境和准备数据的过程,并展示执行自动备份与还原代码的过程和结果。
同时,对其效果进行评估和分析。
最后,结论与展望部分对本文进行总结,并探讨当前方法存在的不足之处以及未来改进方向。
1.3 目的本文旨在介绍SQL Server 2012数据库中自动备份与还原功能的使用方法,并通过提供代码示例和解析帮助读者理解这些操作的关键步骤和实现方式。
通过本文,读者可以了解如何编写定时任务,设置自动备份与还原规则,以及如何评估备份与还原功能对数据安全性和管理效率的影响。
sql server的备份语句
sql server的备份语句英文回答:Basic syntax for backing up a database. sql.BACKUP DATABASE database_name.TO disk_file_path.WITH (。
[option] = value,。
...)。
Options for the WITH clause.The following options can be used in the `WITH` clause:NAME: Specifies the name of the backup file.DESCRIPTION: Specifies a description for the backup file.EXPIRY_DATE: Specifies the date when the backup file will expire.COPY_ONLY: Creates a copy-only backup, which cannot be restored.NORECOVERY: Creates a non-recoverable backup, which cannot be used to restore the database.STANDBY: Creates a standby backup, which can be used to create a read-only replica of the database.CHECKSUM: Computes a checksum for the backup file.COMPRESSION: Compresses the backup file.ENCRYPTION: Encrypts the backup file.MAXTRANSFERSIZE: Specifies the maximum size (in KB) of each transfer unit.BLOCKSIZE: Specifies the block size (in KB) used to write the backup file.REWIND: Repositions the backup file to the beginning before writing data.NOFORMAT: Does not format the backup file before writing data.FORMAT: Formats the backup file before writing data.Example.The following statement backs up the`AdventureWorks2019` database to the file`C:\Backups\AdventureWorks2019.bak`:sql.BACKUP DATABASE AdventureWorks2019。
sqlserver 通过作业自动备份数据库
步骤:1、新建作业,填写作业名称,所有者(所有者必须有访问数据库的权限),其余默认,切换至步骤选项卡;2、新建步骤,填写步骤名称以及执行脚本,填写完脚本最好能“分析”下脚本是否正确,确定,切换到计划选项卡。
备份代码(文件名:Test_时间.bak,路径:D:\\BACKUP\\):3、新建计划,计划名称:Plan。
设置频率和执行时间(由于是测试,我设置的是每5分钟执行一次,并且有到期日),确定。
4、测试你的Plan,并查看结果(右键-作业开始步骤,可查看结果)。
5、查看历史记录增量备份:backup database [YaDongWuLiu] to disk = 'D:/bak/YaDongWuLiu.bak';差异备份:DECLARE @strPath NVARCHAR(200)set @strPath = 'D:/bak/' + 'YaDongWuLiu'+ '.bak'BACKUP DATABASE [YaDongWuLiu] TO DISK = @strPath WITH DIFFERENTIAL ,NOUNLOAD , NOSKIP , STATS=10,NOFORMAT完整备份:DECLARE @strPath NVARCHAR(200)set @strPath = convert(NVARCHAR(19),getdate(),120)set @strPath = REPLACE(@strPath, ':' , '.')set @strPath = 'D:/bak/' + 'databasename'+@strPath +'.bak'BACKUP DATABASE [YaDongWuLiu] TO DISK = @strPath WITH NOINIT , NOUNLOAD ,NOSKIP , STATS = 10,NOFORMAT。
sql server数据库备份语句
在 SQL Server 中,你可以使用 `BACKUP DATABASE` 语句来备份数据库。
以下是一个基本的备份示例:
```sql
BACKUP DATABASE [YourDatabaseName]
TO DISK = 'D:\Backups\YourDatabaseName.bak'
WITH FORMAT, NAME = 'Full Database Backup';
```
解释:
* `[YourDatabaseName]`:替换为你要备份的数据库名称。
* `TO DISK = 'D:\Backups\YourDatabaseName.bak'`:这指定了备份文件的路径和名称。
你可以根据需要更改路径和文件名。
* `WITH FORMAT, NAME = 'Full Database Backup'`:`FORMAT` 选项会覆盖任何现有的备份集,而`NAME = 'Full Database Backup'` 选项为备份集指定一个名称。
请注意,为了执行备份,你需要具有足够的权限。
此外,确保备份路径有足够的磁盘空间来存储备份文件。
如果你想备份数据库的特定部分(例如,只备份数据或只备份日志),
你可能需要使用其他工具或方法。
Bat脚本备份sqlserver表结构、存储过程、函数、指定表数据
Bat脚本备份sqlserver表结构、存储过程、函数、指定表数据Bat脚本备份sqlserver 表结构、存储过程、指定表数据:@echo offcd /d %~dp0::备份表结构、存储过程和部分配置表的数据set LogFile=report.logset servername="192.168.43.9"set DBname="TEST"set User="sa"set Password="123456*"echo Deployed Time: %date% %time% >> %LogFile%echo Server Name: %servername% >> %LogFile%echo DB Name: %DBname% >> %LogFile%set zip7=C:\Program Files\7-Zip\7z.exe::需要压缩的⽂件set Files=back\%date:~0,4%%date:~5,2%%date:~8,2%_*.sql::压缩后的⽂件名set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2%echo -------------------------------备份表结构开始------------------------------------------------>> %LogFile%Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i table.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_table.sqlecho -------------------------------备份表结构结束------------------------------------------------>> %LogFile%echo -------------------------------备份表存储开始------------------------------------------------>> %LogFile%Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i usp.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_usp.sqlecho -------------------------------备份表存储结束------------------------------------------------>> %LogFile%echo -------------------------------备份HD_ZBMX_HZ数据开始------------------------------------------------>> %LogFile%Sqlcmd -S %servername% -d %DBname% -U %User% -P %Password% -i HD_ZBMX_HZ.sql -y 0 -u -X -o back\%date:~0,4%%date:~5,2%%date:~8,2%_HD_ZBMX_HZ_data.sql echo -------------------------------备份HD_ZBMX_HZ数据结束------------------------------------------------>> %LogFile%::echo "%Files%"::压缩"%zip7%" a -tzip "back\%curdate%.zip" "%Files%"::删除DEL /Q "%Files%"::删除超过30天的备份--start--FORFILES /P back\ /M *.zip -d -30 /c "cmd /c del @path"::pauseexit配置⽂件table.sqlset nocount ondeclare@tablenames varchar(max),@tablename varchar(max)beginselect @tablenames =''/*定义游标*/declare table_sql cursor forSELECT name FROM sysobjects where xtype='U' order by nameopen table_sqlfetch next from table_sql into @tablenamewhile @@FETCH_STATUS=0beginset @tablenames = @tablenames+@tablename+','--print '---1-->'+@tablenames-- EXEC sp_gettext 'Address_Base'fetch next from table_sql into @tablenameendclose table_sqldeallocate table_sqlEXEC sp_gettext @tablenamesend配置⽂件:usp.sqlset nocount ondeclare@tablenames varchar(max),@tablename varchar(max)beginselect @tablenames =''/*定义游标*/declare table_sql cursor forSELECT name FROM sysobjects where xtype='P' order by nameopen table_sqlfetch next from table_sql into @tablenamewhile @@FETCH_STATUS=0beginset @tablenames = @tablenames+@tablename+','--print '---1-->'+@tablenames-- EXEC sp_gettext 'Address_Base'fetch next from table_sql into @tablenameendclose table_sqldeallocate table_sqlEXEC sp_gettext @tablenamesend配置⽂件:HD_ZBMX_HZ.sqlset nocount ondeclare@tablenames varchar(max),@tablename varchar(max)beginexec UspOutputData 'HD_ZBMX_HZ'end对应库⾥需要部署的存储和函数:sp_gettextif exists (select1from sysobjects where id =object_id('sp_gettext') and type ='P')drop proc sp_gettextgocreate procedure[sp_gettext]@name VARCHAR(max) =NULL, @identity BIT=1, @index TINYINT=2-- 0不创建索引 1不创建表 2创建索引, @new BIT=0as/*[版本号]1.0.0.0.0[创建时间]2019.09.10[作者][版权][描述][功能说明]获取建表语句,存储语句[参数说明][返回值][结果集、排序][调⽤的usp]sp_gettext 'DIM_KSXX,DIM_YYXX'sp_gettext 'usp_dim_ksxx'[调⽤实例][修改记录]*/SET ARITHABORT ON;SET CONCAT_NULL_YIELDS_NULL ON;SET QUOTED_IDENTIFIER ON;SET ANSI_NULLS ON;SET ANSI_PADDING ON;SET ANSI_WARNINGS ON;SET NUMERIC_ROUNDABORT OFF;DECLARE@crlf CHAR(2);SET@crlf=CHAR(13) +CHAR(10);DECLARE@objid INT;DECLARE@results TABLE (definition NVARCHAR(max))DECLARE@objects TABLE (id VARCHAR(100), type CHAR(2));WITH db1(dbname)AS (SELECT VALUE AS dbnameFROM Split(@name,',')),db2 AS (SELECT--CASE WHEN CHARINDEX('.', dbname) = 0 AND CHARINDEX('[', dbname) = 0 THEN '[cn9c080].' + QUOTENAME(dbname)-- ELSE dbname-- END AS dbnameCASE WHEN o.[object_id]IS NULL AND tt.[name]IS NULL THEN'%'ELSE LTRIM(ISNULL(o.[object_id],tt.[type_table_object_id])) END AS object_id,CASE[db1].[dbname]WHEN'tables'THEN'U'WHEN'procs'THEN'P'elseo.[type]END typeFROM db1left JOIN sys.[objects] o ON (PARSENAME(db1.[dbname],1) = o.[name]OR OBJECT_ID('[cn9c080].'+QUOTENAME(dbname)) = o.[object_id])LEFT JOIN sys.table_types tt ON db1.dbname=)INSERT INTO@objectsSELECT*FROM db2 ;WITH ColumnDefsAS (SELECT TableObj = c.[object_id], ColSeq = c.column_id,ColumnDef =QUOTENAME() +''+CASE WHEN c.is_computed =1THEN'as '+COALESCE(k.[definition], '') +CASEWHEN k.is_persisted =1THEN' PERSISTED'+CASEWHEN k.is_nullable =0THEN' NOT NULL'ELSE''ENDELSE''ENDELSE DataType +CASE WHEN DataType IN ('decimal','numeric')THEN'('+CAST(c.precision AS VARCHAR(10)) +CASEWHEN c.scale <>0THEN','+CAST(c.scale AS VARCHAR(10))ELSE''END+')'WHEN DataType IN ('char','varchar','nchar','nvarchar','binary','varbinary')THEN'('+CASEWHEN c.max_length =-1THEN'max'ELSE CASEWHEN DataType IN ('nchar','nvarchar')THEN CAST(c.max_length /2AS VARCHAR(10))ELSE CAST(c.max_length AS VARCHAR(10))ENDEND+')'WHEN DataType ='float'AND c.precision<>53THEN'('+CAST(c.precision AS VARCHAR(10)) +')'WHEN DataType IN ('time','datetime2','datetimeoffset') AND c.scale <>7THEN'('+CAST(c.scale AS VARCHAR(10)) +')'ELSE''ENDEND+CASE WHEN c.is_identity =1AND@identity=1THEN' IDENTITY('+CAST(IDENT_SEED(QUOTENAME(OBJECT_SCHEMA_NAME(c.[object_id])) +'.'+QUOTENAME(OBJECT_NAME(c.[object_id]))) AS VARCHAR(30)) +ELSE''END+CASE WHEN c.is_rowguidcol =1THEN' ROWGUIDCOL'ELSE''END+CASE WHEN c.xml_collection_id >0THEN' (CONTENT '+QUOTENAME(SCHEMA_NAME(x.schema_id)) +'.'+QUOTENAME() +')'ELSE''END+CASE WHEN c.is_computed =0AND UserDefinedFlag =0THEN CASEWHEN c.collation_name <>CAST(DATABASEPROPERTYEX(DB_NAME(),'collation') AS NVARCHAR(128))THEN' COLLATE '+ c.collation_nameELSE''ENDELSE''END+CASEWHEN c.is_computed =0THEN CASEWHEN c.is_nullable =0THEN' NOT'ELSE''END+' NULL'ELSE''END+CASEWHEN c.default_object_id >0AND ISNULL(@new,0) =0THEN' CONSTRAINT '+QUOTENAME() +' DEFAULT '+COALESCE(d.[definition],'')WHEN c.default_object_id >0AND ISNULL(@new,0) =1THEN' DEFAULT '+COALESCE(d.[definition],'')ELSE''ENDFROM sys.columns cCROSS APPLY (SELECT DataType = TYPE_NAME(er_type_id), UserDefinedFlag =CASE WHEN c.system_type_id = er_type_id THEN0ELSE1END) F1LEFT JOIN sys.default_constraints d ON c.default_object_id = d.[object_id]LEFT JOIN puted_columns k ON c.[object_id]= k.[object_id]AND c.column_id = k.column_idLEFT JOIN sys.xml_schema_collections x ON c.xml_collection_id = x.xml_collection_id),IndexDefsAS (SELECT TableObj = i.[object_id], IxName =QUOTENAME(+CASE WHEN@new=1THEN'_'+LEFT(NEWID(),4) ELSE''end), IxPKFlag = i.is_primary_key, IxType =CASE WHEN i.is_primary_key =1THEN'PRIMARY KEY 'WHEN i.is_unique =1THEN'UNIQUE 'ELSE''END+LOWER(type_desc),IxDef ='('+ IxColList +')'+COALESCE(' INCLUDE ('+ IxInclList +')', ''),IxOpts = IxOptListFROM sys.indexes iLEFT JOIN sys.stats s ON i.index_id = s.stats_id AND i.[object_id]= s.[object_id]CROSS APPLY (SELECT STUFF((SELECT CASE WHEN i.is_padded =1THEN', PAD_INDEX=ON'ELSE''END+CASE WHEN i.fill_factor <>0THEN', FILLFACTOR='+CAST(i.fill_factor AS VARCHAR(10))ELSE''END+CASE WHEN i.ignore_dup_key =1THEN', IGNORE_DUP_KEY=ON'ELSE''END+CASE WHEN s.no_recompute =1THEN', STATISTICS_RECOMPUTE=ON'ELSE''END+CASE WHEN i.allow_row_locks =0THEN', ALLOW_ROW_LOCKS=OFF'ELSE''END+CASE WHEN i.allow_page_locks =0THEN', ALLOW_PAGE_LOCKS=OFF'ELSE''END), 1, 2, '')) F_IxOpts (IxOptList)CROSS APPLY (SELECT STUFF((SELECT','+QUOTENAME() +CASE WHEN ic.is_descending_key =1AND i.type <>3THEN' DESC'WHEN ic.is_descending_key =0AND i.type <>3THEN' ASC'ELSE''ENDFROM sys.index_columns icJOIN sys.columns c ON ic.[object_id]= c.[object_id]AND ic.column_id = c.column_idWHERE ic.[object_id]= i.[object_id]AND ic.index_id = i.index_id AND ic.is_included_column =0ORDER BY ic.key_ordinalFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_IxCols (IxColList)CROSS APPLY (SELECT STUFF((SELECT','+QUOTENAME()FROM sys.index_columns icJOIN sys.columns c ON ic.[object_id]= c.[object_id]AND ic.column_id = c.column_idWHERE ic.[object_id]= i.[object_id]AND ic.index_id = i.index_id AND ic.is_included_column =1ORDER BY ic.key_ordinalFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_IxIncl (IxInclList)WHERE i.type_desc <>'HEAP'),FKDefsAS (SELECT TableObj = f.parent_object_id, FKName =QUOTENAME(),FKRef =QUOTENAME(OBJECT_SCHEMA_NAME(f.referenced_object_id)) +'.'+QUOTENAME(OBJECT_NAME(f.referenced_object_id)),FKColList = ParentColList, FKRefList = RefColList,FKDelOpt =CASE f.delete_referential_actionWHEN1THEN'CASCADE'WHEN2THEN'SET NULL'WHEN3THEN'SET DEFAULT'END, FKUpdOpt =CASE f.update_referential_actionWHEN1THEN'CASCADE'WHEN2THEN'SET NULL'WHEN3THEN'SET DEFAULT'END, FKNoRepl = f.is_not_for_replicationFROM sys.foreign_keys fCROSS APPLY (SELECT STUFF((SELECT','+QUOTENAME()FROM sys.foreign_key_columns kJOIN sys.columns c ON k.parent_object_id = c.[object_id]AND k.parent_column_id = c.column_idWHERE k.constraint_object_id = f.[object_id]ORDER BY constraint_column_idFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_Parent (ParentColList)CROSS APPLY (SELECT STUFF((SELECT','+QUOTENAME()FROM sys.foreign_key_columns kJOIN sys.columns c ON k.referenced_object_id = c.[object_id]AND k.referenced_column_id = c.column_idWHERE k.constraint_object_id = f.[object_id]ORDER BY constraint_column_idFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '')) F_Ref (RefColList))INSERT INTO@results ([definition])SELECT--TableName,[definition]+CHAR(10)+'GO'+CHAR(10) AS definitionFROM sys.tables tINNER JOIN@objects o ON(t.[object_id]LIKE o.[id]AND o.[type]='U')CROSS APPLY (SELECT TableName =QUOTENAME(OBJECT_SCHEMA_NAME(t.[object_id])) +'.'+QUOTENAME(OBJECT_NAME(t.[object_id]))) F_NameCROSS APPLY (SELECT STUFF((SELECT@crlf+' ,'+ ColumnDefFROM ColumnDefsWHERE TableObj = t.[object_id]ORDER BY ColSeqFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 5, '')) F_Cols (ColumnList)CROSS APPLY (SELECT STUFF((SELECT@crlf+' ,CONSTRAINT '+QUOTENAME(name) +' CHECK '+CASEWHEN is_not_for_replication =1THEN'NOT FOR REPLICATION 'ELSE''END+COALESCE([definition],'')FROM sys.check_constraintsWHERE parent_object_id = t.[object_id]FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Const (ChkConstList)CROSS APPLY (SELECT STUFF((SELECT@crlf+' ,CONSTRAINT '+ IxName +''+ IxType +''+ IxDef +COALESCE(' WITH ('+ IxOpts +')','')FROM IndexDefsWHERE TableObj = t.[object_id]AND IxPKFlag =1FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_IxConst (IxConstList)CROSS APPLY (SELECT STUFF((SELECT@crlf+' ,CONSTRAINT '+ FKName +' FOREIGN KEY '+'('+ FKColList +')'+' REFERENCES '+ FKRef +' ('+ FKRefList +')'+CASEWHEN FKDelOpt IS NOT NULLTHEN' ON DELETE '+ FKDelOptELSE''END+CASEWHEN FKUpdOpt IS NOT NULLTHEN' ON UPDATE '+ FKUpdOptELSE''END+CASEWHEN FKNoRepl =1THEN' NOT FOR REPLICATION'ELSE''ENDFROM FKDefsWHERE TableObj = t.[object_id]FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Keys (FKConstList)CROSS APPLY (SELECT STUFF((SELECT@crlf+'CREATE '+ IxType +' INDEX '+ IxName +' ON '+ TableName +''+ IxDef +COALESCE(' WITH ('+ IxOpts +')','')FROM IndexDefsWHERE TableObj = t.[object_id]AND IxPKFlag =0FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2, '')) F_Indexes (IndexList)CROSS APPLY (SELECT[definition]=( SELECT CASE WHEN@index<>1THEN'CREATE TABLE '+ TableName +@crlf+'('+@crlf+''+ ColumnList +COALESCE(@crlf+ ChkConstList,'') +COALESCE(@crlf+ IxConstList,'') +COALESCE(@crlf+ FKConstList,'') +@crlf+')'+@crlfELSE''END+CASE WHEN@index<>0THEN COALESCE(@crlf+ IndexList, '')ELSE''ENDFOR XML PATH(''), TYPE).value('.', 'nvarchar(max)')) F_LinkWHERE t.[is_ms_shipped]=0AND[definition]<>'';-- 视图/过程/函数/触发器INSERT INTO@results ([definition])SELECT--QUOTENAME(object_schema_name(m.object_id))+'.'+ QUOTENAME(object_name(m.object_id)) AS [name],o.type,m.definition+CHAR(10)+'GO'+CHAR(10) AS definitionFROM sys.sql_modules mINNER JOIN sys.objects o ON m.object_id= o.object_idINNER JOIN@objects a ON(m.[object_id]LIKE a.[id]AND a.[type]<>'U');-- 字段说明insert into@results ([definition])select'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N'''+cast(ep.[value]as varchar(100))+''', @level0type=N''SCHEMA'',@level0name=N'''+schema_name(schema_id)+''', @level1type=N''TABLE'',@level1name=N'''+t.[name]+''', @level2type=N''COLUMN'',@level2name=N'''+c.[name]+''''+CHAR(10)+'GO'+CHAR(10)FROM sys.tables AS tINNER JOIN sys.columns AS c ON t.object_id= c.object_idLEFT JOIN sys.extended_properties AS ep ON ep.major_id = c.object_id AND ep.minor_id = c.column_idINNER JOIN@objects o ON(t.[object_id]LIKE o.[id]AND o.[type]='U')WHERE ep.class =1SELECT*FROM@results;goSplitif exists (select*from sys.objects where object_id=OBJECT_ID(N'[dbo].[Split]') and type in (N'FN', N'IF', N'TF', N'FS', N'FT'))drop function[dbo].[Split]goCREATE FUNCTION[dbo].[Split](@Text VARCHAR(max),@Sign NVARCHAR(4000))RETURNS@tempTable TABLE(id INT IDENTITY(1,1)PRIMARY KEY,[VALUE]NVARCHAR(4000))ASBEGIN-- select [dbo].[Split]('1,2',',')DECLARE@StartIndex INT--开始查找的位置DECLARE@FindIndex INT--找到的位置DECLARE@Content VARCHAR(4000)--找到的值--初始化⼀些变量SET@StartIndex=1--T-SQL中字符串的查找位置是从1开始的SET@FindIndex=0--开始循环查找字符串逗号WHILE(@StartIndex<=LEN(@Text))BEGIN--查找字符串函数CHARINDEX第⼀个参数是要找的字符串--第⼆个参数是在哪⾥查找这个字符串--第三个参数是开始查找的位置--返回值是找到字符串的位置SELECT@FindIndex=CHARINDEX(@Sign,@Text,@StartIndex)--判断有没找到没找到返回0IF(@FindIndex=0OR@FindIndex IS NULL)BEGIN--如果没有找到者表⽰找完了SET@FindIndex=LEN(@Text)+1END--截取字符串函数SUBSTRING第⼀个参数是要截取的字符串--第⼆个参数是开始的位置--第三个参数是截取的长度--@FindIndex-@StartIndex表⽰找的的位置-开始找的位置=要截取的长度--LTRIM和RTRIM是去除字符串左边和右边的空格函数SET@Content=LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))--初始化下次查找的位置SET@StartIndex=@FindIndex+1--把找的的值插⼊到要返回的Table类型中INSERT INTO@tempTable([VALUE])VALUES(@Content)ENDRETURNENDgoUspOutputDataif exists (select1from sysobjects where id =object_id('UspOutputData') and type ='P')drop proc UspOutputDatagoCREATE PROCEDURE pOutputData@tablename sysnameASdeclare@column varchar(1000)declare@columndata varchar(1000)declare@sql varchar(4000)declare@xtype tinyintdeclare@name sysnamedeclare@objectId intdeclare@objectname sysnamedeclare@ident intset nocount onif@tablename='HD_ZBMX_HZ'-- HD_ZBMX_HZ 特殊处理beginset nocount onselect'insert HD_ZBMX_HZ(zb_id,zb_name,sql_start,sql_middle,sql_end,sql_text,tqsql_text,jlzt,memo,dependindex,orderno,sql_text_first,proc_name,zbzt,ysfs,kslx,fact_table,fact_dlz,condition,kxwdz,gspz,hqsql_text,dlzgs,dylx) values( returnendset@objectId=object_id(@tablename)if@objectId is null-- 判断对象是否存在beginprint'The object not exists'returnendset@objectname=rtrim(object_name(@objectId))if@objectname is null or charindex(@objectname,@tablename)=0--此判断不严密beginprint'object not in current database'returnendif OBJECTPROPERTY(@objectId,'IsTable') <>1-- 判断对象是否是tablebeginprint'The object is not table'returnendselect@ident=status&0x80from syscolumns where id =@objectId and status&0x80=0x80if@ident is not nullprint'SET IDENTITY_INSERT '+@tablename+' ON'declare syscolumns_cursor cursorfor select ,c.xtype from syscolumns c where c.id=@objectId order by c.colidopen syscolumns_cursorset@column=''set@columndata=''fetch next from syscolumns_cursor into@name,@xtypewhile@@fetch_status<>-1beginif@@fetch_status<>-2beginif@xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理beginset@column=@column+case when len(@column)=0then''else','end+@nameset@columndata=@columndata+case when len(@columndata)=0then''else','','','end+case when@xtype in(167,175) then'''''''''+'+@name+'+'''''''''--varchar,charwhen@xtype in(231,239) then'''N''''''+'+@name+'+'''''''''--nvarchar,ncharwhen@xtype=61then'''''''''+convert(char(23),'+@name+',121)+'''''''''--datetimewhen@xtype=58then'''''''''+convert(char(16),'+@name+',120)+'''''''''--smalldatetimewhen@xtype=36then'''''''''+convert(char(36),'+@name+')+'''''''''--uniqueidentifierelse@name endendendfetch next from syscolumns_cursor into@name,@xtypeendclose syscolumns_cursordeallocate syscolumns_cursorset@sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''v1'','+@columndata+','')'' from '+@tablename --print '--'+@sql--print @columndata--print @columnexec(@sql)if@ident is not nullprint'SET IDENTITY_INSERT '+@tablename+' OFF'GO。
sql server数据库定时自动备份
前提:操作计算机上要安装有SQL Server客户端应用程序。
第一步:双击屏幕右下角的,在服务(R)处选SQL Server Agent,然后点击开始/继续。
第二步:在〔开始〕->〔程序〕处,启动SQL Server -> 企业管理器。
第三步:点企业管理器中->管理->sql server代理->作业第四步:右击新建作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限;第五步:点击步骤标签,进入步骤面板。
新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改。
命令中写入以下语句:declare @filename nvarchar(100)set @filename='F:/bankcomm/flow'+convert(char(10),getdate(),112) print @filename BACKUP DATABASE [flow] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'bankcomm 备份', NOSKIP , STATS = 10, NOFORMAT注意:需要修改的地方,数据库名,DISK=(这里需要填写路径和你的数据库备份的名称)后面的Name=可以随便填写。
第六步:点击调度标签,进入调度面板,新建调度,名称随便填写,选择反复出现,点更改;第七步:然后点击“更改”,可以选择你想要执行任务的随意调度。
如每天,每2天,每星期,每月等。
根据需要自己设置第八步:选择发生频率为“每天”,每日频率为“一次发生于0:00:00”。
(注意:最好将时间设在晚上??非高峰时间。
)第九步:点击“确定”结束。
第十步:在你刚才建立的工作上点右键,启动工作,如果你的工作没有问题,将会提示执行成功,并有相对应的备份文件在你的磁盘上出现。
sqlserver数据库备份作业步骤
在SQL Server 中设置数据库备份作业通常使用SQL Server 代理(SQL Server Agent)。
下面是在SQL Server 中创建数据库备份作业的一般步骤:1. 启用SQL Server 代理:-在SQL Server Management Studio (SSMS) 中,连接到SQL Server 数据库引擎。
-在"对象资源管理器" 中,展开"SQL Server 代理" 节点,右键单击"SQL Server 代理",选择"启动"。
2. 创建备份作业:-在"SQL Server 代理" 下,右键单击"作业",选择"新建作业"。
3. 配置基本信息:-在"常规" 选项卡上,输入作业的名称和描述。
-选择"启用" 以激活作业。
4. 配置步骤(作业步骤):-在"步骤" 选项卡上,点击"新建"。
-输入步骤的名称。
-在"类型" 下拉菜单中选择"Transact-SQL 脚本(T-SQL)"。
-在"数据库" 下拉菜单中选择要备份的数据库。
5. 输入备份脚本:-在"命令" 文本框中输入备份数据库的T-SQL 脚本6. 配置调度(可选):-在"调度" 选项卡上,配置作业的调度计划。
你可以选择一次性运行或按照特定的调度计划定期运行作业。
7. 配置通知(可选):-在"通知" 选项卡上,可以配置在作业完成时是否发送通知。
8. 保存并运行作业:-点击"确定" 保存作业设置。
-如果需要立即执行作业,可以右键单击作业,选择"运行"。
SQLServer备份语句(命令行方式)
--查询→S QLCMD模式,可以执行操作系统命令!!if n ot ex ist E:\bac kup M D E:\Backu p--目标文件命名不规范B ackup Data baseNorth windC STodisk='E:\B ackup\aaa'--完整备份,命名规范Ba ckupDatab ase N orthw indCSTo d isk='E:\Ba ckup\North windC S-20100815-F.ba k' --差异备份Backu p Dat abase Nort hwind CSTo disk='E:\Backu p\Nor thwin dCS-20100815-D.bak'WithDiffe renti al--事务日志备份,数据库不能是简单恢复模式--默认截断日志B ackup LogNorth windC STodisk='E:\B ackup\Nort hwind CS-20100815-L.b ak' --查看数据库的文件和文件组E xec s p_hel pdb N orthw indCS--备份数据文件Backu p Dat abase Nort hwind CS Fi le='N orthw indCS' Todisk='E:\B ackup\Nort hwind CS-20100815-Fil e.bak' --备份文件组Backu p Dat abase Nort hwind CS Fi leGro up='P rimar y' To disk='E:\Backu p\Nor thwin dCS-20100815-FG.bak' --仅复制备份,不影响现有的备份序列Backu p Dat abase Nort hwind CSTo disk='E:\Backu p\Nor thwin dCS-20100815-C.bak'WithCopy_only--事务日志备份,但是不截断日志Bac kup L og No rthwi ndCSTo di sk='E:\Bac kup\N orthw indCS-20100815-L.bak' Wit h No_Trunc ate--千万不要物理删除日志文件--立即截断日志不保留,SQL2008不支持Bac kup L og No rthwi ndCSWithNo_lo gBac kup L og No rthwi ndCSWithTrunc ate_O nly--SQL2008替代实现的截断日志方法Alt er Da tabas e Nor thwin dCS Se t Rec overy Simp leDb cc Sh rinkF ile(N orthw indCS_log)Alte r Dat abase Nort hwind CSSet Reco veryFull--一个文件可以存放多次备份,默认是追加Back up Da tabas e Nor thwin dCST o dis k='E:\Back up\No rthwi ndCS-20100815-F.bak'--覆盖现有的备份目标文件Backu p Dat abase Nort hwind CSTo disk='E:\Backu p\Nor thwin dCS-20100815-F.bak'WithInit--分割备份到多个目标文件B ackup Data baseNorth windC STodisk='E:\B ackup\Nort hwind CS-20100815-Par t1.ba k', dis k='E:\Back up\No rthwi ndCS-20100815-P art2.bak'--镜像备份到多个目标文件,S QL2005以后支持Back up Da tabas e Nor thwin dCST o dis k='E:\Back up\No rthwi ndCS-20100815-M1.bak'Mir ror T O dis k='E:\Back up\No rthwi ndCS-20100815-M2.bak' WIT H FOR MAT--尾部日志备份,备份完成之后数据库不再提供服务Backu p Log Nort hwind CSTo disk='E:\Backu p\Nor thwin dCS-20100815-Ta il.ba k'Wi th No Recov ery--恢复数据库的可用Resto re Da tabas e Nor thwin dCS W ith R ecove ry--如何执行相同的语句每天生成一个备份文件Decl are @Pathvarch ar(3000)S et @P ath='E:\Ba ckup\North windC S-'+ C onver t(var char,Getda te(),112)+'-F.bak'Backu p Dat abase Nort hwind CSTo disk=@Pat h--如何启用XP_C mdshe ll 存储过程--查看SQL实例当前的配置Ex ec sp_conf igure--开启高级配置选项的显示Exec sp_c onfig ure 'showadvan ced o ption s',1--让配置立即生效Recon figur e Wit h Ove rride--查看SQL实例当前的配置Exec sp_c onfig ure --启动X P_Cmd shellExec sp_c onfig ure 'xp_cm dshel l',1--让配置立即生效Recon figur e Wit h Ove rride--如何实现直接备份到异地(其他服务器)--1.备份到远程服务器,使用同名同密码账号写入B ackup Data baseNorth windC STodisk='\\192.168.1.22\Bac kup\N orthw indCS_fy.b ak'--2.备份到远程服务器,执行写入的用户名和密码ExecXp_cm dshel l'Net U se \\192.168.1.164\B ackup /USE R:SQL Servi ce pa sswor d' Ba ckupDatab ase N orthw indCSTodisk='\\192.168.1.164\Ba ckup\North windC S_Fy.bak'--创建备份设备USE [mas ter]GO--创建逻辑设备,映射到一个文件EXECmaste r.dbo.sp_a ddump devic e@devty pe =N'dis k', @logi calna me =N'Loc alDEV',@physi calna me =N'E:\Backu p\Loc alDEV.bak'GO--备份到设备Bac kup D ataba se No rthwi ndCSTo Loca lDEV。
SQLServer使用脚本执行数据库备份
SQLServer使⽤脚本执⾏数据库备份背景sql server express版⽆法使⽤作业,提供⼀种解决思路fullbak.sql 完整备份数据库实例级别的完整备份,备份路径为E:\sqlbak\数据库名\,注意需要添加好当前数据库实例各数据库名的⼦⽬录EXEC sp_MSForEachDB 'USE [?];PRINT DB_NAME();DECLARE @databasename NVARCHAR(128) =DB_NAME();--恢复模式为完整IF EXISTS (SELECT *FROM sys.databasesWHERE name=DB_NAME()AND recovery_model_desc=''FULL'')BEGINDECLARE @backupname NVARCHAR(128);SET @backupname=''E:\sqlbak\''+@databasename+''\''+@databasename+''_fullbak_''+REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(50), GETDATE(), 120), ''-'', ''''), '':'', ''''), '''', ''_'')+''.bak''; EXEC(''BACKUP DATABASE [''+@databasename+''] TO DISK = N''''''+@backupname+''''''WITH RETAINDAYS = 14, NOFORMAT, NOINIT, NAME = N''''''+@databasename+''-完整数据库备份'''',SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10'' );END;'cleanbak.sql 清理脚本/* --- 开启xp_cmdshell权限,可通过数据库操作⽂件 ---use master;gosp_configure 'show advanced options',1reconfiguregosp_configure 'xp_cmdshell',1reconfigurego*/exec master.dbo.xp_cmdshell 'forfiles /p "E:\sqlbak" /s /m *.bak /d -15 /c "cmd /c del @path"'SQLBak.bat 使⽤bat执⾏sql⽂件@ECHO OFF?SET dbhost=127.0.0.1SET dbuser=saSET dbpasswd=123456set dbName=masterSET sqlpath=%~dp0set bakfile=fullbak.sqlset cleanfile=cleanbak.sql::执⾏SQL脚本osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %sqlpath%%bakfile%ECHO备份完成!::执⾏清理脚本osql -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %sqlpath%%cleanfile%ECHO清理完成!PAUSE@ECHO Done!?配置windows计划任务,执⾏该bat⽂件【管理⼯具】-【任务计划程序】-【创建基本任务】选择每天2:00,执⾏SQLBak.bat ⽂件。
自动定时备份sqlserver数据库的方法
⾃动定时备份sqlserver数据库的⽅法下⾯是我已经证实可⽤的⾃动备份的⽅法.1、打开企业管理器->管理->sql server代理2、新建⼀个作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他⽤户,前提是该⽤户有执⾏作业的权限;3、点击步骤标签,进⼊步骤⾯板.新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改.命令中写⼊以下语句:BACKUP DATABASE [数据库名] TO DISK = N'F:\\databack\\firenews备份' WITH NOINIT , NOUNLOAD , NAME =N'firenews备份', NOSKIP , STATS = 10, NOFORMAT注意:需要修改的地⽅,数据库名,DISK=(这⾥需要填写路径和你的数据库备份的名称)后⾯的Name=可以随便填写.4、点击调度标签,进⼊调度⾯板,新建调度,名称随便填写,选择反复出现,点更改可以选择你想要执⾏任务的随意调度.如每天,每2天,每星期,每⽉等.根据需要⾃⼰设置;(注意:在调度名称后⾯有个启动选项,必须勾选)5、确定后,不要忘记⼀件事情,在你刚才建⽴的⼯作上点右键,启动⼯作,如果你的⼯作没有问题,将会提⽰执⾏成功,并有相对应的备份⽂件在你的磁盘上出现;6、还有⼀个重要的问题就是你的sql server agent服务器已经启动.如果我们需要根据每天的⽇期来⽣成⼀个新的备份,以便我们区别备份⽂件.这时,我们需要修改⼀下刚才的sql语句.参考实例:1、⾃动备份,固定备份名,每次会追加备份复制代码代码如下:backup database FireNews to disk=N'F:\\databack\\firenews备份' with noinit,nounload,name=N'firenews备份',noskip,stats=10,noformatbackup database fireweb to disk=N'F:\\backup\\data\\fireweb\\fireweb备份' with noinit,nounload,name=N'fireweb备份',noskip,stats=10,noformat2、⾃动备份,以时间命名,完整备份复制代码代码如下:declare @filename nvarchar(100) set @filename='F:\\databack\\data'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [firenews] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'firenews备份', NOSKIP, STATS = 10, NOFORMATdeclare @filename nvarchar(100) set @filename='F:\\backup\\data\\fireweb\\fireweb'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [fireweb] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'fireweb备份',NOSKIP, STATS = 10, NOFORMAT注:1、备份的数据库存放的⽂件夹必须已经存在;2、N 必须⼤写;3、NAME的值可以随便写;4、FireNews,fireweb为数据库名;5、新建作业时提⽰:未能找到存储过程master.dbo.xp_regread,表名master数据库没有这个存储过程(可能是做安全处理的时候删除了),需⾃⼰注册。
sqlserver备份数据表的sql语句
在日常数据库管理工作中,备份数据表是一项重要的任务。
通过备份数据表,可以保障数据的安全性和完整性,同时也为数据恢复提供了可靠的依据。
在SQL Server中,备份数据表的操作是非常常见的,下面将介绍如何使用SQL语句备份数据表。
1. 使用SELECT INTO语句备份数据表SELECT INTO语句可以将原始表的数据复制到一个新的目标表中,从而实现备份数据表的功能。
下面是使用SELECT INTO语句备份数据表的示例代码:```sqlSELECT *INTO backup_tableFROM original_table```上述代码将original_table中的数据复制到新的backup_table中,从而实现了备份数据表的效果。
2. 使用INSERT INTO SELECT语句备份数据表INSERT INTO SELECT语句也可以用于备份数据表。
通过将原始表的数据插入到一个新的目标表中,即可实现数据表的备份。
以下是使用INSERT INTO SELECT语句备份数据表的示例代码:```sqlINSERT INTO backup_tableSELECT * FROM original_table```上述代码将original_table中的数据插入到新的backup_table中,实现了备份数据表的操作。
3. 使用bcp命令备份数据表除了使用SQL语句备份数据表外,还可以使用bcp命令实现数据表的备份。
bcp命令是SQL Server自带的一个实用工具,可以用于数据的导入和导出。
以下是使用bcp命令备份数据表的示例代码:```sqlbcp database.schema.original_table outC:\backup\backup_table.bcp -c -t, -T```上述代码将original_table表的数据导出为一个备份文件backup_table.bcp,实现了数据表的备份操作。
sql_server自动备份
1.打开企业管理器,如下图所示:
2.点击“管理”下面的“数据库维护计划”,鼠标右键“数据库维护计划”,在弹出的菜单中选择“新建维护计划”,如下图所示:
3.在弹出的维护计划向导中点击“下一步”,如下图所示:
4.选择需要做维护的数据库,点击“下一步”。
如下图所示:
5.在接下来的操作中也点击两次“下一步”,结果如下图所示:
6.点击“更改”,修改调度的频率,如下图所示:
7.点击“确定”后再点“下一步”,设置备份目录和保留备份个数,如下图所示:
8.接下来的操作都点击“下一次”,最后可以更改计划名,然后点击完成,如下图所示:
9.此时提示如下图所示界面,默认情况下SQLSererAgent是停止的。
10.启动SQLSererAgent服务,双击电脑任务栏右下角的MSSQLServer,从服务中选择“SQL Server Agent”,然后点击“开始/继续”,选中“当启动OS时自动启动服务”的复选框,如下图所示:。
SQL Server自动备份作业(备份+FTP+邮件)
自己写了一段脚本,加在作业中,实现按照日期生成文件夹,并将目标数据库存储在其中,然后通过FTP上传到备用服务器上。
declare @strsql varchar(1000), --执行语句@strdirname varchar(50),--建立文件夹名@strcmd varchar(50), --执行命令名@strsend varchar(1000), --邮件发送语句@strdate varchar(50) --邮件发送日期set @strsql='backup database pubs to disk=''d:\backup\erp\'set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')set @strcmd='md d:\backup\erp\'set @strcmd=@strcmd+@strdirname--取得当天日期,格式为yyyy-mm-ddset @strdate=substring(convert(varchar(50),getdate(),120),1,10)set @strsend='sys_sendmail ''1000@'',''213@'',''www'',''备份通知'','''+@strdate+'日数据库备份成功,感谢您的使用!'''exec xp_cmdshell @strcmdset @strsql=@strsql+@strdirname+'\pubs.dat''with init,nounload,noskip,noformat'print @strsqlexec (@strsql)backup database pubs to disk='d:\backup\erp\pubs.dat' with init,nounload,noskip,noformat--用FTP上传到ERP服务器exec xp_cmdshell 'ftp -s:"D:\backup\erp\ftp.txt"'--操作成功后发送邮件exec(@strsend)if @@error <> 0beginraiserror('数据库备份发生错误,请检查设置',16,1)set @strsend='sys_sendmail ''1000@'',''213@'',''www'',''备份通知'','''+@strdate+'日数据库备份失败,请检查设置!'''exec (@strsend)end。
sql server数据备份方法
sql server数据备份方法SQL Server数据备份可以通过以下方法进行:1. 使用SQL Server Management Studio (SSMS):打开SSMS并连接到相应的SQL Server实例。
在对象资源管理器中,找到并右键点击数据库,然后选择“任务” -> “备份”。
在“备份类型”中选择全备份或差异备份,然后选择目标位置和文件名。
点击“确定”开始备份。
2. 使用命令行工具:打开命令提示符或PowerShell。
使用`BACKUP DATABASE`命令来备份数据库,例如:`BACKUP DATABASE [YourDatabaseName] TO DISK = 'D:\Backups\'`。
3. 使用第三方工具: 有许多第三方工具,如ApexSQL、Redgate SQL Backup等,可以帮助您备份SQL Server数据库。
4. 备份事务日志: 如果您希望备份事务日志,可以使用`BACKUP LOG`命令。
这可以帮助您在发生故障时进行点时间恢复。
5. 自动备份: 使用SQL Server Agent可以设置自动备份作业,定期备份您的数据库。
6. 差异备份和日志备份: 根据需要选择不同的备份类型,例如差异备份和日志备份,以更有效地管理您的备份策略。
7. 完全恢复模型: 如果您的数据库使用完全恢复模型,您可以使用日志备份和差异备份来还原数据。
8. 物理文件备份: 如果您需要更底层的备份,可以备份数据库的物理文件(例如MDF和LDF文件)。
9. 使用云服务: 使用云服务提供商(如Azure和Amazon Web Services)提供的数据库服务,它们通常提供自动备份和恢复功能。
10. 定期验证备份: 确保定期测试备份文件的有效性,确保在需要时可以成功恢复数据。
在进行数据备份之前,请确保已经进行了完整的数据库备份,并保存好这些备份文件,以防止数据丢失。
8步SQLServer数据库自动备份[精选多篇]
8步SQLServer数据库自动备份[精选多篇]第一篇:8步SQL Server数据库自动备份8步教你SQL Server数据库自动备份此文章主要介绍的是每日自动备份SQL Server数据库:1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server数据库组-->双击打开你的服务器2、然后点上面菜单中的工具-->选择数据库维护计划器3、下一步选择要进行自动备份SQL Server的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名一般都是bak就用默认的6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成7、完成后系统很可能会提示Sql Server Agent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务8、这个时候数据库计划已经成功的运行了,他将按照您上面的设置进行自动备份SQL Server.第二篇:oracle数据库自动备份方案1.目的编写本文档的目的为实现ORACLE数据库的自动备份,为不动产数据增加一份数据安全按保障。
2.软件环境数据库服务器:oracle 11g atabase x64 v11.2.0.4.0 客户端:Oracle client x64 v11.2.0.4.0 注意:数据库服务器和客户端版本必须保持一致,否则会出现无法预知的错误。
SQLServer数据库备份、差异备份、日志备份脚本
SQLServer数据库备份、差异备份、日志备份脚本
1,sp脚本
USE [master]GO/****** Object: StoredProcedure [dbo].[sp_BackupDatabase] Script Date: 2021/10/22 10:04:28 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- Parameter1: 备份类型 F=全部, D=差异, L=日志ALTER PROCEDURE [dbo].[sp_BackupDatabase]@backupType CHAR(1)ASBEGINSET NOCOUNT ON;declare @filepath_backup varchar(100)declare @dateTime varchar(30),@del_time_stamp varchar(50)DECLARE @sqlCommand NVARCHAR(1000)DECLARE @sourcePath nvarchar(max)
ALTER DATABASE OperationSystem
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
REM Database user name and password
SET DBUser=sa
SET DBpassword=sapassword
ECHO BACKUP DATABASE
"%OSQL_PATH%osql.exe" -U %DBUser% -P %DBpassword% -i %B_SCRIPT_TARGET%\FULL_backup.sql -o %logdir%\backupdatabase%B_DATE%_Full.log
ECHO WITH NOINIT , NOUNLOAD , DIFFERENTIAL ; >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO go >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO .
if not exist %logdir%\nul mkdir %logdir%
REM B_SCRIPT_TARGET
SET B_SCRIPT_TARGET=c:\2
if not exist %B_SCRIPT_TARGET%\nul mkdir %B_SCRIPT_TARGET%
REM B_DataFiles_TARGET
1.将需要执行的脚本放到计划任务当中.根据需要调整运行的时间.
2.每次的备份内容生成单独的设备名称用日期文件名进行判断.
3.将备份完的内容ftp到其他计算机上.这样也算是搞一个小的"异地容灾"不至于在一个机器完蛋后.数据库的备份没有了.
下面就是这两个脚本的内容.欢迎大家提供意见也建议.
另外就是本人不负责任何运行这些脚本的后果.但是有任何技术问题欢迎交流.如果是在我有时间和我知道的前提下.
REM blog:
REM Date :20060905
REM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ECHO .
REM Backup Database Script Log Files
SET logdir=c:\1
ECHO use master ;>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO go >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO SP_ADDUMPDEVICE 'DISK',>>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
脚本分为两部分1个是完全备份的.另外一个是差异备份的.
@ECHO off
REM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
REM Differential Backup sql server database
REM email:hao.wangbj@
ECHO WITH NOINIT , NOUNLOAD ;>>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO go >>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO .
REM osql.exe path
SET OSQL_PATH=C:\Program Files\Microsoft SQL Server\80\Tools\Binn\
SET B_DataFiles_TARGET=c:\3
if not exist %B_DataFiles_TARGET%\nul mkdir %B_DataFiles_TARGET%
REM Backup Database Name
SET B_Database_Name=testdb
SET B_DATE=%date:~0,4%%date:~5,2%%date:~8,2%
ECHO go >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO BACKUP DATABASE %B_Database_Name% >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO TO BackupDatabase%B_Database_Name%file%B_DATE%Differential >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO %FTP_PW%>>%B_SCRIPT_TARGET%\FTP_CMD.txt
ECHO bin>>%B_SCRIPT_TARGET%\FTP_CMD.txt
ECHO cd %FTP_target%>>%B_SCRIPT_TARGET%\FTP_CMD.txt
ECHO mput %B_DataFiles_TARGET%\%B_Database_Name%%B_DATE%_FULL.bak>>%B_SCRIPT_TARGET%\FTP_CMD.txt
REM FTP info
set FTP_User=administrator
set FTP_PW=admin_password
set FTP_IP=127.0.0.1
set FTP_target=/database
ECHO %FTP_User%>%B_SCRIPT_TARGET%\FTP_CMD.txt
ECHO BYE>>%B_SCRIPT_TARGET%\FTP_CMD.txt
ftp -i -s:%B_SCRIPT_TARGET%\FTP_CMD.txt %FTP_IP%
REM Delete Temp files
DEL /Q %B_SCRIPT_TARGET%\FULL_backuph
SET OSQL_PATH=C:\Program Files\Microsoft SQL Server\80\Tools\Binn\
REM Database user name and password
SET DBUser=sa
SET DBpassword=sapassword
SET B_DataFiles_TARGET=c:\3
if not exist %B_DataFiles_TARGET%\nul mkdir %B_DataFiles_TARGET%
REM Backup Database Name
SET B_Database_Name=testdb
SET B_DATE=%date:~0,4%%date:~5,2%%date:~8,2%
DEL /Q %B_SCRIPT_TARGET%\FTP_CMD.txt
ECHO 'BackupDatabase%B_Database_Name%file%B_DATE%Differential', >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO '%B_DataFiles_TARGET%\%B_Database_Name%%B_DATE%_Differential.bak'; >>%B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
1. 能根据计划进行数据库的完全备份/增量备份.
2. 将不同的备份内容存放在不同的备份设备上.(例如每天备份的内容单独存放在一个备份设备上).
3.将备份的内容在其他的机器上面保存一份.
在网络上找了一些资料但是大多数都没有人写过类似的东西.经过我两天的编写和测试现在终于搞定了.
实现的功能是:
ECHO BYE>>%B_SCRIPT_TARGET%\FTP_CMD.txt
ftp -i -s:%B_SCRIPT_TARGET%\FTP_CMD.txt %FTP_IP%
REM Delete Temp files
DEL /Q %B_SCRIPT_TARGET%\DIFFERENTIAL_backup.sql
ECHO use master ;>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO go >>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO SP_ADDUMPDEVICE 'DISK',>>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO go >>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO BACKUP DATABASE %B_Database_Name% >>%B_SCRIPT_TARGET%\FULL_backup.sql
ECHO TO BackupDatabase%B_Database_Name%file%B_DATE%_FULL >>%B_SCRIPT_TARGET%\FULL_backup.sql
DEL /Q %B_SCRIPT_TARGET%\FTP_CMD.txt
完全备份:
@ECHO off
REM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
REM FULL backup sql server database
REM email:hao.wangbj@
REM FTP info