Web design and hosting, database, cloud and social media solutions that deliver business results
  • Soluzioni aziendali
    • automazione dei processi robotici
    • Software
    • Servizi database
      • Aggiornamento del server e servizi DBA
      • Integrazione dei dati
      • Power BI
      • Servizi di Datawarehouse
    • Sito Web Design
      • Design del logo
      • Gateway di pagamento
      • Localizzazione e traduzione web
      • Ottimizzazione del sito web
      • Sicurezza del sito
      • Strumenti tecnici
    • Servizi per gli affari
      • Microsoft Azure
      • Servizi Google Cloud
      • Servizi Web Amazon
    • Microsoft Office
    • Servizi di consulenza e gestione dei social media
  • Accademia
    • Il nostro ambiente di prova
    • Imparare a usare i database
      • Le basi
      • Ottieni una query aperta
      • Piano di manutenzione di SQL Server 2008
      • Utilizzo dei dati di SQL Server
      • Utilizzo delle date di SQL Server
      • Utilizzo delle funzioni di SQL Server
      • Utilizzo di SQL Server Pivot-Unpivot
      • Strumenti
    • Imparare il web design
      • Costruire il sistema di gestione dei contenuti di Ousia
      • ASP-NET
      • CSS
      • Utilizzo di JavaScript
    • Usando i social media
      • Chiedere una recensione su Google
      • Dimensioni delle immagini dei social media
      • Modifica di un account Facebook da personale a aziendale
      • Scegliere dove concentrare lo sforzo sui social media
      • Utilizzo dei metadati per impostare le immagini dei social media
    • Imparare a usare il cloud e i servizi informatici
      • Errore dell'utilità di pianificazione 2147943645
      • Richiesta SSL e generazione di file PFX in OpenSSL Simple Steps
  • Chi Siamo
    • Carriere
      • Traduttore inglese-portoghese
      • Traduttore inglese-spagnolo
    • Portfolio
    • Squadra
      • Adrian Anandan
      • Alì Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
عربى (AR)čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

Eseguire il backup dei moduli SQL utilizzando un trigger DDL

Eseguire il backup dei moduli SQL in una tabella per mantenere le versioni precedenti o utilizzare un trigger per tenere traccia o sincronizzare le modifiche strutturali degli oggetti del database

Lavoro manuale o a tempo

Esegui lo script seguente per abilitare il backup del tuo codice SQL. Esegue il backup dei seguenti elementi in una tabella:
  • Procedura di archiviazione
  • Tutti i tipi di funzione
  • Visualizzazioni
  • Trigger
Creare un processo che richiami this con il nome del database per abilitare backup regolari. Funziona anche su più server in modo che tutto il tuo codice possa essere archiviato in un unico posto.

SQL

