Что лучший метод является мимоходом большим количеством параметров в SQL Server

*.example.net не поймают example.net. Однако, как вы упоминаете, если вы пингуете www.example.net, он попадет на CNAME.

К сожалению, вы не можете иметь CNAME на example.net, потому что CNAME не разрешено сосуществовать с любыми другими типами записей, а для example.net у вас по крайней мере будут записи типа NS (которые указывают ваши серверы имен).

Один из способов обойти это, вместо того, чтобы использовать ddns.net - это использовать провайдера, у которого есть API, и напрямую обновить запись A для example.net. Одним из таких провайдеров может быть Cloudflare , который предоставляет DNS-хостинг бесплатно. Существует множество из руководств о том, как использовать их в качестве динамического DNS.

7
задан IAdapter 8 May 2009 в 19:56
поделиться

5 ответов

Обработка XML очень удобна для обработки большого количества параметров. Вы можете легко передать свои параметры в XML, а затем обработать XML, чтобы получить свои значения. Еще лучше, если ваши данные уже .Net.

например

DECLARE @WidgetsIds xml
SET @WidgetsIds ='<Widgets><id>3</id><id>6</id><id>15</id></Widgets >' 

SELECT
ParamValues.ID.value('.','VARCHAR(20)')
FROM @Widgets.nodes('/widgets/id') as ParamValues(ID) 

Это должно вернуть 3 строки: 3, 6, 15. Его легко открыть, чтобы вытащить нужные значения и манипулировать ими.

4
ответ дан 6 December 2019 в 23:13
поделиться

Если вы можете выполнить обновление до SQL Server 2008, то именно для этой цели есть новая функция, называемая табличным параметром. См. Об этом раздел электронной документации .

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

В .NET вы можете просто использовать экземпляр DataTable и передавать ему произвольное количество строк внутри этой таблицы данных.

Marc

3
ответ дан 6 December 2019 в 23:13
поделиться

Сколько параметров вы считаете «большим числом»? Кроме того, почему у хранимой процедуры так много параметров? Похоже, будет интересно протестировать.

Как код, вызывающий хранимую процедуру, получит данные, которые ему необходимо передать в параметрах? Если данные уже доступны в XML, то XML может быть хорошим способом их передачи. Если данные уже доступны в виде отдельных переменных, лучше использовать объекты Parameters.

Обратите внимание, что в SQL Server 2008 у вас есть возможность отправлять DataTable как значение параметра типа TABLE.


РЕДАКТИРОВАТЬ: Простой способ настройки параметров

Хотя я считаю, что DataSets используются слишком часто и злоупотребляют, Ниже приводится процедура, которая настроит объекты параметров хранимых процедур и значительно упростит вызов хранимых процедур со многими параметрами:

  1. Создайте новый DataSet, используя «Добавить новый элемент» и выбрав DataSet. Назовите DataSet как хотите.
  2. Просмотрите Server Explorer, если вы еще не просматривали его
  3. Добавьте соединение с вашей базой данных, если его еще нет
  4. Расширяйте соединение, пока не найдете свою хранимую процедуру
  5. Перетащите хранимую процедуру на поверхность конструктора

. Это создаст TableAdapter с методом на нем для вызова хранимой процедуры. Метод зависит от объектов SqlParameter, которые инфраструктура уже создала. Метод примет параметры SP, переданные в качестве параметров вызова метода, и будет использовать параметры вызова для заполнения параметров SP.

2
ответ дан 6 December 2019 в 23:13
поделиться

Хорошо, это, скорее всего, будет отвергнуто, но ... Только не проходите так много параметры. Вместо того, чтобы пытаться найти способ сделать что-то, что по своей сути сложно в языке, возможно, поймете, что это способ языка сказать вам, что вам нужно изменить то, что вы делаете. Подобно тому, как многие насекомые используют цвет для обозначения «не ешьте», когда вы обнаруживаете, что делаете что-то базовое, для выполнения которого требуется много обручей, возможно, вам нужно переосмыслить то, что вы делаете.

В частности, Думаю, вам стоит попытаться выяснить, почему хранимой процедуре нужно столько параметров; можете ли вы разложить это на набор более мелких и простых хранимых процедур? Может быть, если они будут общаться через временные таблицы, вы сможете получить тот же эффект, но с меньшими затратами.

2
ответ дан 6 December 2019 в 23:13
поделиться

В выпуске журнала SQL Server Magazine за февраль 2009 г. есть отличная статья об использовании массивов (Дополнительные параметры для обработки массивов как входных данных). В статье описывается использование UDF разделения среды CLR. Это работает с SQL 2005, поскольку он имеет интеграцию со средой CLR. Слишком много кода, чтобы я мог размещать здесь и объяснять, но если у вас есть доступ к веб-сайту журнала, я рекомендую загрузить их функцию для этого. Это быстро и элегантно.

0
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: