none
開啟 EXCEL 2010 檔案時,為何會產生隱藏檔~$xxxx.xlsx ? 多人同時開啟時常產生問題~

    問題

  • 環境:Win7 64bit,Excel 2010,Windows server 2003 開共用資料夾,於xlsx檔設定「防寫密碼」,內網環境。

    1. 使用Excel 2010 開啟 xlsx 檔案會於相同路徑產生一隱藏檔 「~$檔案名稱.xlsx」,作用為何?

    2. 從Server端的「我的電腦\管理\共用資料夾\開啟檔案」查看該檔案的狀態,只要Client端一click到該檔案(還沒點二下開啟),
        Server端的檔案狀態就已經變成"寫入",要再過一下子才會變回"讀取"。
        但若於此時有另一個人開檔案時就會直接出現「被"使用者A"編輯而被鎖定了」的訊息。
        請問如何能不讓Client端click到該檔案即變成寫入狀態??而造成此以為有開啟檔案的誤解情況。  
      

    3. 若該檔案一開始沒人占用,使用者A順利輸入防寫密碼進入,仍會有下列二狀況產生:
    3.1 正常狀況下,於server 端查看「檔案名稱.xlsx 和 ~$檔案名稱.xlsx」會是同一使用者帳號A,而其他使用者開啟該檔案時可以看到「被"使用者A"編輯而被鎖定了」的訊息。=>這是正常的訊息。

    3.2 但常因不明原因(依我判斷是在存檔或自動存檔的瞬間,該檔被其他使用者B開啟),「~$檔案名稱.xlsx」的使用者會變成另一個使用者B。此時若再有其他使用者開啟該檔案就會變成,「被"其他使用者"編輯而被鎖定了」,而無法辨識該使用者為誰?這是目前最困擾我的問題,請問如何解決???
              

    3.3 承上面問題還有另一個狀況是使用者B開啟唯讀進入,但在A存檔的瞬間「檔案名稱.xlsx」寫入權限被B搶走了,也就是A此時再存檔就無法儲存,而B使用者在Client仍看到唯讀,可是在Server端看就可看到該檔案變成B是寫入。所以要請B關閉唯讀檔案才能再請A存檔。

    麻煩請指教~謝謝~

    ps. 此問題在原本server端:windows Server 2003及client端:office2003+xp運作正常,沒有此問題。Client端office升級成office2010及win7環境後才產生的。






    • 已編輯 MNJAO 2014年10月21日 上午 02:22
    2014年10月20日 上午 09:33

解答

  • 1. 暫存檔,Excel 這種設計超過 20 年。

    2. 請 client 端把防毒、預覽功能關閉再試。最常見是防毒軟體在檢查。

    3. 最簡單就是網路芳鄰開稽核,記錄所有啟閉動作,就可以確認。在 Server 電腦管理 也可以從共用去判斷或踢人。

    另外請確認 client 端是關閉離線檔案功能,離線檔案功能設計上是會將 Server 檔案抓下來,存入本機暫存區,編輯完後,再背景寫回 Server ,因此雖然存取鎖定情況減少,但是同步衝突會增加,可以在離線檔案那邊看到還有哪些檔案因為同步衝突而被擱置,比如說 A/B 同時更新,到底以誰為準。

    Excel 檔案並非設計為多人同時編輯,應避免多人同時編輯才是正道。

     


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月20日 下午 01:53

