sql >> Databáze >  >> RDS >> Sqlserver

Odkaz Uložené procedury pro všechny databáze na serveru

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í):

  1. Vložte jej do hlavní databáze s sp_ prefix, aby jej tam SQL Server hledal jako první
  2. Vložte jej do modelové databáze, aby byl automaticky přidán do všech nových databází
  3. Vytvořte databázi pouze pro „globální“ procedury (a další objekty) a volejte je pomocí třídílného pojmenování.
  4. Jako 3, ale vytvořte synonyma v jiných databázích, abyste nepotřebovali třídílné pojmenování
  5. Používejte komerční nebo vlastní nástroje ke správě nasazení do více databází
  6. 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.



  1. Vnořené třídy - CustomRowMapper !! Už to není problém!! - Část 1

  2. Jak vrátit počet řádků ve výsledku dotazu na serveru SQL Server

  3. Součet, Prům, Max, Min, Počet hodnot NULL

  4. 15 užitečných tipů pro ladění a optimalizaci výkonu MySQL/MariaDB