Хранимые процедуры CLR предпочтены по хранимым процедурам TSQL в SQL 2005 +?

У меня иногда возникает такая же проблема.

У меня editor.tabSize установлено значение 2 (а также editor.formatOnSave установлено значение true). Когда VSCode загружает файл, я использую параметры внизу редактора, чтобы изменить тип и размер отступа, надеясь, что что-то будет работать, но VSCode настаивает на том, что на самом деле используется размер отступа 4.

Исправить ? Перезапустите VSCode. Он должен вернуться с статусом отступа, показывающим что-то неправильное (в моем случае, 4). Для меня мне пришлось изменить настройку, а затем сохранить ее, чтобы на самом деле внести изменения, но это, вероятно, из-за моей настройки editor.formatOnSave.

Я не понял, почему это происходит, но для меня обычно, когда я редактирую вложенный объект в JS-файле. Это внезапно сделает очень странный отступ внутри объекта, хотя я работал в этом файле какое-то время, и это было отступом просто отлично.

15
задан Ash 20 January 2010 в 03:29
поделиться

9 ответов

Существуют места и для правильно написанного, хорошо продуманного T-SQL и для CLR. Если некоторая функция часто не вызывается и если она потребовала расширенных процедур в SQL Server 2000, CLR может быть опцией. Также рабочие вещи как вычисление прямо рядом с данными могут обращаться. Но решение плохих программистов путем добавления новой технологии походит на плохую идею.

15
ответ дан 1 December 2019 в 00:11
поделиться

Хранимые процедуры CLR не предназначены для замены основанных на наборе запросов. Если необходимо запросить базу данных, Вы все еще испытываете необходимость для помещения SQL в код CLR, так же, как если бы это было встроено в обычный код. Это было бы тратой усилия.

хранимые процедуры CLR для двух главного: 1) взаимодействие с ОС, такой как чтение из файла или отбрасывание сообщения в MSMQ и 2) выполнение сложных вычислений, особенно когда Вам уже записали код на языке.NET, чтобы сделать вычисление.

11
ответ дан 1 December 2019 в 00:11
поделиться

Хостинг CLR в SQL Server предназначен, чтобы дать разработчикам базы данных более гибкие опции в том, как они стремились выполнить задачи. Как другие упомянули, SQL является большим для операций и модификаций на наборы данных . Кто-либо, кто сделал обширную разработку крупного приложения со сложными бизнес-/доменными правилами, вероятно, сказал бы, что - пытающийся осуществить некоторые из этих правил с помощью чистого SQL (несколько раз в единственный макро-запрос) можно стать действительно кошмарными.

существуют только определенные задачи, с которыми лучше справляются процедурным способом или видом OO. При наличии выбора использования кода.NET для разрушения последовательности логики операции запроса могут стать легче считать и отладить. Использование CLR сохранило procs, я могу сказать, что Вы ступающий через с отладчиком действительно помогаете выполнить с тем, что происходит на уровне базы данных.

Всего один пример, мы часто используем сохраненный procs CLR здесь в качестве "шлюза" для динамических поисковых запросов. Скажите поисковый запрос, который может иметь до 30 различных поисковых параметров. Пользователи, очевидно, не используют всех 30 из них, таким образом, структура данных передала в, будет иметь 30 параметров, но главным образом DBNULL. Сторона клиента имеет никакая опция генерировать динамический оператор из очевидных соображений безопасности. Получающийся динамический оператор сгенерирован внутренне без страха перед внешними "отдельно оплачиваемыми предметами".

7
ответ дан 1 December 2019 в 00:11
поделиться

В целом Вы используете CLR, если у Вас есть что-то, что не должно взаимодействовать через интерфейс с базой данных очень. Так скажем, Вы анализируете или декодируете значение. Это легче сделать в CLR и затем возвратить значение.

Попытка сделать сложный запрос в CLR является просто не способом пойти.

BTW это не изменилось в 2008 также.

4
ответ дан 1 December 2019 в 00:11
поделиться

