ApexSQLScript - отличный инструмент для создания сценариев для всей базы данных - вы можете затем включить это в систему контроля версий и управлять изменениями.
Я также обнаружил, что последовательное документирование sprocs позволяет вам извлекать информацию о них, используя данные об исходном коде в sys.sql_modules - вы можете использовать теги или что угодно, чтобы помочь подсистемам документов.
Кроме того, используйте схемы (или даже несколько баз данных) - это действительно поможет разделить вашу базу данных на логические единицы и указать на архитектурные проблемы.
Что касается большого кода, я недавно обнаружил, что функция CTE SQL2005 очень полезна для управления кодом с большим количеством вложенных запросов (даже не рекурсивных). Вместо того, чтобы управлять множеством вложений и отступов, CTE могут быть объявлены и собраны, а затем использованы в последнем утверждении. Это также помогает в рефакторинге, поскольку кажется, что намного проще удалить избыточные вложенные запросы и столбцы.
Хранимые Procs и UDF имеют жизненно важное значение для управления большой базой кода и устранения темных углов. Я не нашел, что представления являются чрезвычайно полезными, потому что они не параметризуемы (в этих случаях могут использоваться пользовательские функции, если наборы результатов невелики).