SQL Stored Procedure: Under master database
Create procedure RestoreDatabase(@BackupFile varchar(500),@TestDB varchar(100),@RestoreFile varchar(500))
as
DECLARE @query varchar(2000)
DECLARE @DataFile varchar(2000)
SET @DataFile = @RestoreFile + ‘.mdf’
DECLARE @LogFile varchar(2000)
SET @LogFile = @RestoreFile + ‘.ldf’
IF EXISTS(SELECT * FROM sysdatabases WHERE name = @TestDB)
BEGIN
SET @query = ‘DROP DATABASE ‘ + @TestDB
EXEC (@query)
END
RESTORE HEADERONLY FROM DISK = @BackupFile
DECLARE @File int
SET @File = @@ROWCOUNT
DECLARE @Data varchar(500)
DECLARE @Log varchar(500)
SET @query = ‘RESTORE FILELISTONLY FROM DISK = ‘ + QUOTENAME(@BackupFile , ””)
CREATE TABLE #restoretemp
(
LogicalName varchar(500),
PhysicalName varchar(500),
type varchar(10),
FilegroupName varchar(200),
size int,
maxsize bigint
)
INSERT #restoretemp EXEC (@query)
SELECT @Data = LogicalName FROM #restoretemp WHERE type = ‘D’
SELECT @Log = LogicalName FROM #restoretemp WHERE type = ‘L’
PRINT @Data
PRINT @Log
TRUNCATE TABLE #restoretemp
DROP TABLE #restoretemp
IF @File > 0
BEGIN
SET @query = ‘RESTORE DATABASE ‘ + @TestDB + ‘ FROM DISK = ‘ + QUOTENAME(@BackupFile, ””) +
‘ WITH MOVE ‘ + QUOTENAME(@Data, ””) + ‘ TO ‘ + QUOTENAME(@DataFile, ””) + ‘, MOVE ‘ +
QUOTENAME(@Log, ””) + ‘ TO ‘ + QUOTENAME(@LogFile, ””) + ‘, FILE = ‘ + CONVERT(varchar, @File)
EXEC (@query)
END
C# code:
private void btnBrowse_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
txtBackupFile.Text = openFileDialog1.FileName.ToString();
}
private void btnOK_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand(“RestoreDatabase”, Connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter(“@BackupFile”, txtBackupFile.Text));
cmd.Parameters.Add(new SqlParameter(“@TestDB”, txtDatabaseName.Text));
string RestoreFile=”c:\\”+txtDatabaseName.Text;
cmd.Parameters.Add(new SqlParameter(“@RestoreFile”, RestoreFile));
try
{
Connection.Open();
cmd.ExecuteNonQuery();
Connection.Close();
MessageBox.Show(“Database Imported Succesfully”, “SUCCESS”);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