Учитывая то, что Вы сказали, я буду скорее Вы обучать deveopers правильно в t-SQl и базах данных в целом, чем позволяют им создавать возможно намного больше повреждения производительности, позволяя им выполнить, t-sql задачи СБРАСЫВАЮТ. Разработчики, которые не понимают использование баз данных, что как оправдание постараться не делать вещи способ, который является лучшим для производительности базы данных, потому что они хотят взять то, что они рассматривают как более легкий маршрут.

3
ответ дан 1 December 2019 в 00:11
поделиться

Я полагаю, что те два не эквивалентны... соответствуют, чтобы смело встретить друг друга.
Интеграция CLR, как предполагается, постепенно сокращает "расширенные хранимые процедуры" былого. у Нас есть некоторые из них на нашем рабочем месте... по существу блоки обработки/логики по данным SQL, которые были слишком тверды/невозможны, чтобы сделать через стандартный DB Сохраненный procedures/T SQL. Таким образом, они описали его как расширенные хранимые процедуры в C++ DLLs, который может быть вызван так же. Теперь они были постепенно сокращены, и интеграция CLR является заменой

  • Хранимые процедуры дБ: если это может быть сделано в SQL T Сохраненный procs, сделайте это.
  • Хранимые процедуры CLR: если логика слишком сложна или утомительна, чтобы сделать через SQL T..., если что-то, что будет проводить меньше строк кода CLR для занятия им (обработка строк, сложная/пользовательская сортировка или фильтрация, и т.д.) использует этот подход.
4
ответ дан 1 December 2019 в 00:11
поделиться

Кроме доступа к файловой системе (где CLR procs имеет очень явное преимущество) я использовал бы T-SQL procs. Если у Вас есть особенно сложные вычисления, Вы могли бы возможно поместить ту часть в функцию CLR и назвать это из Вашего proc (udf's то, где я нашел, что интеграция CLR действительно сияет). Затем Вы извлекаете пользу из интеграции CLR для той конкретной части Вашей задачи, но сохраняете такую большую Вашу сохраненную proc логику в DB, как Вы можете.

4
ответ дан 1 December 2019 в 00:11
поделиться

Страница SQL Server Books Online's на предмете списки эти преимущества:

  • А лучшая модель программирования. языки Платформы.NET во многих отношениях более богаты, чем Transact-SQL, предлагая конструкции и возможности, ранее не доступные разработчикам SQL Server. Разработчики могут также усилить питание Библиотеки Платформы.NET, которая обеспечивает обширный набор классов, которые могут привыкнуть к быстро и эффективно решить проблемы программирования.

  • Улучшенная безопасность. Управляемый код работает в общеязыковой среде выполнения, размещенной Механизмом базы данных. SQL Server усиливает это для обеспечения более безопасной и более безопасной альтернативы расширенным хранимым процедурам, доступным в более ранних версиях SQL Server.

  • Способность определить типы данных и агрегатные функции. Определяемые пользователем типы и определяемые пользователем агрегаты являются двумя новыми управляемыми объектами базы данных, которые разворачивают устройство хранения данных и запросы возможностей SQL Server.

  • Оптимизированная разработка через стандартизированную среду. Разработка базы данных интегрируется в будущие выпуски среды разработки Microsoft Visual Studio.NET. Разработчики используют те же инструменты для разработки и отладки объектов базы данных и сценариев, как они используют для записи среднего уровня или уровневых клиентом компонентов Платформы.NET и сервисов.

  • Потенциал для улучшенной производительности и масштабируемости. Во многих ситуациях, компиляция языка Платформы.NET и модели выполнения обеспечивают улучшенную производительность по Transact-SQL.

2
ответ дан 1 December 2019 в 00:11
поделиться

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

Однако как правило, Вы правы, что CLR procs имеет большие издержки и никогда не будет работать на операциях присвоения как T-SQL. Моя инструкция, делают все это в T-SQL, если то, в чем Вы нуждаетесь, не становится чрезмерно сложным в T-SQL. Затем попытайтесь тяжелее заставить подход T-SQL работать. :-)

CLR procs является большим и действительно имеет их место, но их использование должно быть исключением, не правилом.

2
ответ дан 1 December 2019 в 00:11
поделиться