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

Uložené procedury/schéma DB v řízení zdroje

Zvolili jsme skriptování všeho, a to včetně všech uložených procedur a změn schématu. Nejsou nutné žádné nástroje wysiwyg a žádné efektní „synchronizační“ programy.

Změny schématu jsou snadné, vše, co musíte udělat, je vytvořit a udržovat jeden soubor pro danou verzi, včetně všech změn schématu a dat. To se stane vaším převodním skriptem z verze x na x+1. Poté jej můžete spustit s produkční zálohou a integrovat ji do svého „denního sestavení“, abyste ověřili, že funguje bez chyb. Všimněte si, že je důležité neměnit ani nemazat již zapsané schéma / sql načítání dat, protože můžete skončit rozbitím jakéhokoli SQL zapsaného později.

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

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

Pro uložené procedury volíme jeden soubor na sproc a používá formulář drop/create. Všechny uložené procedury jsou znovu vytvořeny při nasazení. Nevýhodou je, že pokud byla změna provedena mimo kontrolu zdroje, změna se ztratí. Zároveň to platí pro jakýkoli kód, ale váš DBA'a si toho musí být vědom. To skutečně zastaví lidi mimo tým, aby shazovali vaše uložené procedury, protože jejich změny se při upgradu ztratí.

Při použití serveru SQL Server vypadá syntaxe takto:

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  

Jediné, co zbývá udělat, je napsat obslužný program, který shromáždí všechny jednotlivé soubory a vytvoří nový soubor s celou sadou aktualizací (jako jediný skript). Udělejte to tak, že nejprve přidáte změny schématu a poté zopakujete strukturu adresářů a zahrnete všechny soubory uložených procedur.

Jako výhodu skriptování všeho se stanete mnohem lepšími ve čtení a psaní SQL. Můžete také celý tento proces propracovat, ale toto je základní formát, jak ovládat zdrojové kódy všech SQL bez jakéhokoli speciálního softwaru.

dodatek:Rick má pravdu, že s DROP/CREATE ztratíte oprávnění k uloženým procedurám, takže možná budete muset napsat další skript, který znovu povolí konkrétní oprávnění. Tento skript oprávnění bude spuštěn jako poslední. Naše zkušenosti objevily více problémů se sémantikou ALTER veršů DROP/CREATE. YMMV



  1. Platné kontroly data v Oracle

  2. Korupce MS Access, část 2:Nejlepší postupy pro prevenci a obnovu

  3. Optimální parametr chunksize v pandas.DataFrame.to_sql

  4. Automatické načítání výsledků načítá stále stejné výsledky