2011-08-01 23 views
2

使用Sql Server 2005/2008可以使用存储过程对数据库进行备份吗? 什么是它的存储过程...以及我的项目在我的项目中创建此类过程所需的场景是什么? 前端语言将C#.Net和后端是SQL服务器。 任何人都可以在这里指导我...在此先感谢...为什么我们需要创建存储过程进行备份?

回答

4

您可以创建自己的存储过程:

CREATE PROCEDURE sp_MyBackup 
AS BEGIN 
    BACKUP DATABASE myDatabase to disk='c:\BACKUP\myDatabase.bak' 
END 

,然后你可以从你的T-SQL代码执行此过程:

exec sp_MyBackup 

编辑: 在C#中执行你的存储proceure ,你需要做类似的事情:

SqlConnection c= new SqlConection (connectionstring); 
c.Open(); 
SqlCommand cmd = new SqlCommand ("sp_MyBackup", c); 
cmd.CommadType = CommandType.StoredProcedure; 
cmd.ExecuteNonQuery(); 
c.Close(); 

编辑再次:我认为, end应用程序可以使用SP创建备份来实现下一个场景:在批量更新操作(数据导入,批量清理等)之前,用户可以从应用程序开始备份。在这种情况下,用户不需要适当的sql服务器和数据库权限,他不能拥有任何数据库工具和sql知识,但可以完成备份。

+0

这是不好的做法,建立与以sp_前缀的用户存储过程。以sp_开头的名称是为系统存储过程保留的,可能无法按预期工作。 – sqlvogel

+0

@ Alex_L-谢谢但为什么应用程序需要备份? – Aishna

+0

@Alex_L - 什么是我的项目来创建这样的程序在需要我的项目的情况? – Aishna

0

您可以通过使用“MDF和LDF”文件或采用特定数据库的“.bak”文件取回数据库,这将覆盖所有表,存储过程和函数。

前端:C# 后端:SQL服务器

Ado.Net充当前端和后端之间的桥梁。

在数据库管理系统(DBMS)中,存储过程是一组结构化查询语言(SQL)语句,其中指定名称以编译形式存储在数据库中,以便可以由多个程序共享。存储过程的使用可以有助于控制对数据的访问(最终用户可以输入或更改数据但不写入过程),保持数据完整性(信息以一致的方式输入),以及提高生产力(存储中的语句程序只需要写一次)。

这将通过C#中使用SqlCommand对象

http://www.exforsys.com/tutorials/vb.net-2005/access-and-manipulate-sql-server-data-using-stored-procedures.html

0

的情况是,如果你想揭开序幕每小时/夜间/每周/ someothertime-LY备份数据库服务器上调用。

然后,您可以编写脚本(例如powershell)来执行启动备份的存储过程。

这与您的实际应用无关。您的应用程序不应该关心或关心备份。这是一项维护/管理任务,应该在数据库服务器上处理。

Have a google to find out how to do it

0

我可以想出几个理由来做到这一点,除非你正在为DBA和支持人员创建一个实用程序来使用它。允许非专家用户启动备份在多用户环境中几乎肯定不是一个好主意。

如果您只是想允许用户创建一个恢复点或保存版本的数据库的话,我建议你创建一个transaction log mark。假设您在完全恢复模式下运行,日志标记将比允许用户自行备份更快,更容易支持。

相关问题