View Full Version : [SQL Server] Backup tramite query
serpico84
26-10-2009, 09:52
Devo effettuare il backup di un database sql server (fatto su windows server 2000, quindi sql server 2000) tramite una query...ho trovato questa sintassi generica e molte altre piu complesse...
BACKUP DATABASE myDataBase TO myDiskDevice
Ho visto che ci sono molte tipologie qui (http://msdn.microsoft.com/it-it/library/ms186865.aspx) ma non ci ho capito molto.
Io devo effettuare un semplice backup in modo che poi sia "restorabile" da un'altra macchina.
euphyllia87
26-10-2009, 11:22
Devo effettuare il backup di un database sql server (fatto su windows server 2000, quindi sql server 2000) tramite una query...ho trovato questa sintassi generica e molte altre piu complesse...
BACKUP DATABASE myDataBase TO myDiskDevice
Ho visto che ci sono molte tipologie qui (http://msdn.microsoft.com/it-it/library/ms186865.aspx) ma non ci ho capito molto.
Io devo effettuare un semplice backup in modo che poi sia "restorabile" da un'altra macchina.
Non riesci ad usare il client fornito da MS per mssql ?
tomminno
26-10-2009, 11:47
Non riesci ad usare il client fornito da MS per mssql ?
SQLServer Management Studio non crea uno sql script a partire dal database.
Ci vuole un tool chiamato Sql Publishing Wizard per cui gli passi l'mdf e lui ti genera lo script sql corrispondente.
In Sql2000 non era incluso, mi sembra che non lo fosse nemmeno sul 2005, mentre sicuramente nel 2008 c'è.
euphyllia87
26-10-2009, 11:54
SQLServer Management Studio non crea uno sql script a partire dal database.
Ci vuole un tool chiamato Sql Publishing Wizard per cui gli passi l'mdf e lui ti genera lo script sql corrispondente.
In Sql2000 non era incluso, mi sembra che non lo fosse nemmeno sul 2005, mentre sicuramente nel 2008 c'è.
Buona a saperi, non ho mai usato MSSQL.
serpico84
27-10-2009, 11:10
devo fare tutto da java...
devo fare tutto da java...
...un bel lavoraccio...sopratutto perchè esistono tool e soluzioni da console molto interessanti...comunque potresti creare un tool che ricostruisce la struttura della tabella e da questa interroga a blocchi il contenuto...
DatabaseMetaData dbmd = this.conn.getMetaData();
String[] types = {"TABLE"};
ResultSet resultSet = dbmd.getTables(null, null, "%", types);
...ciao Andrea...
tomminno
27-10-2009, 11:46
devo fare tutto da java...
Cioè devi generare lo script sql da java?
Allora vai di query su db e di generazione manuale dello script.
Certo che è bello complesso, specialmente quando vai a creare lo script di creazione tabelle con tutti i vincoli che possono esserci e che dovresti rintracciare nelle tabelle di sistema.
Perchè hai questo requisito?
In questo caso un linguaggio di programmazione (qualunque esso sia) non è lo strumento più indicato allo scopo, visto che esistono tool di gestione.
serpico84
27-10-2009, 13:03
in pratica devo "mandare" tutti i dati del db (che può essere di diversi tipi...) ad un'altra macchina...sto vedendo l'hibernate ma ho zero esperienza...qualcuno di voi lo conosce? o ne conosce di migliori?
...il mio stralcio di prima permetteva di ricavare la struttura di un db...da questo devi estrarre i dati ricostruire lo script di back up...
...ciao Andrea...
public DbStructure(){
Connection connection;
Statement statement;
ResultSet resultSet = null;
try
{
String userName = "user";
String password = "password";
String url = "jdbc:mysql://127.0.0.1/tuodb";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
connection = (Connection) DriverManager.getConnection(url,userName,password);
statement = (Statement) connection.createStatement();
DatabaseMetaData md = connection.getMetaData();
ResultSet mrs = (ResultSet) md.getTables(null, null, null,new String[] { "TABLE" });
while (mrs.next())
{
System.out.println(mrs.getString(3));
ResultSet rs = (ResultSet) statement.executeQuery("SELECT * FROM "+mrs.getString(3)+" LIMIT 1");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
System.out.println("column " + rsMetaData.getColumnName(i)+" "+rsMetaData.getColumnType(i));
}
}
mrs.close();
resultSet.close();
statement.close();
connection.close();
}
catch(Exception e){
System.out.println(e);
}
}
...ciao Andrea...
serpico84
27-10-2009, 14:40
grande!!:D solo che con LIMIT 1 mi da errori se lo tolgo tutto ok mi stampa tutto...se volessi anche stampare per ogni colonna i valori all'interno della colonna stessa?? a questo punto mi affido a te!!:D
grande!!:D solo che con LIMIT 1 mi da errori se lo tolgo tutto ok mi stampa tutto...se volessi anche stampare per ogni colonna i valori all'interno della colonna stessa?? a questo punto mi affido a te!!:D
...beh il metodo da me postato è la base per la risoluzione del problema...manca lo strato di estrazione dei dati e di generazione dello script...smanacciando un po' con le query e con un FileWriter penso che il cruccio si possa dire risolto...
...ciao Andrea...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.