Есть ли замена для Transact-SQL? - PullRequest
       4

Есть ли замена для Transact-SQL?

11 голосов
/ 21 февраля 2010

Впервые за многие годы я занимался программированием на T-SQL в SQL Server 2008 и забыл, насколько плох этот язык на самом деле:

  • Контроль потока (все начало / конец) кажется неуклюжим
  • Плохая обработка исключений. Исключения не всплывают так же, как на любом другом языке. Нет повторного броска, если вы не закодируете его самостоятельно, и функция raiserror даже не написана правильно (это вызвало у меня некоторые головные боли!)
  • Плохая обработка строк
  • Единственным типом последовательности является таблица. Мне пришлось написать функцию для разделения строки на основе разделителя и сохранить ее в таблице, в которой были строковые части вместе со значением, указывающим на позицию в последовательности.
  • Если вам нужно выполнить поиск в сохраненном процессе, тогда манипулирование результатами является болезненным. Вы должны либо использовать курсоры, либо соединить цикл while с вложенным поиском, если результаты содержат какой-то столбец порядка

Я понимаю, что могу кодировать свои хранимые процедуры с помощью C #, но для этого потребуется разрешение сервера на разрешение функций CLR, что на моем рабочем месте недоступно.

Кто-нибудь знает, есть ли какие-либо альтернативы T-SQL в SQL Server или есть какие-либо планы по внедрению чего-либо. Конечно, должна быть более современная альтернатива ...

PS: Это не предназначено для того, чтобы начать пламенную войну, мне действительно интересно, какие есть варианты.

Ответы [ 3 ]

8 голосов
/ 21 февраля 2010

В T-SQL нет ничего плохого; он выполняет работу, для которой он был предназначен (за исключением, возможно, добавления структур потоков управления, но я отвлекся!).

Возможно, посмотрите на LINQ ? Вы можете написать CLR хранимых процедур , но я не рекомендую этого, если только это не для какой-то функции, которая отсутствует (или тяжелая обработка строк).

3 голосов
/ 21 февраля 2010

Все остальные языки хранимых процедур базы данных (PL / SQL, SQL / PSM) имеют примерно одинаковые проблемы. Лично я думаю, что эти языки в точности подходят для того, для чего они предназначены - их лучше всего использовать для выполнения логики, управляемой данными, особенно если вы хотите использовать это для нескольких приложений.

Так что я думаю, что мой встречный вопрос к вам: почему вы хотите, чтобы ваша программа работала как часть процесса сервера базы данных? Разве то, что вы пытаетесь сделать лучше, не решается на уровне приложений или промежуточного программного обеспечения? Там вы можете взять любой язык или инструмент для обработки данных по вашему выбору.

2 голосов
/ 21 февраля 2010

С моей точки зрения, единственная альтернатива T-SQL в SQL Server - НЕ использовать SQL Server

В зависимости от вашей точки обработки жала с разделителем, Откуда эти строки? Вы можете попробовать службы интеграции и «пакеты ssis» для преобразования данных из одного в другой. Также есть хороший способ получить доступ к данным, отличным от SQL, через Linked Serves,

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