BACKUP eseguendo un file .bat

martedì 29 marzo 2016 - 10.08

zseven Profilo | Senior Member

Ciao ragazzi,
su una nuova macchian ho creato il solito file sql per la generazione di backup, lo eseguo e tutto va bene.
Quindi ho creato un file .bat per far sì che la notte potesse essere eseguito in automatico dalle operazioni pianificate,
purtroppo quando provo ad eseguirlo a mano si apre e si chiude in un secondo il prompt e non mi fa nessuna operazione.

Il codice è questo:
sqlcmd -S IP MACCHINA -E "C:\BACKUP\QueryBackupData.sql" -o "C:\BACKUP\LOGS\FullBackupData.log"
ho provato anche così
sqlcmd -S IPMACCHINA\NOMEMACCHINA -E "C:\BACKUP\QueryBackupData.sql" -o "C:\BACKUP\LOGS\FullBackupData.log"
ma ottengo lo stesso risultato.

Cosa sbaglio?
Grazie mille

dominic Profilo | Newbie

io creo il file backup cosi da un file bat e salvo i file .bak su una cartella,
prima elimino tutti i file della cartella
del .....ecc...


SQLCMD -S "server\sqlexpress" -Q"BACKUP DATABASE [NOME_DATABASE] TO DISK = N'C:\BACKUP\NOME_DATABASE.bak' WITH INIT, NAME = N'dddBackUp', STATS = 10"
e di seguito gli altri database se li hai

poi creo la copia da C:...... su dove vuoi

dominic

renarig Profilo | Expert

io di solito lo faccio cosi:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
dove:
Utente --------- è il nome del tuo utente di SQLServer autorizato a fare Backup
Pass ------------- è la pass dell'utente sopra definito
NomeServer --- è il nome del server oppure il Numero di IP (Non ricordo se il numero di IP lo devi precedere da un / oppure \ )
Ar09D ----------- è il nome del DB
E:\zServizi\Bak\Ar09DBack.bak ------ è il percorso e nome del file di Backup che vuoi ottenere
Ar09Dx ------- se ricordo bene è un Allias/Descrizione ( forse inutile )





Se un .bat si apre e richiude immediatamente i casi sono 2
-- ha funzionato
-- non ha funzionato
Per accertarti mettici un "pause" (senza apici ) nell'ultima riga
in modo che lo fermi e puoi leggere eventuali messaggi di errore

Magari meglio con un ERRORLEVEL
........... echo %ERRORLEVEL% pause

zseven Profilo | Senior Member

Grazie per le risposte.
Nell'ultimo post in realtà è un caso che ho su un'altra macchina dove c'è l'autenticazione di sql server.
Su questa macchina invece ho l'autenticazione di windows e per questo cambia.

Nel penultimo invece vedo che fai direttamente il backup sul file e non hai il file sql come me, cambia poco alla fine.
Purtroppo a me continua a non eseguire nulla e non mi restituisce nemmeno errore... forse non riesce a trovare la macchina o l'istanza?

renarig Profilo | Expert

>... forse non riesce a trovare la macchina o l'istanza?

lanciagli una query semplicissima tipo :
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Ti dara il massimo valore di quel campo
oppure ti dara dei messaggi di errore abbastanza comprensibili (lo ho apena testato)

.

PS: Mi viene un dubbio .....
nella macchina da cui esegui hai SQLServer ??????
Diversamente non puoi usare SQLCMD

.

zseven Profilo | Senior Member

Il problema non è sulla query ma sull'accesso a sql server e/o alla macchina.
Nel tuo esempio infatti riporti il codice per collegarmi ad sql server con un utente sa, quindi con sql authentication, ma come
ho detto sopra il sql server installato sulla macchina (ci sta :D) si collega con Windows Authentication e per questo
ho usato la stringa come prima scritto.

zseven Profilo | Senior Member

Ragazzi purtroppo sto continuando a non trovare una soluzione...
Ho provato a recuperare queste info su sql
select @@servername + '\' + @@servicename
per poi inserirle nel file bat ma niente da fare

Adesso la stringa che ho provato è:
sqlcmd -S NOME SERVER\MSSQLSERVER -E "C:\BACKUP\QueryBackupData.sql" -o "C:\BACKUP\LOGS\FullBackupData.log"
ed ho provato anche con
sqlcmd -S IP SERVER\MSSQLSERVER -E "C:\BACKUP\QueryBackupData.sql" -o "C:\BACKUP\LOGS\FullBackupData.log"

Ma in nessun caso mi parte il backup o mi restituisce errore.

Come posso fare?

renarig Profilo | Expert

Scusami se sono lento a capire, ma ancora non ho capito tutto

Tu nel 1° post parli di una nuova macchina

alcune dimande:
- su questa macchina hai installato SQLServer ???? diversamente SQLCMD non puo funzionare

- poi ho capito che lavori in una rete, Si tratta di una rete Home oppure di una rete aziendale con Dominio ???
perché se è una rete Home allora la autenticazione di Windows non puo funzionare


Terza cosa, vedo che fai vari tentativi diversi sul nome del server,
io quando ho questi dubbi apro SQLServerManagementStudio,
nella prima finestra di Login vedi alla casella "Nome Server" appunto il nome del server
Usa quello identicamente come lo vedi


Altre idee adesso nulla




zseven Profilo | Senior Member

Sql server è installato correttamente.
Il nome del server lo recupero con la query che ho indicato sopra.

Il database funziona correttamente e ci sono siti che già si appoggiano a questa macchina.
Il problema è esclusivamente il comando di backup da prompt come indicato.

Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5