SQL Server асинхронное выполнение? - PullRequest
0 голосов
/ 18 марта 2011

Я ищу способ, позволяющий моему приложению C # (4.0) отправлять данные в экземпляр SQL Server 2008 асинхронно.Мне нравится то, что я увидел на http://nayyeri.net/asynchronous-command-execution-in-net-2-0, но это не совсем то, что я ищу.

У меня есть такой код:

// myDataTable is a .NET DataTable object
SqlCommand sc= new SqlCommand("dbo.ExtBegin", conn);
SqlParameter param1 = sc.Parameters.AddWithValue("@param1", "a");
SqlParameter param2 = sc.Parameters.AddWithValue("@param2", "b");
SqlParameter param3 = sc.Parameters.AddWithValue("@param3", myDataTable);
param3.SqlDbType = SqlDbType.Structured;
param3.TypeName = "dbo.MyTableType";
int execState = sc.ExecuteNonQuery();

И поскольку myDataTable потенциально большой, я не хочу, чтобы консольное приложение зависало, пока оно отправляет данные на сервер, если оно есть6 больших нагрузок, я хочу, чтобы все они работали одновременно, без блокировки в консольном приложении.Я не хочу посылать серийно.

Все идеи оценены, спасибо!

Ответы [ 4 ]

2 голосов
/ 18 марта 2011

Но что делает dbo.ExtBegin?Все зависит от этого, так как вызовы могут сериализоваться при блокировках в базе данных (в лучшем случае) или, в худшем случае, вы можете получить неверные результаты, если процедура не рассчитана на конкретность.

0 голосов
/ 18 марта 2011

Моей первой мыслью было бы создать новый поток для вставок и заставить основной поток проверять выполнение созданного потока с объектами AutoResetEvent, TimerCallback и Timer.

Я делаю это в Silverlight все время.

0 голосов
/ 18 марта 2011

Взгляните на использование Активация компонента Service Broker .Это позволит вам вызвать сохраненный процесс и запустить его в своем собственном потоке, почему вы продолжаете в текущем потоке.

Вот отличная статья , в которой рассказывается, как это сделать.

0 голосов
/ 18 марта 2011

Создайте поток и выполните запрос в этом потоке, убедитесь, что у вас нет последующих вызовов базы данных, которые могли бы вызвать состояние гонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...