Представления и хранимые процедуры похожи на API. Они позволяют скрыть реализацию, изменения версии, обеспечить безопасность и предотвратить неудачные операции с клиентом, такие как «получить все поля из всех счетов-фактур с момента начала работы компании».
Представления и хранимые процедуры позволяют администратору базы данных изменять схему для удовлетворения требований к производительности без нарушения приложений. Возможно, данные должны быть разделены горизонтально или вертикально, разбиты на файлы, могут быть добавлены или удалены поля и т. Д. Без хранимых процедур эти изменения потребуют значительных изменений приложений.
Контролируя хранимые процедуры и представления, используемые каждым приложением, вы можете обеспечить управление версиями изменений схемы - каждое приложение увидит API базы данных, который он ожидает.
Разрешения также могут быть назначены для определенных хранимых процедур, что позволяет ограничить возможности пользователей, не предоставляя им полный доступ к таблице. Например, вы можете разрешить постоянным сотрудникам изменять только свои контактные данные в таблице сотрудников, но позволить HR сделать более радикальные изменения.
Кроме того, вы можете инкапсулировать сложные операции с интенсивным использованием данных в рамках одной проверяемой процедуры, вместо того, чтобы управлять строками строки SQL SQL в исходном коде клиента.
Выполнение хранимой процедуры также можно легко отслеживать с помощью SQL Server Profiler или с динамическими представлениями управления. Это позволяет администратору баз данных находить горячие точки и виновников для возможного ухудшения производительности.
Это не «идеально» даже близко. В развитии нет абсолютов. – zerkms
Противоположность ad-hoc DML не обязательно означает хранимые процедуры. – DavidG
Сохраненные процедуры могут быть протестированы отдельно от кода. Их можно оптимизировать с помощью кэшированных планов, что приведет к более быстрому выполнению. Они параметризованы по умолчанию, защищая вас от SQL-инъекции. В случае необходимости они могут ссылаться на другой код в вашей базе данных. Изменения в хранимых процедурах не требуют перекомпиляции кода ... – Tanner