Domanda

Come si ripristina un backup del database utilizzando SQL Server 2005 in rete?Ricordo di averlo già fatto, ma c'era qualcosa di strano nel modo in cui dovevi farlo.

È stato utile?

Soluzione

Il database viene spesso eseguito come servizio con un account senza accesso alla rete.Se questo è il caso, non sarai in grado di eseguire il ripristino direttamente tramite la rete.Il backup deve essere copiato sul computer locale oppure il servizio database deve essere eseguito come utente con l'accesso alla rete appropriato.

Altri suggerimenti

Hai poche opzioni per utilizzare un file di rete come origine di backup

  1. Mappare l'unità/percorso di rete, file di hosting, sotto lo STESSO utente di MS-SQL Server.
  2. Utilizzare la procedura memorizzata estesa xp_cmdshell per mappare l'unità di rete dall'interno di MS SQL (in questo modo, la shell dei comandi avrà gli stessi privilegi dell'account utente che esegue SSMS)
-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

Successivamente guidare Z:sarà visibile in Server Management Studio o semplicemente

RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO

Non è possibile eseguire questa operazione tramite la GUI di SSMS, ma è possibile farlo utilizzando uno script.RESTORE DATABASE from DISK='\unc\path\filename' Se è necessario automatizzare questo processo, il modo migliore è impostare un processo SQL Server ed eseguirlo come utente con accesso al percorso del file.

Assicurati che l'utente che esegue il tuo SQL services In "Services.msc" è una directory attiva "Domain User" questo risolverà il problema.

È possibile utilizzare SP xp_cmdshell per mappare l'unità di rete per SQL Server, dopodiché verrà visualizzata nella finestra di navigazione dei file.

EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'

maggiori informazioni qui: Ripristino DB da unità di rete

Ha funzionato per me!

Ho dovuto farlo alcune volte e ci sono solo due opzioni che conosco.Copiare il file localmente su SQL Server oppure creare sul server SQL un'unità di rete mappata sulla condivisione che contiene il file di backup.

Inoltre, è necessario assicurarsi che il servizio SQL Server sia in esecuzione come utente con accesso alla rete e autorizzazioni per la condivisione in cui risiede il file di backup.Il "Sistema locale" non avrà le autorizzazioni per accedere alla rete.

Come nota a margine, se ti capita di eseguire SQL su una macchina virtuale, spesso è meno complicato configurare temporaneamente una nuova unità sulla VM con spazio sufficiente per copiare i file di backup, eseguire il ripristino da quella nuova copia locale, e quindi eliminare l'unità temporanea.

Ciò può essere utile se l'arresto/avvio del servizio SQL per modificarne l'account rappresenta un problema.

Crea un'unità condivisa sulla macchina che contiene i backup, ad esempio il server1 ha i backup nella cartella "Backup".Concedere il controllo completo all'account che esegue SQL Server.Sul server che desideri ripristinare per avviare SSMS, vai a ripristinare il database e seleziona "Da dispositivo".Nella finestra di dialogo "Individua file di backup-"Server"" rimuovi qualsiasi cosa nel campo "Percorso selezionato" e nel campo "Nome file" fornisci il percorso completo, quindi "\server\backups\db.bak".Almeno ha funzionato per me durante la migrazione da 05 a 08.Non è il metodo preferito perché qualsiasi intoppo di rete può causare un problema con il ripristino.

EXEC sp_configure 'show advanced options', 1
GO

-- Aggiorna i valori attualmente configurati per le opzioni avanzate.

RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO

-- Aggiorna i valori attualmente configurati per le opzioni avanzate.

RECONFIGURE
GO

--Questo dovrebbe essere eseguito sul prompt dei comandi (cmd)

NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no

quindi su SQL Server

EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'

--Successivamente guida Z:sarà visibile in Server Management Studio o semplicemente

RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top