我有许多脚本文件要从客户端c#代码在远程sql server数据库上执行。需要以相同的顺序在各种服务器上执行相同的脚本文件。
例如,有以下几点:
文件 - " file1.sql"," file2.sql"," file3.sql" &安培;
数据库服务器 - " server1"," server2"," server3" (这将是100左右)
数据库 - " testdb"存在于每个数据库服务器上
然后我需要执行file1.sql然后file2.sql,然后在server1,server2和server3上的每个testdb数据库上并行执行file3.sql。
由于我想在所有服务器上并行执行脚本,所以我打算使用任务并行库的Parallel.for循环来创建线程并通过c#代码在数据库服务器上并行执行。 我打算使用smo对象从c#代码执行sql server脚本。
请告知我是否认为使用tpl库从c#代码在sql server上执行脚本是否有意义,或者是否有其他更好的方法可以遵循。
生产中存在的一个重要事实是,将有大约100个数据库(数据库服务器)。
感谢所有回复和建议。
感谢。
更多信息已添加: 我认为tpl的Task类使用线程池线程,因此如果要创建100个线程以便在100个数据库上执行,那么它可能是一个问题,因为它可能使用所有线程池线程(线程池通常有25个线程)和服务器可能会被阻塞。此外,由于线程池线程数量有限,并且对于长时间运行的任务使用线程池线程不是一个好的选择,那么我们是否需要实现自己的实现来管理线程?
答案 0 :(得分:0)
Tpl是解决这个问题的好方法。另一种可能的方法是使用powershell进行工作。我提出PowerShell的唯一原因是PowerShell脚本可以更灵活地维护和执行这类事情。看看at this discussion。但是在使用TPL的C#中做这件事并没有错。