Web design and hosting, database, cloud and social media solutions that deliver real business results
  • Servizi database
    • Strumenti
      • Backup del codice SQL
      • Claytabase Server Disk IOPs Calculator
      • Stampante SQL
    • Articoli tecnici
      • 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
  • Sito Web Design
    • Articoli tecnici
      • ASP-NET
      • CSS
    • isola di Wight
    • Sicurezza del sito
  • Servizi per gli affari
    • Microsoft Azure
    • Microsoft Office
  • Circa
    • Portafoglio
    • Squadra
      • Chester Copperpot
AR - عربىCS - češtinaDE - DeutschEN - EnglishES - EspañolFA - فارسیFR - FrançaisHI - हिंदीJA - 日本語PL - polskiPT - PortuguêsRU - русскийTR - TürkZH - 中国的

Un piano completo di manutenzione per SQL Server 2008

Piano di manutenzione di SQL Server in grado di eseguire il backup e il ripristino dei file di database su più server, riorganizzare o ricostruire indici dipendenti dal tempo

Ottimizzazione dei database

Scrolling CSS Diagram

Questa sezione è dedicata al mantenimento dei database ottimizzati. In questo esempio, intendiamo impostare il codice per eseguire le seguenti operazioni (vedere uno schema ruvido di come i server sono connessi);

  • Database di backup dal server live a una cartella di backup condivisa
  • Database di ri-indice
  • Uccidere tutte le connessioni e ripristinare il database sul server di reporting.
  • I server collegati verranno presto in un articolo separato
  • La spedizione del giornale sarà presto in un articolo separato

Quando si esegue il server incrociato, è necessario consentire all'account che SQL Server è in esecuzione dall'accesso al file system dei server di destinazione.

Tutto il codice SQL viene eseguito da un database di utilità e lo schema è impostato su "maint"

Ci sono molti altri articoli che abbiamo scritto qui di seguito che potrebbero interessarti.

Rimuovere un utente senza lasciare dati orfani in SQL Server

Rimuovere completamente gli utenti da SQL Server senza lasciare dati orfani

Controllo e sincronizzazione dei dati nel database incrociato utilizzando un trigger

Controllo e sincronizzazione di tabelle in database diversi, che possono avere una struttura leggermente diversa creando un trigger

Stored procedure per ricostruire o riorganizzare gli indici di database frammentati

Una stored procedure riutilizzabile che è possibile chiamare per reindicizzare qualsiasi database inserendo il nome del database.

Uno script dinamico per ripristinare il database di SQL Server da una stored procedure

Creare una stored procedure centralizzata, generica e riutilizzabile utilizzando uno script SQL dinamico in grado di ripristinare i database utilizzando una serie di parametri come parte di un piano di manutenzione più ampio

Spazio su disco e avvisi di posta elettronica di dimensione del database

Creare una stored procedure che invierà lo spazio su disco e gli avvisi di database tramite posta elettronica che è possibile allegare a un lavoro

Stored procedure per terminare tutte le connessioni al database o al server selezionato

Procedura memorizzata SQL per terminare tutte le connessioni al database o al server selezionato ad eccezione del processo che lo chiama.

Piano di manutenzione completo

Ora possiamo gestire tutti questi segmenti di codice separati con un'altra procedura che li chiamerà nell'ordine corretto, questo verrà inserito nel server live. Il codice funziona come segue;

  • Scopri il tempo
  • Se è la sera reindice il database
  • Esegui un backup del database (aggiungi dove ti serve)
  • Se è la sera eseguire il backup delle altre banche dati (aggiungi dove vuoi)
  • Uccidi i collegamenti e ripristina il database (aggiungi dove vuoi)

Questo codice è stato provato e testato e funzionato per periodi di mesi senza alcun problema.

