Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Справка Съхранени процедури за всички бази данни в сървъра

Този въпрос вече е задаван няколко пъти на SO, но интересното е, че изглежда няма консенсус относно най-добрия отговор. И така, ето обобщение на основните опции, предложени от различни хора (без специален ред):

  1. Поставете го в главната база данни с sp_ префикс, така че SQL Server първо да го търси там
  2. Поставете го в базата данни на модела, така че автоматично да се добавя към всички нови бази данни
  3. Създайте база данни само за „глобални“ процедури (и други обекти) и ги извикайте, като използвате именуване от три части
  4. Като 3, но създайте синоними в други бази данни, така че да не се нуждаете от именуване от три части
  5. Използвайте търговски или самостоятелно разработени инструменти за управление на внедряването в множество бази данни
  6. Както 5, но внедряване в една база данни, след това diff базите данни и приложете diff скрипта за внедряване в други бази данни

Според мен 1 не е начинаещ, защото Microsoft изрично казва не трябва да създавате обекти в основната база данни. 2 звучи добре, но на практика базите данни се възстановяват или копират по-често, отколкото се създават от нулата (YMMV), така че използването на модел е ненадеждно.

3 и 4 са добри за таблици и изгледи, но контекстът на изпълнение може да бъде проблем за съхранените процедури и функции. Но това зависи от логиката в процедурите и може да е работещо във вашия случай.

Но всички 1-4 имат потенциалния проблем, че ако имате само един обект, имате само една версия на този обект и често е полезно да имате различни версии, налични в различни DB, за тестване или просто за различни клиенти.

5 и 6 са вариации на една и съща тема и аз лично намирам, че това е най-добрият подход, защото внедряването е проблем, който така или иначе трябва да решите, така че можете да го направите и да се уверите, че разполагате със знанията, инструментите и процесите за да можете да внедрявате код чисто и бързо във всяка база данни по контролиран, автоматизиран начин.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между интегрирана сигурност =истинска и интегрирана сигурност =SSPI?

  2. Какви са предимствата на MERGE пред простото IF EXISTS?

  3. Съобщение 8672, ниво 16, състояние 1, ред 1 Операторът MERGE се опита да АКТУАЛИЗИРА или ИЗТРИВА същия ред повече от веднъж

  4. Проблеми с T-SQL TRY CATCH?

  5. Докато цикъл в SQL Server 2008 итерация през диапазон от дати и след това INSERT