Tato otázka již byla na SO položena několikrát, ale je zajímavé, že se zdá, že neexistuje shoda ohledně nejlepší odpovědi. Zde je tedy shrnutí hlavních možností, které různí lidé navrhli (bez zvláštního pořadí):
- Vložte jej do hlavní databáze s
sp_
prefix, aby jej tam SQL Server hledal jako první - Vložte jej do modelové databáze, aby byl automaticky přidán do všech nových databází
- Vytvořte databázi pouze pro „globální“ procedury (a další objekty) a volejte je pomocí třídílného pojmenování.
- Jako 3, ale vytvořte synonyma v jiných databázích, abyste nepotřebovali třídílné pojmenování
- Používejte komerční nebo vlastní nástroje ke správě nasazení do více databází
- Jako 5, ale nasazení do jedné databáze, poté
diff
databází a použít skript diff k nasazení do jiných databází
Podle mého názoru je 1 nespouštěcí, protože Microsoft explicitně říká neměli byste vytvářet objekty v hlavní databázi. 2 zní dobře, ale v praxi se databáze obnovují nebo kopírují častěji než vytvořené od začátku (YMMV), takže použití modelu je nespolehlivé.
3 a 4 jsou dobré pro tabulky a pohledy, ale kontext provádění může být problémem pro uložené procedury a funkce. Ale to závisí na logice v postupech a ve vašem případě to může být funkční.
Ale všechny 1-4 mají potenciální problém, že pokud máte pouze jeden objekt, máte pouze jednu verzi tohoto objektu a často je užitečné mít různé verze dostupné v různých DB, pro testování nebo jen pro různé zákazníky.
5 a 6 jsou variace na stejné téma a osobně to považuji za nejlepší přístup, protože nasazení je problém, který stejně musíte vyřešit, takže to můžete udělat a ujistit se, že máte znalosti, nástroje a procesy. aby bylo možné nasadit kód čistě a rychle do jakékoli databáze kontrolovaným a automatizovaným způsobem.