0

我一直在拼命想弄清楚如何使用 SMO 对单个 SQL Server 实例中的多个数据库同时运行更新脚本。我们的环境有越来越多的数据库需要更新,并且一次迭代一个已经成为一个问题(太慢了)。

据我了解,SMO 不支持并发操作,我的测试已经证明了这一点。在服务器对象级别似乎有共享内存,对于 DataReader 上下文之类的东西,不断抛出诸如“阅读器已打开”之类的异常。对于我没有得到确切的例外情况,我深表歉意。我将尝试获取它们并更新此帖子。

我不是 SMO 方面的专家,老实说,我只是在摸索自己的方式。不确定我是否以正确的方式接近它,但这是必须要做的事情,否则我们的生产力将慢得像爬行一样。

那么你们会怎么做这样的事情呢?我是否在 SMO 中使用了错误的技术?我想要做的就是在单个 sql server 实例中对数据库并行执行 sql 脚本。

感谢您提供的任何帮助,丹尼尔

4

1 回答 1

0

只需使用多个 ServerConnection 对象,并用每个对象实例化多个 Server 对象。基本上,每个线程一个。它们是否都连接到同一个数据库实例并不重要。

我已经编写了一个应用程序来以这种方式记录数据库的模式。我同时运行多个“查询”(不仅是 ExecuteNonQuery(),还包括 SMO 上的其他函数),没有任何问题 - 至少直到今天。不幸的是,除了相当“基本”的东西之外,他们似乎没有太多关于 SMO 的文档。

于 2011-01-12T06:50:14.147 回答