Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Procedury składowane/schemat DB w kontroli źródła

Decydujemy się na skryptowanie wszystkiego, w tym wszystkich procedur składowanych i zmian w schemacie. Nie są potrzebne żadne narzędzia wysiwyg ani żadne wymyślne programy do synchronizacji.

Zmiany schematu są łatwe, wystarczy utworzyć i utrzymywać jeden plik dla tej wersji, w tym wszystkie zmiany schematu i danych. To staje się Twoim skryptem konwersji z wersji x na x+1. Następnie możesz uruchomić go z kopią produkcyjną i zintegrować ją z „codzienną kompilacją”, aby sprawdzić, czy działa bez błędów. Pamiętaj, że ważne jest, aby nie zmieniać ani nie usuwać już napisanego schematu / ładowania danych sql, ponieważ możesz zepsuć każdy napisany później sql.

-- change #1234
ALTER TABLE asdf ADD COLUMN MyNewID INT
GO

-- change #5678
ALTER TABLE asdf DROP COLUMN SomeOtherID
GO

W przypadku procedur składowanych wybieramy jeden plik na spoc i używamy formularza upuść/utwórz. Wszystkie procedury składowane są odtwarzane podczas wdrażania. Minusem jest to, że jeśli zmiana została wykonana poza kontrolą źródła, zmiana zostanie utracona. Jednocześnie dotyczy to każdego kodu, ale Twoi administratorzy muszą być tego świadomi. To naprawdę powstrzymuje osoby spoza zespołu przed oszukaniem procedur składowanych, ponieważ ich zmiany zostaną utracone podczas uaktualnienia.

Używając SQL Server, składnia wygląda tak:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[usp_MyProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [usp_MyProc]
GO

CREATE PROCEDURE [usp_MyProc]
(
    @UserID INT
)
AS

SET NOCOUNT ON

-- stored procedure logic.

SET NOCOUNT OFF

GO  

Jedyne, co pozostało do zrobienia, to napisanie programu narzędziowego, który zestawia wszystkie pojedyncze pliki i tworzy nowy plik z całym zestawem aktualizacji (jako pojedynczy skrypt). Zrób to, najpierw dodając zmiany schematu, a następnie powtarzając strukturę katalogów i włączając wszystkie pliki procedur składowanych.

Jako zaletę skryptowania wszystkiego, staniesz się znacznie lepszy w czytaniu i pisaniu SQL. Możesz również uczynić cały ten proces bardziej skomplikowanym, ale jest to podstawowy format kontroli kodu źródłowego całego sql bez żadnego specjalnego oprogramowania.

Dodatek:Rick ma rację, że utracisz uprawnienia do procedur składowanych za pomocą DROP/CREATE, więc może być konieczne napisanie innego skryptu, który ponownie włączy określone uprawnienia. Ten skrypt uprawnień będzie uruchamiany jako ostatni. Nasze doświadczenie wykazało więcej problemów z semantyką ALTER wersety DROP/CREATE. MMW



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność serwera SQL i kolejność pól

  2. Wybierz saldo bieżące z kolumn debetowych w tabeli

  3. W SQL Server, jak mogę zablokować pojedynczy wiersz w sposób podobny do Oracle SELECT FOR UPDATE WAIT?

  4. Nie można zalogować się do SQL Server 2008 za pomocą narzędzia wiersza poleceń

  5. SQL Server:Baza danych utknęła w stanie przywracania