Si prega di notare che la riduzione dei file di registro e dei file di database deve essere mantenuta al minimo, eseguendo un backup si sta svuotando il registro (anche se conserverà lo spazio utilizzato). Se è necessario quando deve essere eseguito al di fuori delle normali ore di lavoro.

SQL Code

Use [utilities]
GO
CREATE PROC [maint].MaintenancePlan AS BEGIN
DECLARE @BackupType VARCHAR(1)='E'
IF DATEPART(HOUR,GETDATE()) BETWEEN 5 AND 21 BEGIN
SET @BackupType='D'
END
--EXEC ('USE TempDb; DBCC SHRINKFILE(templog, 0)');--This is only needed when space is at a premium!
--Re-index Live
IF @BackupType='E' EXEC [maint].DatabaseReIndex 'dbname'
--Create Backup
BACKUP DATABASE TO DISK=N'{backuplocation}{dbname}.bak'
WITH NOFORMAT, INIT, NAME =N'{dbname}', SKIP, NOREWIND, NOUNLOAD, STATS= 10;
--EXEC ('USE ; DBCC SHRINKFILE(_log, 0)');--This is only needed when space is at a premium!
--Backup Other Files at Night
IF @BackupType='E' BEGIN
  EXEC [maint].DatabaseReIndex 'dbname'
  --Backup Others
  BACKUP DATABASE [databasename] TO DISK=N'{backuplocation}{dbname2}.bak'
  WITH FORMAT,INIT, NAME =N'{dbname2}',SKIP, NOREWIND, NOUNLOAD,  STATS= 10
END

--Restore Backups on other server
EXEC [server].[utilities].[maint].KillConnections 'dbname';
EXEC [server].[utilities].[maint].RestoreDatabase_{dbname};

--Restore Backups on other server for db_2 etc
IF @BackupType='E' BEGIN
  EXEC [server].[utilities].[maint].KillConnections 'dbname2';
  EXEC [server].[utilities].[maint].RestoreDatabase_{dbname2};
END

END
GO

Database di backup

backup database screenshot

Per ottenere il codice per il backup del database, è più semplice scrivere il codice da SSMS.

Seguire il processo che si usa normalmente e quindi selezionare "Azione Script in Nuova finestra di query".

Copia questo codice nel piano di manutenzione.

Database di ri-indice

Quindi possiamo aggiungere un codice per ristabilire il nostro database, questa è una condivisione di stored procedure dove devi solo dire al sistema il nome.

Per evitare la duplicazione dei codici, è possibile leggere sul link riportato di seguito.

More: Procedura memorizzata per ricostruire o riorganizzare indici di database frammentati

Uccidere le connessioni

Quando si esegue un ripristino nel database, è possibile avere solo una connessione (il processo che esegue il ripristino), quindi è possibile creare una stored procedure per chiudere tutte le connessioni a parte il processo corrente. Abbiamo nuovamente creato un articolo separato per questo.

More: Procedura memorizzata per eliminare tutte le connessioni al database selezionato

Ripristina database

Questo codice può anche essere scritto da SQL Server Management Studio. Se si aggiunge questo codice a una stored procedure, è possibile chiamarlo facilmente da altri processi e anche da altri server. Lo abbiamo spostato in un articolo separato per coprire più opzioni.

More: Ripristina il database da stored procedure

Author

Gavin Clayton
Gavin Clayton
Ho formato Claytabase nel 2010 come un modo per continuare il mio lavoro con SQL Server e ASP.NET. Ciò è culminato nel sistema di gestione dei contenuti di Ousia che viene preso dal concetto a uno dei CMS più rapidi presenti sul mercato.
 Google Translate
Google Translate

Was this helpful?

Please note, this commenting system is still in final testing.
RSS Login ContactCookie PolicyMappa del sito
facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd
+442392064871info@claytabase.co.ukGround Floor, Building 1000, Lakeside North Harbour, Western Road, Portsmouth, Hampshire, United Kingdom, PO6 3EZ
Partners
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
Ousia CMS Loader