c# - 如何从 .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 的批次。
解决方案
你能利用存储过程吗?
ExecuteNonQuery()
然后,您可以通过简单地调用应用程序中的过程名称来避免遇到任何类型的字符限制。
推荐阅读
- javascript - 使用 react-bootstrap 未显示模态
- odoo - 未使用不同类型触发的更改
- math - 使用角度值将 2D 矢量转换为 3D
- odata - 如何使用类似于 JSON 格式的 Avro 的 oData 接口选项来公开数据
- python - 基于排除关系中的项目的 Sqlalchemy 查询
- doctrine - 在 symfony 4 上为 UserProvider:__construct 传递参数
- .net - 在 TFS webpack.optimize.UglifyJsPlugin 中构建 .Net Core Angular 应用程序的问题已被删除错误
- grails - 如果用户已经登录,如何跳过登录页面
- apollo - 阿波罗服务器 RDS 和 aws lambda
- javascript - 使用jquery在列表项单击上删除和添加一个类?