Как и предполагали другие, вы можете поместить объекты в основную базу данных, но Microsoft явно рекомендует, чтобы вы не делали этого . Я нахожу это решение довольно рискованным в любом случае, потому что основная база данных «принадлежит» системе, а не вам, поэтому нет никаких гарантий, что она будет продолжать вести себя так же в будущем.
Вместо этого я считаю, что это в первую очередь проблема развертывания. Существует (как минимум) две стратегии, которые вы можете использовать:
- Развертывание объектов в каждой базе данных
- Развертывание их в одной «справочной» базе данных, которая используется только для общих объектов, и создание синонимов в других базах данных
Второй вариант, возможно, лучше, потому что, если ваши функции используют таблицы (например, вы используете таблицу календаря для получения учебного года, что намного проще, чем его вычисление), вам придется создавать одинаковые таблицы в каждом База данных тоже. Используя синонимы, вы должны поддерживать только один набор таблиц.
Для реального развертывания очень просто использовать сценарии для управления объектами, потому что вам просто нужен список баз данных для подключения и запуска каждого сценария DDL. Вы можете сделать это, используя пакетные файлы и SQLCMD (возможно, с переменными SQLCMD в ваших скриптах .sql), или использовать его из PowerShell или любого другого языка, который вы предпочитаете.