高手请进,数据库备份完美方案???

PandaIT 2010-04-22 04:28:59
数据库(MSSQL)放在App_Data文件夹下面

服务器有可能是ftp只是一个虚拟目录、有关权限问题、效率问题?

不知道各位牛人都是如何解决数据库备份?

类似此类回复:http://www.cnblogs.com/coolylh/archive/2006/04/12/373463.html

windows计划任务

帮忙up就行了!

权限不够!!!
...全文
237 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
takako_mu 2010-04-23
  • 打赏
  • 举报
回复
SSIS中可解決你這樣的問題。
你需要:
1、DB的賬號密碼。
2、FTP文件夾“寫”權限的賬號密碼。
step1:拖一個備份控件,里面可選擇完整備份、差異備份、事務日志備份。
step2:拖一個ftp傳文件的控件,將備份文件傳到FTP即可。

以上本人已親自實現,但有個缺陷,FTP傳文件偶爾是會丟失的。
hhxx_cj 2010-04-23
  • 打赏
  • 举报
回复
没弄过,我是来学习,帮顶
tanwei47045 2010-04-23
  • 打赏
  • 举报
回复
UP~
newdigitime 2010-04-23
  • 打赏
  • 举报
回复
最原始最完美备份方案,有FTP权限即可:

1.每天登录FTP,下载MDF,LOG文件.
2.或者用asp.net代码生成FTP对象,复制MDF/LOG文件.
3.用SQL server Manager Studio,远程连接数据库,然后备份.
libinlink 2010-04-23
  • 打赏
  • 举报
回复
backup database northwind to disk ='c:\northwind.bak'

restore database northwind from disk='c:\northwind.bak'
PandaIT 2010-04-23
  • 打赏
  • 举报
回复
up!!没解决!!
HolyPlace 2010-04-22
  • 打赏
  • 举报
回复
使用数据库自己的维护计划定时备份呢?
sunnj87 2010-04-22
  • 打赏
  • 举报
回复
标记,关注
足球中国 2010-04-22
  • 打赏
  • 举报
回复
备份文件也可以。就是要停了,服务。
wuyq11 2010-04-22
  • 打赏
  • 举报
回复
ftp的是远程数据库
一般服务器商都定时备份数据,也可在本地定时备份
通过存储过程
CREATE proc dbo.Data_Backup @dbname sysname='',@bkpath nvarchar(260)='',@bkfname nvarchar(260)='',@bktype nvarchar(10)='DB',@appendfile bit=1
as declare @sql varchar(8000) if isnull(@dbname,'')='' set @dbname=db_name() if isnull(@bkfname,'')=''
set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK' set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname),'\DATE\',convert(varchar,getdate(),112)),'\TIME\',replace(convert(varchar,getdate(),108),':',''))
update XTSZ set FNAME=@bkfname
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname +' to disk='''+@bkpath+@bkfname +''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end+case @appendfile when 1 then 'NOINIT' else 'INIT' end
exec(@sql)

USE master
EXEC sp_addumpdevice 'disk', 'MyNwind',
'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind.dat'
目录操作权限
Rock870210 2010-04-22
  • 打赏
  • 举报
回复
纯粹帮顶!
zsuswy 2010-04-22
  • 打赏
  • 举报
回复
无他,三个月做一次完整备份,每周做一次日志备份。
zzxap 2010-04-22
  • 打赏
  • 举报
回复
如果服务器不是你的,只能叫管理员开放权限给你了
zzxap 2010-04-22
  • 打赏
  • 举报
回复



/*--备份数据库,并按日期生成备份目录



/*--调用示例

--备份当前数据库
exec p_backupdb

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_backupdb]
GO

create proc p_backupdb
@dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bkpath nvarchar(260)='c:\' --备份文件的存放目录,在该目录下创建每天备份的目录
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if right(@bkpath,1)<>'\' set @bkpath=@bkpath+'\'
set @bkpath=@bkpath+convert(varchar,getdate(),112)+'\'

--创建目录
set @sql='md '+@bkpath
exec master..xp_cmdshell @sql,no_output

--备份处理
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
,'\DATE\',convert(varchar,getdate(),112))
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup database '+@dbname
+' to disk='''+@bkpath+@bkfname+''''
exec(@sql)
go
自动备份
企业管理器—》 管理 —》 数据库维护计划 —》 新建维护计划 设置好你需要的就行了
PandaIT 2010-04-22
  • 打赏
  • 举报
回复


楼上的代码我都看过了!谢谢!

请注意我的要求!我根本就没有那一层的权限!!我拿什么去操作???
myhope88 2010-04-22
  • 打赏
  • 举报
回复
UP下
napolun2009 2010-04-22
  • 打赏
  • 举报
回复
用SQLDMO

#region 备份数据库

/// <summary>
/// 数据库的备份和实时进度显示
/// </summary>
/// <param name="strDbName"></param>
/// <param name="strFileName"></param>
/// <param name="pgbMain"></param>
/// <returns></returns>
public bool BackUPDB(string strDbName, string strFileName)
{
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect(ServerName, UserName, Password);
SQLDMO.Backup bak = new SQLDMO.BackupClass();
bak.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
bak.Initialize = true;
bak.Files = strFileName;
bak.Database = strDbName;
bak.SQLBackup(svr);
return true;
}
catch (Exception err)
{
//throw (new Exception("备份数据库失败" + err.Message));
ShowError("连接数据库出错:" + err.Message);
return false;
}
finally
{
svr.DisConnect();
}
}
#endregion


#region 还原数据库
/// <summary>
/// 恢复数据库,恢复前杀死所有与本数据库相关进程
/// </summary>
/// <param name="strDbName">数据库名</param>
/// <param name="strFileName">存放路径</param>
/// <param name="pgbMain"></param>
/// <returns></returns>
public bool RestoreDB(string strDbName, string strFileName)
{
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect(ServerName, UserName, Password);
//取得所有的进程列表
SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
int iColPIDNum = -1;
int iColDbName = -1;
//找到和要恢复数据库相关的进程
for (int i = 1; i <= qr.Columns; i++)
{
string strName = qr.get_ColumnName(i);
if (strName.ToUpper().Trim() == "SPID")
{
iColPIDNum = i;
}
else if (strName.ToUpper().Trim() == "DBNAME")
{
iColDbName = i;
}
if (iColPIDNum != -1 && iColDbName != -1)
break;
}
//将相关进程杀死
for (int i = 1; i <= qr.Rows; i++)
{
int lPID = qr.GetColumnLong(i, iColPIDNum);
string strDBName = qr.GetColumnString(i, iColDbName);
if (strDBName.ToUpper() == strDbName.ToUpper())
svr.KillProcess(lPID);
}

SQLDMO.Restore res = new SQLDMO.RestoreClass();

res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
res.Files = strFileName;

res.Database = strDbName;
res.FileNumber = 1;

res.ReplaceDatabase = true;
res.SQLRestore(svr);

return true;
}
catch (Exception err)
{
//throw (new Exception("" + err.Message));
ShowError("恢复数据库失败,请关闭所有和该数据库连接的程序!" + err.Message);
return false;
}
finally
{
svr.DisConnect();
}
}
#endregion



用系统存储过程

backup database northwind to disk ='c:\northwind.bak'

restore database northwind from disk='c:\northwind.bak'
honkerhero 2010-04-22
  • 打赏
  • 举报
回复
给SQL服务器自己加工作计划,让他自动备份
PandaIT 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzxap 的回复:]
计划任务用trimer
[/Quote]

只是一个虚拟目录更谈不上什么计划任务了!
duanjiwei 2010-04-22
  • 打赏
  • 举报
回复
sql 数据库专有任务激活。很好用的。直接托一个控件设置时间了。就ok了。
加载更多回复(5)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