65.9K
CodeProject 正在变化。 阅读更多。
Home

生成 osql 批处理脚本

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (10投票s)

2005 年 11 月 9 日

CPOL

3分钟阅读

viewsIcon

122197

downloadIcon

4129

本文介绍了我编写的用于生成可执行 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 Usernamestring 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 - 添加了排序功能。
© . All rights reserved.