none
使用vb2005備份,還原資料庫(SQL2005)的問題 RRS feed

  • 問題

  • 各位好:

    小弟使用 VB2005 來處理 SQL2005 的備份及環原. 目前設置如下:
    設置 aaaa 資料庫, 設定 bbbb 使用者為 aaaa 的 owner.
    bbbb 不是 windows 帳號, 而是獨立的 sql 帳號.

    使用 SQL Server Management 時, sa 可以備份/還原資料庫 aaaa 成為檔案.
    用 bbbb 則無法取得目錄權限, 因此無法備份/還原成檔案.

    VB2005 內以 bbbb 連線, 可以修改資料, 可以備份, 但無法還原資料庫.
    出現的訊息是:
    User does not have permission to RESTORE database 'aaaa'. RESTORE DATABASE is terminating abnormally.

    但如果在 VB2005 內使用 sa 連線的話, 進行還原時, 則是這個訊息:
    RESTORE cannot process database 'aaaa' because it is in use by this session. It is recommended that the master database be used when performing this operation. RESTORE DATABASE is terminating abnormally.

    備份時用的程式如下:
    SQLCommandString = "BACKUP DATABASE [aaaa] TO  DISK = N'" & tFilename & "' WITH NOFORMAT, INIT,  NAME = N'aaaa-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10;declare @backupSetId as int;select @backupSetId = position from msdb..backupset where database_name=N'aaaa' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'aaaa' );if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''aaaa'' not found.', 16, 1) end;RESTORE VERIFYONLY FROM  DISK = N'" & tFilename & "' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND;"

    還原時用的程式如下:
    SQLCommandString = "RESTORE DATABASE [aaaa] FROM  DISK = N'" & tFilename & "' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10;"

    請問, 如果不使用 sa 這個帳號的話, 要怎樣作, 才有辦法還原資料庫?
    謝謝高人相助.


    Thanks for any information. Streit Huang @ Taiwan
    2009年9月8日 下午 01:50

解答

  • 要還原資料庫,基本的要求就是 ... 要讓還原程式獨佔資料庫。

    1. 修改你的連線字串的 initial catalog,指向 master 資料庫(不是你要還原的那個資料庫)。
    2. 還原資料庫的帳戶必須要有至少 sysadmin 或 dbcreator 的角色,最好是 sysadmin

    備份的權限要求比較低一些(sysadmin, db_owner 和 db_backupoperator 角色的都可以),因為備份是複製資料,但還原是覆蓋資料,不能等閒視之。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    • 已提議為解答 bauannModerator 2009年9月13日 下午 04:14
    • 已標示為解答 Lolota Lee 2009年9月15日 上午 01:28
    2009年9月8日 下午 03:11
    版主

所有回覆

  • 要還原資料庫,基本的要求就是 ... 要讓還原程式獨佔資料庫。

    1. 修改你的連線字串的 initial catalog,指向 master 資料庫(不是你要還原的那個資料庫)。
    2. 還原資料庫的帳戶必須要有至少 sysadmin 或 dbcreator 的角色,最好是 sysadmin

    備份的權限要求比較低一些(sysadmin, db_owner 和 db_backupoperator 角色的都可以),因為備份是複製資料,但還原是覆蓋資料,不能等閒視之。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    • 已提議為解答 bauannModerator 2009年9月13日 下午 04:14
    • 已標示為解答 Lolota Lee 2009年9月15日 上午 01:28
    2009年9月8日 下午 03:11
    版主
  • hi
    不知道你執行程式的使用者帳戶???
    通常呼叫程式去備份和還原SQL SERVER   該windows帳戶都需要有讀,寫和執行權限
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年9月8日 下午 04:53