Sharepoint - Clearing short term file lock

For the benefit of future generations, a file lock can be removed via Powershell on an on-premises installation of SharePoint 2010 or later.

How can this happen?

Files can get locked when a client application fails to update the server-side file token that indicates whether a file is currently being edited. (This type of lock is application-specific, and thus different from the explicit Check In/Check Out functionality provided by SharePoint document libraries.) This scenario comes up when computers (or applications) crash unexpectedly, or get disconnected from the network.

With Office products, the file lock is supposed to expire automatically after ten minutes, and this is usually the case. Sometimes a lock seems to persist, which may be the result of browser caching problems or bugs in the way client applications handle the file locks.

How can we fix it?

The Powershell for removing a file lock is as follows:

$web = get-spweb "http://myfarm/mysite/mysubsite"
$list = $web.Lists["My Library"]
$item = $list.Items.GetItemById(123)
$item.File.ReleaseLock($item.File.LockId)
$web.Dispose()

Replace the placeholders with values appropriate to your environment/list/document; use the actual subsite URL in the get-spweb cmdlet, use the library's title to retrieve it from the $web.Lists collection, and use the actual ID of the problem document as the parameter in GetItemById().

This Powershell should be executed from a web front end server on your SharePoint farm. You'll need to load the PS snapin for SharePoint cmdlets such as get-spweb, unless you use the SharePoint Management Shell installed with SharePoint, which starts a Powershell session with the SharePoint snapins already loaded.

Use impersonation if necessary to release the lock

If you run the above Powershell and still run up against an error like this...

Exception calling "ReleaseLock" with "1" argument(s): "The file XXXXXXX is locked for exclusive use by XXXXX"

...you can try using impersonation to release the lock. This is accomplished by using the LockedByUser property of the file to get a reference to the user you need to impersonate, then creating a new SPSite object instance passing in that user's token as a second parameter.

$web = get-spweb "http://myfarm/mysite/mysubsite"
$list = $web.Lists["My Library"]
$item = $list.Items.GetItemById(123)

$userId = $item.File.LockedByUser.ID
$user = $web.AllUsers.GetById($userId)

$impSite = New-Object Microsoft.SharePoint.SPSite($web.Url, $user.UserToken);
$impWeb = $impSite.OpenWeb();
$impList = $impWeb.Lists[$list.Title];
$impItem = $impList.GetItemById($item.ID);
$impItem.File.ReleaseLock($impItem.File.LockId)

$impWeb.Dispose()
$impSite.Dispose()
$web.Dispose()

$impSite and $impWeb in the above example are SPSite and SPWeb objects using the impersonated user token.


In short, whenever a user has the document open, it locks the file. When that same user has Word lock up or he has it open in the background it will lock that file. The lock will refresh everytime that same user will try to access it again. The user needs to stay out of the file for 10 minutes.

Link: http://support.microsoft.com/kb/899709

  1. Check whether the file has been properly checked in or not. If not, refresh the page and try to check in the file again.

  2. Delete the local copy of the file present in the cache folder of the concerned user account (access to user’s PC required).

  3. Close all the instances of file type opened in the system. E.g. if the file type is excel, then close all the excel files currently opened.

  4. Also kill the file type service (excel in this case) using the task manager.

Source: http://www.techtimepiece.com/2012/04/sharepoint-error-file-is-locked-for.html

When things get tough, my resolution usually is sometimes an IISReset.


This has happened to me several times in SharePoint Online (2013). I will describe below my scenario and my solution which worked instantly.

Scenario:

  • User has a SharePoint file open in edit mode.
  • User disconnects from the network or restarts computer without properly closing the file
  • When user tries to edit the same file after rebooting they receive a message stating the file is checked out to themselves

Solution:

  • In Internet Explorer go to "Internet Options"
  • Delete browsing history
  • Problem solved

Tags: