【发布时间】:2011-08-01 06:25:32
【问题描述】:
是否可以使用 Sql Server 2005/2008 使用存储过程备份数据库? 它的存储过程是什么......我的项目需要在我的项目中创建这样的过程的场景是什么? 前端语言为 C#.Net,后端为 sql server。 任何人都可以指导我...提前谢谢..
【问题讨论】:
标签: c# sql-server
是否可以使用 Sql Server 2005/2008 使用存储过程备份数据库? 它的存储过程是什么......我的项目需要在我的项目中创建这样的过程的场景是什么? 前端语言为 C#.Net,后端为 sql server。 任何人都可以指导我...提前谢谢..
【问题讨论】:
标签: c# sql-server
您可以创建自己的存储过程:
CREATE PROCEDURE sp_MyBackup
AS BEGIN
BACKUP DATABASE myDatabase to disk='c:\BACKUP\myDatabase.bak'
END
然后你可以从你的 T-SQL 代码中执行这个过程:
exec sp_MyBackup
编辑: 要在 c# 中执行您的存储过程,您需要执行以下操作:
SqlConnection c= new SqlConection ( connectionstring );
c.Open();
SqlCommand cmd = new SqlCommand ("sp_MyBackup", c);
cmd.CommadType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
c.Close();
再次编辑:我认为,前端应用程序可以使用 SP 创建备份以实现下一个场景:在大规模更新操作(数据导入、大规模清理等)之前,用户可以从应用程序开始备份。在这种情况下用户不需要相应的sql-server和数据库权限,他必须没有任何数据库工具和sql知识,但可以备份。
【讨论】:
您可以使用“MDF 和 LDF”文件或特定数据库的“.bak”文件来收回数据库,这将涵盖所有表、存储过程和函数。
前端:C#
后端:Sql Server
Ado.Net 充当前端和后端之间的桥梁。
在数据库管理系统 (DBMS) 中,存储过程是一组具有指定名称的结构化查询语言 (SQL) 语句,这些语句以编译后的形式存储在数据库中,以便多个程序共享。存储过程的使用有助于控制对数据的访问(最终用户可以输入或更改数据但不编写过程)、保持数据完整性(以一致的方式输入信息)和提高生产力(存储在程序只需要编写一次)。
这将由 C# 使用 SqlCommand 对象调用
【讨论】:
如果您想在数据库服务器上启动每小时/每晚/每周/某个其他时间的备份。
然后您可以编写一个脚本(例如 powershell)来执行启动备份的存储过程。
这与您的实际应用无关。您的应用程序不应该关心或关心备份。这是一项维护/管理任务,应在数据库服务器上处理。
【讨论】:
除非您正在创建一个供 DBA 和支持人员使用的实用程序,否则我想不出几个这样做的理由。在多用户环境中,允许非专家用户启动备份几乎肯定不是一个好主意。
如果您只想允许用户创建恢复点或保存数据库版本,那么我建议您创建一个transaction log mark。假设您在完全恢复模式下运行,日志标记将比允许用户自己进行备份更快、更容易支持。
【讨论】: