SQL Server 2000Windows VistaWindows 2003Visual Studio 2008.NET 3.0ADO.NETWindows 2000高级Windows XP.NET 2.0.NET 3.5SQL Server 2005C# 2.0初学者中级Visual StudioSQL ServerSQLWindows.NETC#
检查 SQL Server 存储过程/视图/函数的有效性(更新)






4.22/5 (9投票s)
用于检查 SQL Server 数据库中对象有效性的命令行工具。
引言
这是 IPC2000 发布的 代码的更新版本。 已进行以下更改
- 已删除对企业库的引用,从而可以在指定连接字符串时提供更大的灵活性。 可以在命令行上指定连接字符串和详细级别。
- 输出更“适合电子表格”,使用可复制/粘贴到 Excel 中的制表符分隔输出
- 引入了对 SQL 2005 的支持。 SQL 2005 中用户与模式的分离需要略有不同的 SQL 语句。
- 验证逻辑已移至单独的类,允许在另一个项目中引用/使用。 这对于包含为 NUnit 测试特别有用。
背景
请参考 这篇文章,了解有关验证的更多背景信息。 这只是该部分内容的改进版本。
Using the Code
控制台可执行文件可以运行,指定 /c:<连接 字符串>
参数以及 /v:<详细级别>
参数。 详细级别的值为
- 安静:专为电子表格设计,无效对象的制表符分隔列表
- 正常(默认):包括一些正在发生的事情的描述。 检测到的 SQL Server 版本以及已处理的对象和对象失败的摘要
- 详细:代码将列出它正在处理的每个对象
更新
添加了一个新的开关 /x
,要求程序实际运行它认为安全的任何过程、函数、视图。 如果对象的文本中出现 CREATE
、DROP
、INSERT
、UPDATE
、DELETE
或 EXEC
/EXECUTE
,它将继续,否则,它将为它找到的每个参数添加一个虚拟值并执行该对象。 由于逻辑并不完美(存储过程可以调用做坏事的函数),所以默认情况下会关闭它,但如果使用最佳实践对系统进行编码,启用它通常是安全的。 此功能背后的测试有限 - 如果您发现问题,请在下面评论,我将尽快查看。
您也可以将可执行文件直接引用到 NUnit 中并运行相应的方法。 这是一个 C# 测试方法的示例
[TestFixture]
public class DatabaseValidation
{
[Test]
public void CheckForDatabaseCompilationProblems()
{
Assert.IsTrue(
DatabaseValidator.Validator.DatabaseIsValid(
ConfigurationManager.ConnectionStrings
[MyConnectionString].ConnectionString,
DatabaseValidator.Verbosity.Normal),
"Invalid objects found in the database - Run SqlValidator");
}
}
历史
- 2008-05-02:初始发布