首页 > 解决方案 > 如何从 .net 运行长 SQL 脚本?

问题描述

我正在编写一个工具来自动化一些 dba 任务。例如,Ola Hallengren ( https://ola.hallengren.com/ ) 有一些出色的免费维护解决方案,而 Brent Ozar 有一个令人惊叹的 First Responder 工具包,DBA 经常为几乎所有雇用他们的客户安装和运行该工具包。

ExecuteNonQuery()我想自动执行此操作,但遇到的问题是我想以编程方式运行这些脚本,以便用户可以通过我的应用程序执行所有操作CommandText,但它们远大于SqlCommand.

在这一点上,我最好的想法是将脚本分成 8k 以下的块,并根据最近的“GO”语句在 8k 标记之前的位置来执行,然后以这种方式运行多个语句。

这是我最好的选择,还是有更好的方法?我很高兴使用 ADO.net、SMO 或任何其他可以处理此问题的框架(如果有)来执行此操作。

编辑:所以我的想法甚至行不通,因为 GO 命令之间有超过 8k 的批次。

标签: c#sql-server

解决方案


你能利用存储过程吗?

ExecuteNonQuery()然后,您可以通过简单地调用应用程序中的过程名称来避免遇到任何类型的字符限制。


推荐阅读