备份、还原数据库的SQL语句 
要怎么处理并发操作啊?
就是在别人操作数据库时不能够备份和还原!
或者自己操作时不允许别人操作!  封锁!语句怎么写来的 !

解决方案 »

  1.   

    复制一个列子:
    --创建测试数据库
    CREATE DATABASE db
    ON PRIMARY(
    NAME='db_data',
    FILENAME= 'c:\db_data.mdf'),
    FILEGROUP db_fg1(
    NAME = 'db_fg1_data',
    FILENAME = 'c:\db_fg1_data.ndf'),
    FILEGROUP db_fg2(
    NAME = 'db_fg2_data',
    FILENAME = 'c:\db_fg2_data.ndf')
    LOG ON(
    NAME='db_log',
    FILENAME ='c:\db.ldf')
    GO--备份数据库
    BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT
    GO--在文件组 db_fg1 上创建表 ta
    CREATE TABLE db.dbo.ta(id int) ON db_fg1
    --在文件组 db_fg2 上创建表 tb
    CREATE TABLE db.dbo.tb(id int) ON db_fg2
    GO--备份事务日志
    BACKUP LOG db TO DISK ='c:\db_log.bak' WITH FORMAT
    GO--如果因为某些要求只还原ta表,则使用RESTORE DATABASE语句配合WITH PARTIAL和NORECOVERY选项以另一个名称还原数据库和文件组db_fg1,另外,还将主文件和文件组primary、事务日志和已还原的文件组中的所有文件移到新位置。日志即得到恢复
    RESTORE DATABASE db_a 
    FILEGROUP='db_fg1' 
    FROM DISK='c:\db.bak' 
    WITH NORECOVERY,PARTIAL,
    MOVE 'db_data' TO 'c:\db_data_a.mdf',
    MOVE 'db_log' TO 'c:\db_log_a.ldf',
    MOVE 'db_fg1_data' TO 'c:\db_fg1_data_a.ndf'--恢复日志
    RESTORE LOG db_a FROM DISK='c:\db_log.bak' WITH RECOVERY
    --显示恢复结果
    SELECT COUNT(*) FROM db_a.dbo.ta
    /*--结果
    ----------- 
    0(所影响的行数为 1 行)
    --*/
    GO--因为只恢复了文件组db_fg1,位于文件组db_fg2上的表tb无法被访问
    SELECT COUNT(*) FROM db_a.dbo.tb
    /*--将收到错误信息
    警告: 查询处理器无法生成计划,因为表 'db_a.dbo.tb' 已标记为 OFFLINE。
    --*/
    GO--删除测试
    DROP DATABASE db,db_a
      

  2.   

    但是在ASP做的系统当中,数据库还原时说是数据库正在使用不能还原(只打开了当前还原备份页面)!!
    要怎么解决这个问题!??
      

  3.   

    --将数据库“MyDb”备份到“C:\AAA.BAK'
    BACKUP DATABASE MyDB to DISK = 'C:\AAA.BAK'--恢复数据库”MyDb“
    RESTORE DATABASE MyDB FROM DISK = 'C:\AAA.BAK'
    --对于提示不能还原的,先把访问此数据库的进程杀掉
    --用代码先删除连接此数据库的进程declare @d varchar(8000)
    set @d=''
    select @d=@d+' kill '+cast(spid as varchar)+char(13)
    from master..sysprocesses where dbid=db_id('库名')
    exec(@d)
     
      

  4.   

    听说恢复数据库要使用master数据库!关闭数据库访问!恢复后打开数据库访问!在 ASP中怎么使用master呢?? 以及怎么关闭数据库访问!??
      

  5.   

    使用这个 "use master Restore database telephone from disk='"&bak_file&"\"&databasename&"'"    报错如下:
    错误类型:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC SQL Server Driver][SQL Server]已将数据库上下文改为 'master'。
      

  6.   

    在查询分析器中 sa权限下  这个语句可以执行 use master Restore database telephone from disk='e:\1'
    成功恢复!
    但在ASP中连接数据库也是使用SA权限!用楼上的语句不能执行!  报楼上的错!
    急!急!急!
      

  7.   

    --用代码先删除连接此数据库的进程declare @d varchar(8000)
    set @d=''
    select @d=@d+' kill '+cast(spid as varchar)+char(13)
    from master..sysprocesses where dbid=db_id('库名')
    exec(@d)==============在还原前,用KILL杀掉所有这个库正在使用的进程,
    这样就可以顺利还原了
      

  8.   

    楼上这段代码在ASP中是怎么写来的啊?