Вы можете использовать ISNULL и NULLIF также в этом случае: ниже код должен работать:
CREATE PROCEDURE spTest @Name varchar(20) = '', @Address varchar(100) = '', @City varchar(50) = '', @Pin varchar(50) = '' AS SET @Name=NULLIF(@Name,'') SET @Address=NULLIF(@Address,'') SET @City=NULLIF(@City,'') SET @Pin=NULLIF(@Pin,'') SELECT * FROM Test_Table WHERE Name = ISNULL(@Name,Name) AND Address = ISNULL(@Address,Address) AND City = ISNULL(@City,City) AND Pin = ISNULL(@Pin,Pin) GO
Mac OS X имеет средство песочницы под кодовым названием Ремня безопасности. Общедоступный API для него документируется в песочницу (7), sandbox_init (3), и связанные страницы руководства. Общедоступный API несколько ограничен, но само средство очень мощно. В то время как общедоступный API только позволяет Вам выбрать из некоторых предопределенных песочниц (например, основанные на сокетах сети “All являются prohibited”), можно также использовать более мощную конкретную реализацию, которая позволяет Вам определять точно, какие ресурсы операционной системы доступны через подобный Схеме язык. Например, вот выборка песочницы, используемой для portmap:
(allow process-exec (regex #"^/usr/sbin/portmap$"))
(allow file-read-data file-read-metadata (regex
#"^/etc"
#"^/usr/lib/.*\.dylib$"
#"^/var"
#"^/private/var/db/dyld/"
#"^/dev/urandom$"))
(allow file-write-data (regex
#"^/dev/dtracehelper$"))
Вы видите много песочниц, используемых системой в/usr/share/sandbox. Легко экспериментировать с песочницами при помощи должностного лица песочницы (1) команда.
Для Windows, можно хотеть взглянуть на доклад David LeBlanc’s “Practical Sandboxing”, сделанный в Black Hat США 2007 . Windows не имеет никакой встроенной технологии игры в песочнице по сути, таким образом, методы описали, усиливают неполный механизм, начатый с Windows 2000 под названием БОЛЕЕ БЕЗОПАСНЫЙ. При помощи ограниченных маркеров можно создать процесс, который имеет ограниченный доступ к ресурсам операционной системы.
Для Linux, Вы могли бы исследовать сложный механизм SELinux: SELinux домой , ПРАКТИЧЕСКОЕ РУКОВОДСТВО . Это используется Red Hat, например, для укрепления некоторых системных служб в некоторых их продуктах.
Для Windows в Google Chrome существует песочница. Можно хотеть исследовать его. Это использует либеральную подобную BSD лицензию.
Для Linux был бы старый добрый chroot или более сложен http://plash.beasts.org/wiki/ .
OS X, так как Leopard имеет некоторую подобную SELinux защиту в наличии.
Сайт codepad.prg имеет пользу ["приблизительно" 111] страница о том, как они безопасно позволяют выполнение любых фрагментов кода..
Выполнение кода обрабатывается супервизором на основе geordi. Стратегия состоит в том, чтобы выполнить все под ptrace со многими системными вызовами, запрещенными или проигнорированными. Компиляторы и заключительные исполняемые файлы оба выполняются в chroot тюрьме со строгими пределами ресурса. Супервизор записан в Haskell.
, Когда Ваше приложение является удаленным выполнением кода, необходимо ожидать проблемы безопасности. Вместо того, чтобы полагаться просто на chroot и ptrace супервизор, я принял некоторые дополнительные меры предосторожности:
супервизор обрабатывает работавший виртуальные машины, которые являются firewalled, таким образом, что они неспособны к устанавливанию исходящих связей.
машины, которые выполняют виртуальные машины, также в большой степени firewalled, и восстановлены из своих исходных изображений периодически.
На окнах (2000 и позже) можно использовать объекты Job ограничить процессы.
FreeBSD имеет определенное понятие тюрьмы , и Солярис имеет контейнеры . В зависимости от того, что Вы ищете, они могут помочь.
chroot тюрьмы могут помочь ограничить то, что приложение может сделать (хотя любое приложение с полномочиями пользователя root может выйти из тюрьмы), и они доступны на большей части UNIXen, включая OS X.
Что касается Windows, я не уверен. Если бы был простой способ поиграть в песочнице Приложение Windows, большинство из них было бы намного более безопасным к настоящему времени, я уверен.
Если Вы действительно хотите технику, которая будет работать со всеми этими платформами, в противоположность разному решению для каждой платформы, то я думаю, что Ваш единственный ответ должен настроить виртуальную машину для каждой тестовой среды. Можно восстановить назад к снимку в любое время.
Другое большое преимущество использования виртуализации состоит в том, что у Вас могут быть все тестовые среды с их гостевыми операционными системами все на том же поле.
Для Linux, существует AppArmor. К сожалению, проект находится несколько на паузе.
Другая альтернатива игры в песочнице VServer, который использует виртуализацию.
Я не эксперт по теме, но я думаю, что стандартный ответ для Linux должен определить политику SeLinux с правильными возможностями процесса.
Обычно любой виртуальный частный сервер подойдет:
Linux VServer http://linux-vserver.org/Welcome_to_Linux-VServer.org
Parallels Virtuozzo Containers http://www.parallels.com/products/pvc/
и, как уже упоминалось, FreeBSD и Solaris имеют собственные реализации.
О. на самом деле я заметил, что вы просите его работать на любой ОС. Ну, это может быть немного сложнее, так как я думаю, что меньше усилий - это просто повторно использовать виртуальную машину, которая может поддерживать некоторый уровень песочницы, например: