日期:2014-05-19  浏览次数:20451 次

MS_SQL2000,用脚本BACKUP DATABASE备份数据库,可是遇到个问题,如果事先无法知道数据库的名字怎么办?
MS_SQL2000,用脚本BACKUP   DATABASE备份数据库,可是遇到个问题,如果事先无法知道数据库的名字怎么办?

MS_SQL2000,用脚本BACKUP   DATABASE自动备份数据库,可是遇到个问题,如果事先无法知道数据库的名字怎么办?有这样一个购买的财务软件,不知道怎么设计的,可以让用户自己起数据库的名字,然后在服务器上生成这个数据库。这样,我们技术人员就不知道财务人员起的什么名字了(不定期在变)。那么怎么备份呢?软件有自己的数据备份,我们要额外的给作个对数据库的自动备份。

有没有办法,不指明数据库的名字,全部备份所有的数据库呢?这样算达到要求。

------解决方案--------------------
罗列所有数据库的名称
select name from master..sysdatabases where dbid> 5

------解决方案--------------------
select name from master..sysdatabases where dbid> 5

---把这些都写进计划任务的脚本里面
------解决方案--------------------
--2.进行数据库备份
declare @dbname varchar(256)
declare @sql varchar(8000)
declare cur cursor local for
select name from master..sysdatabases where dbid> 4
open cur
fetch next from cur into @dbname
while @@fetch_status=0
begin
set @sql= 'backup database '+@dbname
+ ' to disk= ' 'z:\ '+@dbname
+ '.bak ' ' '
exec(@sql)
fetch next from cur into @dbname
end
close cur
deallocate cur
------解决方案--------------------
select db_name() 获取数据库名称~~~~~~~~~~

--或者
DECLARE @dbName varchar(100)
set @dbName =DB_NAME()
print @dbName

例如我在mystudy数据库下执行此语句,返回:
mystudy

------解决方案--------------------
master..sysdatabases: 完整写法是master.dbo.sysdatabases(因为dbo是默认用户,也可省略)
建议:备份dbid> 6以外的用户库外,还要备份master与msdb