所有回覆

  • 1. 暫存檔,Excel 這種設計超過 20 年。

    2. 請 client 端把防毒、預覽功能關閉再試。最常見是防毒軟體在檢查。

    3. 最簡單就是網路芳鄰開稽核,記錄所有啟閉動作,就可以確認。在 Server 電腦管理 也可以從共用去判斷或踢人。

    另外請確認 client 端是關閉離線檔案功能,離線檔案功能設計上是會將 Server 檔案抓下來,存入本機暫存區,編輯完後,再背景寫回 Server ,因此雖然存取鎖定情況減少,但是同步衝突會增加,可以在離線檔案那邊看到還有哪些檔案因為同步衝突而被擱置,比如說 A/B 同時更新,到底以誰為準。

    Excel 檔案並非設計為多人同時編輯,應避免多人同時編輯才是正道。

     


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月20日 下午 01:53
  • 感謝您的回覆,
    此問題主要是想解決Excel2010在上述環境使用狀況下,
    會致無法正常顯示如第2點貼圖-顯示出由某使用者編輯而鎖定。
    致使用只能看到如3.2的貼圖"由其他使用者鎖定",而無法得知目前誰在使用中。
    而使用者希望能看到是誰在占用中。

    因為發生此問題時,我從server 端查看發現「檔案名稱.xlsx 和 ~$檔案名稱.xlsx」的"寫入"權限已變成由不同帳號所占用。
    即「檔案名稱.xlsx和~$檔案名稱.xlsx」 本應都由 A"寫入"占用。變成「檔案名稱.xlsx  A寫入占用」,而「~$檔案名稱.xlsx B寫入占用」。且當大家都將檔案關閉後(即無人使用),仍會留下一個檔案大小0k的「~$檔案名稱.xlsx 」不會被刪除。(正常狀況下應該關閉檔案後1k的「~$檔案名稱.xlsx 」就會一併消失。)
    我若不手動刪除該隱藏檔,則之後開啟的就永遠無法顯示由誰在使用中,只有將該隱藏檔刪除,讓下次開檔案的使用者「檔案名稱.xlsx和~$檔案名稱.xlsx」都是同一個人在"寫入"占用,才能正常顯示由該使用者編輯而鎖定。

    不過即使暫存檔是由另一使用者寫入占用,在大多狀況下「檔案名稱.xlsx」 在寫入狀態的使用者仍可以正常的執行儲存。也就是仍可以正常使用,只是不知是誰在使用。

    因為這樣能否明白我的問題說明?
    如何解決因暫存檔「~$檔案名稱.xlsx」被寫入占用,而無法知道由某使用者編輯而鎖定?

    2014年10月21日 上午 10:03
  • 舉兩個例子:

    甲例:

    1. 公司有多個自動跳台無線基地台。

    2. A 君拿 NB 開啟 1.xls 在會議室簡報。

    3. 簡報完畢,A 君拎著 NB 回到座位 (可能發生瞬斷、休眠、自動變更無線基地台等讓 NB 斷網的狀況)

    4. Server 失去 NB 連線,a.xls / ~a.xls 都會變更為無效的 handle (鎖定但無有效的擁有者)

    5. A 君回到座位關閉 a.xls。

    6. B 君開啟 a.xls ,發生 a.xls 被鬼鎖定。

    乙例:

    0. A 君 NB 有開離線檔案,B 君 NB 沒開離線檔案。

    1. A 君開啟 1.xls ,自動下載到 NB 離線檔案區,在 A 君 NB 開啟,在 NB 產生 1.xls / ~1.xls

    2. A 君完成 1.xls 編輯, NB 於空閒時,自動同步 (從 NB 上傳到 Server,這個時間無法掌控,除非進入離線檔案管理下選擇立即同步) 。

    3. B 君開啟 1.xls ,因為 1.xls 正在被 A 同步,所以被 A 鎖定,B 君就只開成 ~1.xls 。

    所以回過頭,我原先回應的你有看懂嗎?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月21日 下午 02:00
  • 謝謝您~我有看懂您的回應,

    關於離線功能:Client端是都未開啟的,所以不是乙例的狀況。
    關於防毒軟體:我有將防毒關閉測試,但檔案會有被寫入占用的問題仍然會發生 
    因為我是內網環境(非無線),所以沒有甲例網路斷線或休眠之類的狀況。

    另修正我的問題和觀察,
    1. 在一開始A君正常開啟 1.xlsx (檔案大小約2MB) ,此時1.xlsx和~$1.xlsx在Server端可看到狀態都是由A君"寫入"。
        一般狀況B君開啟1.xlsx會出現下圖,知道由誰占用。
        

    2. 但當A君儲存檔案或excel執行自動存檔的瞬間,此時若B君開啟1.xlsx,則~$1.xlsx則會被B占用,
        此時就會資料夾看到原本檔案大小1k的~$1.xlsx由變成0k。
        此時在Server端看就會出現很多個~$1.xlsx,連原本~$1.xlsx是寫入狀態的A君都變成讀取,
        甚至出現好多筆~$1.xlsx讀取(但在資料夾仍只有看到一個0k的~$1.xlsx),
        而會出現此原因是因為該該檔案已被B君開的0k暫存檔~$1.xlsx所占用,
        所以A君無法再產生正常要出現的1k"寫入"暫存檔~$1.xlsx。

        此後,即做A和B君都關閉1.xlsx檔案,0k的~$1.xlsx也都不會消失,
        所以下一個使用者再開啟1.xlsx檔案就會因為0k的~$1.xlsx已存在,
        因此無法產生寫入模式的1k暫存檔~$1.xlsx(即~$1.xlsx只是讀取而無任何人是寫入模式,如下圖)。
        
        因為沒有1k暫存檔~$1.xlsx,所以excel就判斷不到現在是那一個使用在在占用,
        就會出現「被"其他使用者"編輯而被鎖定了」的訊息。       

    3. 還有另一種狀況即使A君只點到該檔案尚未開啟甚至只是瀏覽該網路資料夾,
        此時我在server端仍可看到出現短暫的寫入狀態然後消失,
        若剛好在未消失前,B君開啟該檔案也會發生1.xlsx寫入和~$1.xlsx讀取的狀況。
        (本以為是win7的縮圖功能影響,但我也將Client端的縮圖功能關閉,情況仍一樣)

    我目前只能確認excel是利用暫存檔來顯示目前是由那個使用者在編輯而鎖定,但只要暫存檔被其他使用者占走,無法再產生1k的暫存檔後,就會判斷不到是那一使用者在編輯使用了~
    不知道如何將~$1.xlsx的寫入權限不會因為在儲存或任何狀況被其他使用者占走,而讓excel能正常的顯示出目前的使用者是誰~

    不好意思,因為不太好說明,我盡量將我的問題說明清楚,感謝費心與指教~






    • 已編輯 MNJAO 2014年10月22日 上午 06:57
    2014年10月22日 上午 06:47
  • 你 Server 檔案目錄的權限是否設定為禁止刪除?

    你網路芳鄰的稽核全開了嗎?全開以後,直接看事件檢視器。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月22日 下午 12:43
  • 還有,Excel 內建的檔案共用屬性不要開,開了只會累網管,先關掉當成一般檔案存取。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月22日 下午 12:44