生成 osql 批处理脚本






4.60/5 (10投票s)
本文介绍了我编写的用于生成可执行 osql 部署批处理脚本的工具。
引言
这是一个我编写的小工具,它会扫描选定的文件夹中的所有 .sql 文件,并生成一个 MS-DOS 批处理脚本,该脚本将在选定的服务器/数据库上执行这些脚本。
背景
在我的工作中,我经常编写各种存储过程、用户定义函数和视图,这些过程、函数和视图在开发服务器上执行。我通常将所有 SQL 脚本保存在带有 .sql 扩展名的文本文件中。开发完成后,这些文件必须部署到生产服务器。我发现 SQL Server 自带的 osql 实用程序在这些情况下非常方便。我所要做的就是创建一个必须与 SQL 脚本一起复制的批处理脚本。然后可以执行此批处理脚本以在指定的服务器上运行所有脚本。
但是手动创建这些批处理脚本可能有点麻烦。这就是我编写这个工具的原因。
使用代码
该项目包含一个 GUI,该 GUI 使用 OsqlScript
类来生成文件。 此类具有以下属性
string Folder
- 要扫描的文件夹的路径。string BatchFileName
- 要生成的批处理文件的名称和路径(不带 ".bat")。string Server
- 使用的 SQL Server 实例。string Database
- 要使用的数据库。bool UseIntegratedSecurity
- 指定使用 Windows 身份验证登录。string Username
和string Password
bool UseReportFile
- 指定生成的脚本将记录到报告文件。string Reportfile
- 用作报告文件的文件名和扩展名。
创建类的实例后,将其属性设置为适当的值。
要生成文件,只需调用 OsqlScript.Generate()
。
这是一个例子。
OsqlScript oscript = new OsqlScript("C:\\scripts",
"C:\\scripts\\ExecuteScripts");
oscript.Server = "MyServer";
oscript.Database = "Northwind";
oscript.UseIntegratedSecurity = true;
oscript.UseReportFile = true;
oscript.ReportFile = "Report.txt";
//generate the file
oscript.Generate();
该对象将生成指定的批处理脚本,以对文件夹中的所有 .sql 文件运行 osql 命令行实用程序。 只需在与 SQL 脚本相同的目录中执行批处理脚本即可执行它们。
排序添加
1.1 版本包含排序功能。 脚本执行排序顺序可以按字母顺序(默认),也可以基于创建日期、上次修改日期或文件名日期(对象将尝试从文件名中解析日期,例如“2002/07/09.sql”)。 为了进行排序,我调用了 Array.Sort
方法,并为每种排序方法创建了一个 IComparer
类。(顺便说一下,我认为它太棒了,.NET 中的自定义排序非常容易!)。 因此,要创建任何其他排序方法,就像创建 ICompare
对象并实现 Compare
方法一样容易。
结论
这是一个非常简单但方便的部署工具,我正在使用它,我希望其他人会发现它很有用。 欢迎提出任何改进、错误修复或建议!
历史
- 版本 1 - 于 2005 年 11 月 1 日提交。
- 版本 1.1 - 添加了排序功能。