文章編號: 818518 - 上次校閱: 2007年5月17日 - 版次: 1.2

當您嘗試將 ADO 資料錄集儲存到檔案時,就會發生 FIX: 「 無法儲存 」 錯誤

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當想將 ADO 資料錄集儲存到另一個使用者的系統已建立的檔案可能會收到下列錯誤訊息:
執行階段錯誤 '-2147286781 (80030103) ':
無法儲存。
您收到這個錯誤訊息如果在應用程式是一個唯讀的資料夾即使是在兩個使用者的寫入權限的資料夾中的資料錄集檔案。

發生的原因

當您嘗試儲存資料錄集檔已經存在的 資料錄集 物件的應用程式資料夾中建立暫存檔案。此資料夾是唯讀的資料夾。因此,第二個使用者不能覆寫原始程式檔。

解決方案

在 Microsoft 資料存取元件 (MDAC) 2.8 解決這個問題。MDAC 2.8 [ADODB 中資料錄集做為目的地檔案,用來儲存資料錄集相同的資料夾中建立暫存檔案。

如果要下載 Microsoft 資料存取元件 (MDAC) 2.8,請造訪下列 Microsoft 網站:
附註Microsoft 建議您測試應用程式與 MDAC 2.8 在測試環境中先,以確定您已知道任何相容性問題的之前您決定要使用或升級至 MDAC 2.8 版。

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。 這個 Bug 已經在 MDAC 2.8 中獲得修正。

其他相關資訊

重製行為的步驟

  1. 啟動 Microsoft Visual Basic 6.0。
  2. 在 [檔案] 功能表上按一下 [新增專案]。在 [新增專案] 對話方塊中,按一下 [標準 Exe]。依照預設值,會建立 Form1。
  3. 按一下 [專案] 功能表 引用項目。按一下 [Microsoft ActiveX 資料物件 2.7 庫,然後按一下 [確定]
  4. 將兩個 命令 按鈕加入至表單。
  5. Right-click Form1, click View Code, and then add the following code:
    Option Explicit
    
    Private Sub Command1_Click()
       Dim cn As New Connection
       Dim rs As New Recordset
    
       On Error GoTo ErrHandler
       cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=YourSQLServer"
       cn.Open
          
       ' Open the RecordSet
       rs.Open "SELECT * FROM CUSTOMERS", cn, adOpenDynamic, adLockPessimistic
       
       ' Persist the RecordSet
       rs.Save "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       Exit Sub
       
    ErrHandler:
       MsgBox "Error : " & Err.Description
    End Sub
    
    Private Sub Command2_Click()
       Dim rs As New ADODB.Recordset
       
       On Error GoTo ErrHandler:
       
       ' Read the Persisted RecordSet
       rs.Open "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       ' Save the RecordSet
       rs.Save "C:\Documents and Settings\NonAdminUserName\My Documents\Customer.dat"
       
       Exit Sub
    
    ErrHandler:
       MsgBox "Error Number: " & Err.Number
       MsgBox "Error Description: " & Err.Description
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Persist RecordSet"
       Command2.Caption = "Reload Data"
    End Sub
    
  6. 在連接字串中的"YourSQLServer 」 取代為 SQL Server 名稱。
  7. 將專案儲存在 C:\Program Files\Test 資料夾中。
  8. 在 [執行] 功能表上按一下 [開始]。
  9. 按一下 [保存的資料錄集,然後再按一下 [重新載入資料。不會發生錯誤。
  10. 登入電腦,以非系統管理員使用者 (預設情況下,非系統管理員不能寫入存取 C:\Program Files\ 至資料夾)。
  11. 再次執行該專案。您會收到 < 徵狀 > 一節所述之錯誤訊息。

?考

如需有關 Microsoft 資料存取技術,請造訪下列 Microsoft Web 網站:
http://www.microsoft.com/data (http://www.microsoft.com/data)

這篇文章中的資訊適用於:
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components
關鍵字:?
kbmt kbprogramming kbdataobject kbfix KB818518 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:818518? (http://support.microsoft.com/kb/818518/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。