Perché dovrei portare un database offline?


15

Per quali motivi e in quali situazioni useresti la funzione "Take Offline" / ALTER DATABASE dbName SET OFFLINE.

Quali attività è possibile eseguire con un database offline? Quali attività è possibile eseguire solo con un database offline?

Risposte:


16

È possibile spostare il file MDF su un altro server per metterlo online.


4
+1 o un'altra unità / cartella / SAN ...
Chris S,

È l'unico uso di "offline"?
Greg B,

5
No, posso pensare ad altri motivi. Immagina di avere più database, per più applicazioni. Una di queste applicazioni sta ottenendo un aggiornamento dell'applicazione front-end (app Web, client, chi lo sa). Si desidera disabilitare l'accesso al database da parte di chiunque durante l'aggiornamento, ma non si desidera arrestare l'intero server a causa degli altri database. Questo potrebbe essere un motivo per metterlo offline. Sono sicuro che anche la tua immaginazione potrebbe venire con altri motivi.
mfinni,

La mia immaginazione non può aver paura, da qui la domanda. Non pensavo che potessi modificare un database mentre sei offline, quindi non vedo in che modo aiutarlo offline potrebbe aiutare nel processo di aggiornamento
Greg B

2
Greg B - ho detto specificamente l'aggiornamento del front-end, non del DB stesso. Nello scenario che ho descritto, il DB rimane invariato. Sarebbe messo offline per garantire che nessuno acceda ad esso durante la transizione.
mfinni,

18

Negli ambienti di sviluppo / gestione temporanea a volte è utile portare offline un database per assicurarsi di connettersi all'istanza corretta del database nell'applicazione e che non si disponga di una stringa di connessione sollevata da qualche parte.

Detto questo, in questa situazione è un'idea molto migliore avere nomi di database diversi per i diversi ambienti e un processo di compilazione che configurerà automaticamente le stringhe di connessione ...

Allo stesso modo, mi piace portare i database offline per un periodo di tempo prima di disattivarli nella (non così) occasione che per qualche motivo devono tornare online. Sono stato morso parecchie volte da sviluppatori che hanno hook che non conosco in uno dei miei database quando voglio liberarmene. Portandolo offline molto meno drastico e richiede meno tempo rispetto all'eliminazione e al ripristino, se necessario.

Un'altra cosa sarebbe come una protezione di emergenza. Ho dovuto farlo prima. A volte nella tua app viene trovato un brutto bug che, sebbene non dannoso, corromperà comunque i dati nel database. Portare offline il database è un modo rapido per fermare l'emorragia fino a quando non viene identificato il bug. È quindi possibile riportarlo online per valutare il danno all'interno del database.


2
Mi piace l'idea di disconnetterti prima dell'eliminazione
Greg B,

8
Idem. Ho quattromila database nei nostri ambienti di pre-produzione. A volte è difficile sapere chi possiede cosa. Portarlo offline e aspettare gli strilli è occasionalmente l'unica opzione.
Michael Green,

6

Mentre alcune delle risposte qui potrebbero darti alcune idee su cosa puoi fare con un database che ha accesso limitato, in realtà non si può fare molto con un database offline. Non è possibile aggiornare, aggiornare, aggiungere o eliminare dati, ecc.


2
Corretta. Se vuoi essere in grado di fare molto con il database, è meglio metterlo in modalità utente singolo. Quindi limiterai ancora l'accesso ma puoi fare molto di più.
Sean Howat,

Non puoi nemmeno rinominarlo!
Dima Fomin,

0

La mia ragione generale, quella che devo vendere ai DBA più spesso di quanto vorrei elencare ...

"La SAN ha bisogno di essere riparata ... e no, non posso semplicemente sostituire a caldo un'unità, il backplane / i controller sono in errore."

Le istanze DB si comportano in modo molto negativo quando i loro dischi scompaiono.

Pertanto, chiudo le istanze SQL prima di mettere offline la SAN e quindi le porto una alla volta in modo da non contestare le risorse: la prima istanza prende tutte le risorse del cluster e diventa il nodo Active DB, le istanze successive vengono eseguite come nodi passivi.


-3

Ci sono molti motivi per cui dovresti farlo ..

Per un esempio,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

Il punto più importante ..

Is taking a backup.. to get a perfect snapshot in time.. 

(in alcuni DB è sufficiente creare un blocco su tutte le tabelle)


+1, anche DBMS meno recente per la deframmentazione o la riduzione del DB.
Chris S,

1
ri: "modifica o aggiornamento dello schema", dai libri online "OFFLINE Il database è chiuso, chiuso in modo pulito e contrassegnato come offline. Il database non può essere modificato mentre è offline." Come è possibile aggiornare lo schema in questa situazione?
Greg B,

Spiacenti. Mi riferivo al fatto di apportare modifiche a un database inattivo. Sono un follower di MySQL, supponevo che avrebbe avuto luogo un aggiornamento su un database contrassegnato come offline, quindi non c'erano problemi di concorrenza con nient'altro che la modifica necessaria. Forse possiamo lasciarlo fuori allora ...: D
Arenstar,

2
I database reali supportano backup reali, lo sai. Non è necessario prendere nient'altro che un giocattolo ofline per realizzare un backup perfetto nel tempo. Un db che richiede una serratura o qualche altro stupido meccanismo è un giocattolo. Veramente. Tutti i principali database non hanno problemi con backup completi, coerenti, mentre sono in uso intensivo.
TomTom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.