我使用c#、smo进行sqlserver 2005的备份,现在进行的备份包括2步(full,Transaction log)这2步是顺序执行的,即产生的test.bak文件包含了(full,Transaction log)。 
程序正常备份能够正确完成,按照以下步骤操作就出现了问题: 
一、有2台安装了sqlserver 2005的数据库服务器(PC-A,pc-B)。PC-A和pc-B数据库服务器都正常启动,同时建立了testdb的数据库。 
二、我的备份程序和PC-A放在一台机器上,但是进行的是对pc-B的testdb数据库进行备份,备份正确。 
三、在SQL Management Studio中重新启动PC-A数据库服务器。 
四、这时再进行对pc-B数据库备份就出现问题了,产生的备份文件只有Transaction log了,而没有full。 请各位帮忙分析一下,什么原因呢?是不是程序利用了PC-A的smo组件问题,但是重启数据库对这个有什么影响么?备份程序是这么写的
  backupDB.Action = BackupActionType.Database;            
            backupDB.Database = databaseName;          
            backupDB.PercentCompleteNotification = 1; 
            backupDB.PercentComplete += backup_percentComplete;             
             backupDB.SqlBackup(deServer); 
           backupDB.Complete += backup_complete; 
            backupDB.Action = BackupActionType.Log; 
             backupDB.SqlBackup(deServer);

解决方案 »

  1.   

                            deConnection = new ServerConnection();
                                  //SQL認証
                               deConnection.LoginSecure = false;
                            deConnection.ServerInstance = deServerAddress;
                            deConnection.Login = deUserName;
                            deConnection.Password = dePassword;                       
                            deConnection.NonPooledConnection = true;
                        deConnection.ConnectTimeout = deConnectionTimeout;
                        deConnection.Connect();
      

  2.   

    我每次备份的err log是这样的2008-03-06 09:20:27.85 Backup      Database backed up. Database: testdb, creation date(time): 2008/03/03(15:56:23), pages dumped: 211, first LSN: 64:347:37, last LSN: 64:363:1, number of dump devices: 1, device information: (FILE=1, TYPE=DISK: {'F:\\backup\2008_0306.bak'}). This is an informational message only. No user action is required.
    2008-03-06 09:20:28.01 Backup      Log was backed up. Database: testdb, creation date(time): 2008/03/03(15:56:23), first LSN: 64:345:1, last LSN: 64:368:1, number of dump devices: 1, device information: (FILE=2, TYPE=DISK: {'F:\\backup\2008_0306.bak'}). This is an informational message only. No user action is required.
      

  3.   

    还有个比较奇怪的现象,就是把pc_A的服务停止了,就好用了。我就特别奇怪,明明备份的是pc_B的内容,怎么和pc_A机器的数据库启动与否联系上了呢
      

  4.   

    log 里面, 在 PC-A 启动之后, 只能看到日志备份的记录了?
      

  5.   

    问一下,我看得是Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG是不是只有这里能看到?还哪里能看到和smo备份操作相关的东西?因为这个程序是给客户作的,客户只会描述现象,我头发都要愁白了。呜呜。就是在猜测问题呢。老大,你觉得我的程序写的有问题没?还有什么可能会造成这个问题?
      

  6.   

    老大,客户还有说,如果重新执行一下clr启动,就好用了,什么原因
    sp_configure 'clr enabled', 1
        GO
        RECONFIGURE
        GO
    ALTER DATABASE  databaseName
        SET TRUSTWORTHY ON
      

  7.   

    没有单独为smo记录的, 所有的备份都在sql的日志(就是你指的那个文件)
    也可以查msdb.dbo.backupset
    但结果一样不确定你的问题, 你可以建个环境测试一下
    另外,最新的补丁是否打了? 没有的话先试试打补丁
      

  8.   

    我们和客户统一,都打得sp1补丁我们写了一个关于读写文件的dll,然后执行create assembly CLR_Fnction
    from 'd:\file.dll'
    with permission_set = external_access