Фоновая обработка T-SQL - PullRequest
1 голос
/ 12 декабря 2008

У меня проблемы с поиском формулировки, но возможно ли предоставить SQL-запрос серверу MS SQL и получить результаты асинхронно?

Я бы хотел отправить запрос из веб-запроса, но я бы хотел, чтобы веб-процесс завершился, пока SQL-сервер продолжает обрабатывать запрос и выгружает результаты во временную таблицу, которую я могу получить позже. *

Или есть какой-то общий модификатор, который я могу добавить к запросу, чтобы он обрабатывал результаты в фоновом режиме (например, "&" в bash).

Подробнее

Я управляю сайтом, который позволяет доверенным пользователям запускать произвольные запросы на выборку для очень больших наборов данных. В настоящее время я использую Java Daemon для проверки таблицы «заданий» и запуска результатов, я просто надеялся, что может быть более нативное решение.

Ответы [ 5 ]

1 голос
/ 12 декабря 2008

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

0 голосов
/ 12 декабря 2008

Поскольку http без установления соединения, единственный способ связать поиск с запросом - это сеансы. Тогда у вас будут все эти ответы, ожидающие, пока кто-то их не затребует, и вы не сможете узнать, разорвана ли связь (которая не существует).

На веб-странице это в значительной степени используется или теряет.

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

0 голосов
/ 12 декабря 2008

Это действительно зависит от того, как вы общаетесь с БД. С ADO.NET вы можете сделать выполнение команды асинхронным. Если вы хотели сделать это за пределами какой-либо библиотеки, созданной для этого, вы можете вставить запись в таблицу заданий, а затем сделать так, чтобы SQL Agent опрашивал таблицу, а затем запускать вашу работу как хранимую процедуру или что-то в этом роде.

По всей вероятности, я полагаю, ваш веб-запрос получен asp.net, и вы можете использовать классы ADO.NET.

0 голосов
/ 12 декабря 2008

Это сложная тема, чтобы иметь возможность выполнить хранимую процедуру и затем асинхронно получить результат. На самом деле это не для слабонервных, и моей первой рекомендацией будет пересмотреть ваш дизайн и быть уверенным, что вам действительно нужно асинхронно обрабатывать ваш запрос на уровне данных.

В зависимости от того, что именно вы делаете, вам следует взглянуть на 2 технологии ... SQL Service Broker, который в основном позволяет ставить запросы в очередь и асинхронно получать ответы. Он был введен в SQL 2005 и звучит так, как будто он является лучшим выбором из того, как вы сформулировали свой вопрос.

Взгляните на учебник для разговоров с тем же брокером службы баз данных в MSDN: http://msdn.microsoft.com/en-us/library/bb839495(SQL.90).aspx

Для более длительных или более масштабных задач обработки я потенциально мог бы рассмотреть что-то вроде Biztalk или Windows Workflow. Эти инфраструктуры (они в основном одинаковые, они принадлежали одной и той же команде в MS) позволяют запускать асинхронный рабочий процесс, который может не возвращаться в течение нескольких часов, дней, недель или даже месяцев.

0 голосов
/ 12 декабря 2008

см. Этот вопрос Запуск хранимых процедур последовательно или параллельно

По сути, веб-страница начала бы работу. Задание будет выполняться асинхронно.

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