使用VBScript自动化任务

本文介绍了如何使用VBScript来实现SQL Server中的自动化任务,包括删除旧文件和FTP传输文件的具体示例。这些示例可以帮助数据库管理员提高工作效率,实现日常管理任务的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者Haidong Ji 翻译 GoodKid

维护一个平稳、高效的SQL Server的关键是做好主动预防。我们需要经常性的找出加强SQL Server的方法并不断改善性能。使用主动式监护,当我们看到任何不正常的行为信号时,我们应调研和找出什么是真正的问题。在问题找到我们之前,发现并解决它。也就是说,在萌芽状态消灭它。

主动监护的关键是自动化。如果我们能够自动化日常任务,我们则能够将主要精力集中在更正有的问题上。另外,作为一个忙碌的DBA,自动化也可以让你更悠闲,这样你还可以学习更多的东西并不断提升自己。

SQL Server可用的自动化工具包括 SQL Server Agent, SQL (存储过程Stored Procedures), DTS, ActiveX 脚本(VBScript), SQL Server 命令行工具(OSQL/ISQL), DOS 命令批处理文件,WMI, SQL Mail,等等,不一而足。它们具有各自的特点,在不同的情况下各有优缺点。

本篇中,我将主要介绍 VBScript。我将举出两个关于文件删除和FTP 传输文件的VBScript 的例子。希望让你能够了解在哪里和如何使用 VBScript。可以轻松的修改并应用这两个例子。

在以后的几周内,我将提供另外的自动化工具的介绍和实例,如 WMI, shell 命令和批处理文件,存储过程等。

什么是VBScript

对于更广泛的环境,Visual Basic Scripting Edition 带来了交互式脚本,像网页脚本编程,Windows 管理器,和 SQL Server 管理器等。不像 VB6或 VB7((谢天谢地 Microsoft 将放弃 .NET lingo, 我非常恨它。这意义重大。),它不是一个成熟和内容丰富的编程语言。VBScript 集合了VB6更多的内容。 如果你已经非常熟悉 Visual Basic或 VBA (Visual Basic for Applications),你学习VBScript将不会有太多麻烦。即时你是一个初学者,VBScript 也并不困难,并且网上有内容丰富的学习资源供你选择。 Andy Warren had an article a few months ago on SQL-DMO. ,在这篇文章中提出了许多方法和技术可以应用于一般的VBScript 编程当中。

VBScript 包含一个Variant的数据类型。Variant 是一个特别的数据类型,它可以包含不同的信息,这取决于不同的使用方式。一个 variant子类型是一个对象。当设计和初始化一个对象时 (FileSystemObject, File object,等),记住如何使用SET关键字。对于初学者来说,这是非常重要的。

在SQL Server中,你可以使用 VBScript 创建一个DTS中的 ActiveX 任务。你可以添加你的script到 SQL Server Agent 工作中作为一个step。仅仅需要记住选择 ActiveX Script 作为 step 类型。. 下面的两个例子可以用在两种方式中。

例子1: VBScript 删除一个文件夹中旧的文件

作为灾难恢复计划的部分,你可能需要从一个服务器向另一个服务器传输备份文件。然而,你可能不想积累下来的备份文件,它们可能导致超出你的备份服务器的空间。在这种情况下,你想删除几天(或几周)以前的旧文件。下面的VBScript 轻松搞定这个任务。你可以客户化这个代码,例如改变 iDaysOld 的数值,以满足你的需要。大部分的代码含义是浅显自明的。为了求得更多的磁盘空间管理, 我几周前的一篇文章。

例子2: VBScript 自动FTP 文件

我们许多的工作在不同的技术环境中进行。我们的环境可能需要我们从*nix 服务或框架中获得文件。下面的例子介绍通过FTP获得文件的技术,并假设你想获得的文件的命名方式是 YYYYMMDDData.csv。因为文件名是每日变化的,因此我们生成的脚本文件是变化的。其余的代码应该是含义自明的。

Option Explicit
Dim objFSO, objMyFile, objShell, strFTPScriptFileName, strFile2Get
Dim strLocalFolderName, strFTPServerName, strLoginID
Dim strPassword, strFTPServerFolder

'Customize code here to fit your needs
strLocalFolderName = "My Folder Name where we put the file to be FTPed"
strFTPServerName = "FTP Server Name"
strLoginID = "FTP Server Login ID"
strPassword = "FTP Login ID Password"
strFTPServerFolder = "Folder Name on FTP server where the file resides"

'The following code converts date to the right format, YYYYMMDD
strFile2Get = DatePart("yyyy",Date)

If DatePart("m",Date) < 10 Then
	strFile2Get = strFile2Get & "0"
End If

strFile2Get = strFile2Get & DatePart("m",Date)

If DatePart("d",Date) < 10 Then
	strFile2Get = strFile2Get & "0"
End If

strFile2Get = strFile2Get & DatePart("d",Date)

'The following code generates the file name on the FTP server you want to get
strFile2Get = "Data" & strFile2Get & ".csv"

'The follow lines of code generate the FTP script file on the fly,
'because the get file name changes every day

strFTPScriptFileName = strLocalFolderName & "\FTPScript.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If (objFSO.FileExists(strFTPScriptFileName)) Then
    objFSO.DeleteFile (strFTPScriptFileName)
End If

Set objMyFile = objFSO.CreateTextFile(strFTPScriptFileName, True)
objMyFile.WriteLine ("open " & strFTPServerName)
objMyFile.WriteLine (strLoginID)
objMyFile.WriteLine (strPassword)
objMyFile.WriteLine ("cd " & strFTPServerFolder)
objMyFile.WriteLine ("ascii")
objMyFile.WriteLine ("lcd " & strLocalFolderName)
objMyFile.WriteLine ("get " & strFile2Get)
objMyFile.WriteLine ("bye")
objMyFile.Close
Set objFSO = Nothing
Set objMyFile = Nothing

'The following code executes the FTP script. It creates a Shell
'object and run FTP program on top of it.
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run ("ftp -s:" & chr(34) & strFTPScriptFileName & chr(34))
Set objShell = Nothing

结论

本篇中,我主要介绍了VBScript 并提供了两个实例。希望它们能够给予你获得起步的充分技术。请继续关注我的关于SQL Server 自动化管理的更多文章。

<!-- end entry -->

<!-- google_ad_client = "pub-2416224910262877"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; google_ad_channel = ""; // -->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值