Мешать SSMS писать сценарий SPS с помощью sp_executesql?

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

Рассматривают многоярусное заявление и требования/средства проверки каждого слоя. Средний слой, Объект, является тем, который, кажется, подлежит дебатам здесь.

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

  • Объект
    ?

  • ASP.NET/Windows Forms
    защищает состояние формы (не объект) использование стандартных программ блока проверки допустимости и/или управляет без исключения использования (winforms не поставлются с блоками проверки допустимости, но существует превосходный ряд в msdn , описывающем, как реализовать их )

, Говорят, что у Вас есть таблица со списком гостиничных номеров, и каждая строка имеет столбец для количества кроватей, названных 'кроватями'. Самый разумный тип данных для того столбца является неподписанным маленьким integer*. У Вас также есть простой объект OLE с Int16* свойство под названием 'Кровати'. Проблема - то, что можно придерживаться-4555 в Int16, но когда Вы идете для сохранения данных к базе данных, Вы собираетесь получить Исключение. Который прекрасен - моей базе данных нельзя позволить сказать, что гостиничный номер имеет меньше, чем нулевые кровати, потому что гостиничный номер не может иметь меньше, чем нулевые кровати.

*, Если Ваша база данных может представить его, но позволять нам принять его, может
*, я знаю, что можно просто использовать ushort в C#, но в целях этого примера, давайте предположим, что Вы не можете

существует некоторый беспорядок относительно того, должны ли объекты представить Ваше предприятие, или должны ли они представить состояние Вашей формы. Конечно, в ASP.NET и Windows Forms, форма совершенно способна к обработке и проверке ее собственного состояния. Если у Вас есть текстовое поле на форме ASP.NET, которая будет используемой для заполнения того же самого поля Int16, Вы, вероятно, поместили управление RangeValidator на своей странице, которая тестирует вход, прежде чем это будет присвоено Вашему объекту. Это препятствует тому, чтобы Вы ввели значение меньше, чем нуль, и вероятно препятствует тому, чтобы Вы ввели значение, больше, чем, скажем, 30, которого, надо надеяться, было бы достаточно для питания худший наполненный блохой хостел, который можно вообразить. На обратной передаче Вы, вероятно, проверили бы свойство IsValid страницы прежде здание Ваш объект, таким образом, предотвращение Вашего объекта от когда-либо представления меньше, чем нулевые кровати и предотвращение Вашего метода set от того, чтобы когда-нибудь быть названным со значением, которое это не должно содержать.

, Но Ваш объект все еще способны из представления меньше, чем нулевые кровати, и снова, если Вы использовали объект в сценарии, не включающем слои, которым интегрировали проверку в них (Ваша форма и Ваш DB), Вы являетесь неудачливыми.

, Почему Вы когда-либо были бы в этом сценарии? Это должно быть симпатичное исключительный стечение обстоятельств! Ваш метод set поэтому должен выдать исключение, когда он получает недопустимые данные. Это никогда не должно бросаться, но это могло быть. Вы могли писать Windows Form для управления объектом заменить форму ASP.NET и забыть проверять диапазон прежде, чем заполнить объект. Вы могли использовать объект в запланированной задаче, где нет никакого взаимодействия с пользователем вообще, и который сохраняет к различному, но связанный, область базы данных, а не таблицы, на которую отображается объект. В последнем сценарии Ваш объект может ввести состояние, где это недопустимо, но Вы не будете знать, пока результаты других операций не начнут затрагиваться недопустимым значением. Если Вы проверяете на них и выдаете исключения, который является.

17
задан Tony_Henrich 12 August 2009 в 04:45
поделиться

2 ответа

Отключите опцию «Включить, ЕСЛИ НЕ СУЩЕСТВУЕТ».

Это в Инструменты..Опции, затем нажмите «Сценарии» в панели проводника всплывающего диалогового окна. параметр «ЕСЛИ НЕ СУЩЕСТВУЕТ» находится во второй группе сверху (параметры сценария объекта).

35
ответ дан 30 November 2019 в 11:44
поделиться

Редактор задач «Выполнение SQL» (страница «Общие»)

Посмотрите на параметры «QueryIsStoredProcedure» и «BypassPrepare»

2
ответ дан 30 November 2019 в 11:44
поделиться
Другие вопросы по тегам:

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