最佳解答者
開啟 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
問題
解答
-
1. 暫存檔,Excel 這種設計超過 20 年。
2. 請 client 端把防毒、預覽功能關閉再試。最常見是防毒軟體在檢查。
3. 最簡單就是網路芳鄰開稽核,記錄所有啟閉動作,就可以確認。在 Server 電腦管理 也可以從共用去判斷或踢人。
另外請確認 client 端是關閉離線檔案功能,離線檔案功能設計上是會將 Server 檔案抓下來,存入本機暫存區,編輯完後,再背景寫回 Server ,因此雖然存取鎖定情況減少,但是同步衝突會增加,可以在離線檔案那邊看到還有哪些檔案因為同步衝突而被擱置,比如說 A/B 同時更新,到底以誰為準。
Excel 檔案並非設計為多人同時編輯,應避免多人同時編輯才是正道。
不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?
- 已提議為解答 楊煥謀 2014年10月20日 下午 02:03
- 已標示為解答 璉璉MVP, Moderator 2014年10月25日 上午 03:46
所有回覆
-
1. 暫存檔,Excel 這種設計超過 20 年。
2. 請 client 端把防毒、預覽功能關閉再試。最常見是防毒軟體在檢查。
3. 最簡單就是網路芳鄰開稽核,記錄所有啟閉動作,就可以確認。在 Server 電腦管理 也可以從共用去判斷或踢人。
另外請確認 client 端是關閉離線檔案功能,離線檔案功能設計上是會將 Server 檔案抓下來,存入本機暫存區,編輯完後,再背景寫回 Server ,因此雖然存取鎖定情況減少,但是同步衝突會增加,可以在離線檔案那邊看到還有哪些檔案因為同步衝突而被擱置,比如說 A/B 同時更新,到底以誰為準。
Excel 檔案並非設計為多人同時編輯,應避免多人同時編輯才是正道。
不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?
- 已提議為解答 楊煥謀 2014年10月20日 下午 02:03
- 已標示為解答 璉璉MVP, Moderator 2014年10月25日 上午 03:46
-
感謝您的回覆,
此問題主要是想解決Excel2010在上述環境使用狀況下,
會致無法正常顯示如第2點貼圖-顯示出由某使用者編輯而鎖定。
致使用只能看到如3.2的貼圖"由其他使用者鎖定",而無法得知目前誰在使用中。
而使用者希望能看到是誰在占用中。因為發生此問題時,我從server 端查看發現「檔案名稱.xlsx 和 ~$檔案名稱.xlsx」的"寫入"權限已變成由不同帳號所占用。
即「檔案名稱.xlsx和~$檔案名稱.xlsx」 本應都由 A"寫入"占用。變成「檔案名稱.xlsx A寫入占用」,而「~$檔案名稱.xlsx B寫入占用」。且當大家都將檔案關閉後(即無人使用),仍會留下一個檔案大小0k的「~$檔案名稱.xlsx 」不會被刪除。(正常狀況下應該關閉檔案後1k的「~$檔案名稱.xlsx 」就會一併消失。)
我若不手動刪除該隱藏檔,則之後開啟的就永遠無法顯示由誰在使用中,只有將該隱藏檔刪除,讓下次開檔案的使用者「檔案名稱.xlsx和~$檔案名稱.xlsx」都是同一個人在"寫入"占用,才能正常顯示由該使用者編輯而鎖定。不過即使暫存檔是由另一使用者寫入占用,在大多狀況下「檔案名稱.xlsx」 在寫入狀態的使用者仍可以正常的執行儲存。也就是仍可以正常使用,只是不知是誰在使用。
因為這樣能否明白我的問題說明?
如何解決因暫存檔「~$檔案名稱.xlsx」被寫入占用,而無法知道由某使用者編輯而鎖定? -
舉兩個例子:
甲例:
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 。
所以回過頭,我原先回應的你有看懂嗎?
不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?
-
謝謝您~我有看懂您的回應,
關於離線功能: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