sqlserver for linux自动备份数据库脚本

不多说直接上脚本

#/bin/bash
user=multiverse
passwd=Multiverse1113
back_path=/var/opt/backup/
db_name=multiverse
back_time=`date +%Y%m%d_%H%M%S`
back_filename=$back_path$db_name$back_time
del_time=`date -d "2 day ago" +"%Y%m%d"`
del_backfile=$back_path$db_name$del_time

sqlcmd -S localhost -U $user -P $passwd -d master -Q "BACKUP DATABASE $db_name to disk='$back_filename.bak'"
tar -zcPf $back_filename.tar.gz $back_filename.bak
rm -f $back_filename.bak
if [ -e $back_filename.tar.gz ];then
    rm  -rf $del_backfile*.gz
    echo "database[multiverse] backup success! "
else
    echo "database[multiverse] backup failed!"
fi

备份数据库的命令如下:
backup database TestDB to disk='/opt/dbbackup/TestDB.bak'
这条命令将数据库 TestDB 备份到 /opt/dbbackup/TestDB.bak。注意,这里要确保 mssql 帐号拥有操作 /opt/dbbackup 目录的权限。
sqlserver for linux自动备份数据库脚本
有两种备份方法:
sqlserver for linux自动备份数据库脚本

sqlserver for linux自动备份数据库脚本

还原数据库的命令如下:
restore database TestDB from disk='/opt/dbbackup/TestDB.bak'
这是在数据库不存在的情况下使用。如果数据库存在,则需要使用如下命令进行覆盖:
restore database TestDB from disk='/opt/dbbackup/TestDB.bak' with replace

SQL Server 还有分离数据库和附加数据库这两种操作。
首先,分离数据库:
sp_detach_db TestDB
sqlserver for linux自动备份数据库脚本
那么,分离出来的文件在哪呢?其实,一点都不用担心,在 Linux 系统下要找一个文件太容易了。
sqlserver for linux自动备份数据库脚本
就是这两个文件,可以把它们拷贝出来到另外一台机子上做备份。
附加数据库的命令就稍微复杂点,不过也比较好理解。

sp_attach_db @dbname=TestDB,
@filename1=N'/opt/dbbackup/TestDB.mdf',
@filename2=N'/opt/dbbackup/TestDB_log.ldf'

sqlserver for linux自动备份数据库脚本

猜你喜欢

转载自blog.51cto.com/svsky/2121967