Backup di un database di SQL Server da hard disk con le stored procedure?
-
26-09-2019 - |
Domanda
posso banca dati un backup su disco rigido con il seguente metodo:
void BackUp(string ConnectionString, string DatabaseFullPath, string backUpPath)
{
progressBar1.Value = 0;
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
string UseMaster = "USE master";
SqlCommand UseMasterCommand = new SqlCommand(UseMaster, con);
UseMasterCommand.ExecuteNonQuery();
progressBar1.Value += 25;
string Alter1 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, con);
Alter1Cmd.ExecuteNonQuery();
progressBar1.Value += 25;
string Restore = @"BACKUP DATABASE [" + DatabaseFullPath + "] TO DISK = N'" + backUpPath + @"' WITH NOFORMAT, NOINIT, NAME = N'" + DatabaseFullPath + "-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
SqlCommand RestoreCmd = new SqlCommand(Restore, con);
RestoreCmd.ExecuteNonQuery();
progressBar1.Value += 25;
string Alter2 = @"ALTER DATABASE [" + DatabaseFullPath + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
Alter2Cmd.ExecuteNonQuery();
progressBar1.Value += 25;
labelReport.Text = "Successful";
}
}
e, come posso convertirlo in una stored procedure?
(io sono novizio in SQL Server)
Soluzione
Se il vostro intento è quello di incapsulare l'attività di backup in una stored procedure puramente in modo che possa essere eseguito da C #, allora forse si vuole prendere in considerazione SQL Server Management Objects (SMO), invece? Questi oggetti consentono di accedere programmatico ai compiti di amministrazione di SQL Server, ad esempio i backup dello spettacolo. Scopri il secondo campione qui: http://msdn.microsoft.com/en- us / library / ms162133.aspx
Modifica Ma per rispondere alla domanda, è possibile seguire questo esempio che funziona per me:
CREATE PROCEDURE BackupDatabase
(
@databaseName sysname,
@backupPath varchar(260)
)
AS
BEGIN
BACKUP DATABASE @databaseName
TO DISK = @backupPath
WITH FORMAT;
END
GO
chiamato da
DECLARE @return_value int
EXEC @return_value = [dbo].[BackupDatabase]
@databaseName = play,
@backupPath = N'c:\backup\play.bak'
SELECT 'Return Value' = @return_value
GO