通过批处理,实现SQL Server数据库定期备份到ftp
@echo off
rem --------------------- 配置: ftp上传参数,及本地文件目录(数据库备份的临时目录)-----------------
set "PUT_FTP_SERVER=192.168.1.100"
set "PUT_FTP_PORT=21"
set "PUT_FTP_USERNAME=ftpuser"
set "PUT_FTP_PASSWORD=ftppasswd"
set "PUT_DIR=/"
set "LOCAL_DIR=D:\sql_dbbackup\"
rem ----------------------程序开始-----------------------------------------------------------------------
echo begin_backup_db
rem 调用数据库备份存储过程,参数为本地目录. 数据库返回"过期需要删除的备份文件"
sqlcmd -E -S 127.0.0.1,1333 -d master -v BAK_PATH="'%LOCAL_DIR%'" -Q "execute dbo.p_job_backup $(BAK_PATH);" -t 4800 -h -1 -W | findstr bak>>del_file.txt
rem 开始自动上传(上传完删除对应的本地文件)
echo begin_ftp_upload
call :uploaddir "%LOCAL_DIR%" "%PUT_DIR%"
rem 检查是否上传失败,失败则记录数据库日志
echo begin_check
for /f "delims=" %%i in ('dir /b /a-d "%LOCAL_DIR%*.bak"') do echo %%~nxi>>local_file.txt
if not exist local_file.txt goto :delete_remote
for /f "delims=" %%i in (local_file.txt) do (
sqlcmd -E -S 127.0.0.1,1333 -d master -v FILE_NAME="'%%i'" -Q "insert into t_log_backup(loglevel, filename, remark) values(1,$(FILE_NAME),'严重错误:上传备份文件失败,请检查ftp权限.同时它会导致本地磁盘满.');" -t 3600
)
del /f/q local_file.txt
rem 开始删除远程过期文件
echo begin_del_remote
:delete_remote
call :delremotefile "%LOCAL_DIR%" "%PUT_DIR%"
rem 启动数据库发送邮件(即发送错误日志)
sqlcmd -E -S 127.0.0.1,1333 -d master -Q "execute dbo.p_sendmail;" -t 120
echo end.
goto :eof
rem ---------------------程序结束-------------------------------------------------------------------------
rem ---------------------以下均为调用的子函数-------------------------------------------------------------
:uploaddir - upload directory tree
:: - %~1 local directory
:: - %~2 remote directory
setlocal
set "localdir=%~1"
set "remotedir=%~2"
call :put_autoftp cmdftp_uploaddir "
相关文档:
索引操作
数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了各个词的页码。而数据库中的索引是某个表中一列或者若干列值的集合,和相应的指向表中物理标 ......
视图操作
视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。与真实的表一样,视图也包括几个被定义的数据列和多个数据行,但这些数据实际上是被其引用的其他表中的数据。因此,视图不是真实存在的基础表,而是一个虚拟的表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存 ......
日期和时间函数对建立一个站点是非常有用的。站点的主人往往对一个表中的数据何时被
更新感兴趣。通过日期和时间函数,你可以在毫秒级跟踪一个表的改变。
返回当前日期和时间
通过函数GETDATE(),你可以获得当前的日期和时间。例如,语句SELECT GETDATE()
返回如下的结果:
…………&h ......
sql CHARINDEX函数
SQL Server 2010-01-15 09:01:15 阅读888 评论0 字号:大中小
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
  ......
1,显示游标的操作
(1) 定义游标
根据查询的数据情况,在PL/SQL块的声明部分定义游标,语法为:
cursor cursor_name is select_statement;
注意:
游标必须在PL/SQL块的声明部分进行定义;
......