CREATE TABLE dbo.SQLModules([System] varchar(50) NOT NULL,[Schema] nvarchar(50) NULL,ObjectName nvarchar(200) NULL,[object_id] int NOT NULL,ChangeDate datetime NULL,[definition] nvarchar(max) NOT NULL)GOCREATE CLUSTERED INDEX CDX_SQLModules ON [dbo].[SQLModules](ChangeDate,System,object_id)GOCREATE PROC dbo.SQLModules_Backup(@DB NVARCHAR(50),@Server NVARCHAR(50)=NULL) AS BEGINDECLARE @SQL NVARCHAR(MAX)='INSERT INTO SQLModulesSELECT '''+ISNULL(@Server+'.','')+@DB+''' System,s.name,o.name,m.object_id,GETDATE() ChangeDate,m.definitionFROM '+ISNULL(@Server+'.','')+@DB+'.sys.all_sql_modules mINNER JOIN '+ISNULL(@Server+'.','')+@DB+'.sys.all_objects o ON o.object_id=m.object_idINNER JOIN '+ISNULL(@Server+'.','')+@DB+'.sys.schemas s ON s.schema_id=o.schema_idLEFT JOIN (SELECT * FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY System,object_id ORDER BY ChangeDate DESC) RowNumberFROM SQLModules) ltWHERE RowNumber=1) l ON l.object_id=m.object_id AND l.System='''+ISNULL(@Server+'.','')+@DB+'''AND m.definition COLLATE Latin1_General_CI_AS=l.definition COLLATE Latin1_General_CI_ASWHERE m.object_id>0 AND l.object_id IS NULL AND m.definition IS NOT NULL'EXEC sp_executesql  @SQLENDGO

Utilizzo di un trigger DDL

Mentre la versione manuale/programmata funziona per alcuni, altri potrebbero aver bisogno di una versione più robusta. Il codice seguente usa la funzionalità di trigger DDL introdotta in SQL Server 2005 e dispone di un'opzione di sincronizzazione facoltativa che funziona su più server, se necessario. Abbiamo utilizzato il nostro modello standard per la creazione di un database di utilità, ma può funzionare ugualmente bene nei database master o personalizzati.

SQL

CREATE TABLE [dbo].[DDLEvents]([EventDate] [datetime] NOT NULL DEFAULT (getutcdate()),[EventType] [nvarchar](64) NULL,[EventDDL] [nvarchar](max) NULL,[DatabaseName] [nvarchar](255) NULL,[SchemaName] [nvarchar](255) NULL,[ObjectName] [nvarchar](255) NULL,[HostName] [varchar](64) NULL,[IPAddress] [varchar](32) NULL,[ProgramName] [nvarchar](255) NULL,[LoginName] [nvarchar](255) NULL)

SQL Trigger

CREATE TRIGGER [Code_Watch] ON DATABASEFOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,    CREATE_TABLE, ALTER_TABLE, DROP_TABLE,    CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION,    CREATE_INDEX, ALTER_INDEX, DROP_INDEX,    CREATE_SCHEMA, DROP_SCHEMAAS BEGINSET ANSI_NULLS ON;SET ANSI_PADDING ON;SET ANSI_WARNINGS ON;SET ARITHABORT ON;SET CONCAT_NULL_YIELDS_NULL ON;SET NUMERIC_ROUNDABORT OFF;SET QUOTED_IDENTIFIER ON;DECLARE @EventData XML = EVENTDATA();DECLARE @ip VARCHAR(32) = (SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID);INSERT INTO dbo.DDLEvents(EventType,EventDDL,DatabaseName,SchemaName,ObjectName,HostName,IPAddress,ProgramName,LoginName)SELECT@EventData.value('(/EVENT_INSTANCE/EventType)[1]',   'NVARCHAR(100)'),@EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'NVARCHAR(MAX)'),DB_NAME(),@EventData.value('(/EVENT_INSTANCE/SchemaName)[1]',  'NVARCHAR(255)'),@EventData.value('(/EVENT_INSTANCE/ObjectName)[1]',  'NVARCHAR(255)'),HOST_NAME(),@ip,PROGRAM_NAME(),SUSER_SNAME();
--Optional syncronisation option, see below--DECLARE @DB NVARCHAR(MAX)=DB_NAME(),@SQL NVARCHAR(MAX)=@EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'NVARCHAR(MAX)')--EXEC {server}.{database}.dbo.SyncCode @DB,@SQL--End Optional syncronisation optionENDGOENABLE TRIGGER [Code_Watch] ON DATABASEGO

SQL Sync

CREATE PROC SyncCode(@DB NVARCHAR(MAX),@SQL NVARCHAR(MAX)) AS BEGIN   EXEC ('use '+@DB+'; exec sp_executesql N'''+@SQL+''' ')   END
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

Site Links

RSSLoginLink Cookie PolicyMappa del sito

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom

Partnered With

Le impostazioni di questo sito sono impostate per consentire tutti i cookie. Questi possono essere modificati sulla nostra pagina politica e le impostazioni dei cookie. Continuando a utilizzare questo sito l'utente accetta l'utilizzo dei cookie.
Ousia Logo
Logout
Ousia CMS Loader