返回首页


今天早上,我从我咨询的客户的支持请求,基本上他有一个quot; SharePoint文档锁定为Editingquot中;问题,而工作与SharePoint文件。大部分时间,它是一个有效的预警信息,通知,别人可能会在相同的时间内编辑文档。
{S0的}
其他一些时间,原来是没有当前用户打开文档进行编辑,只是忍不住想知道这是怎么可能呢?
引擎盖下,这个问题可以由下列情况引起:Microsoft Office产品兑现,而你在那个特定的文件工作电脑崩溃,而该文件是开放的丢失网络连接(网络问题),而文件是开放的
嗯,是有一些快速修复工作由当地用户帐户CacheFolder的下删除的文件的本地副本来解决此问题。然而,这种方法的主要缺点是需要的PC用户的访问,以便从那里删除缓存副本。
{S}
因此,什么,特别是用户如果不工作中出现的那一天,我们不能得到保持用户通过电话/电子邮件?
兹的解决方案是建立一个小程序来解除对SharePoint内容数据库的文件/文件。 (我完全清楚,直接更新SharePoint内容数据库不鼓励通过微软SharePoint最佳实践指南"),但是,如果你知道如何AllDocs表,并确保您的查询仍将保持数据的参照完整性,这方法可能完全为你工作,在这种情况下。
{S2的}
应用程序本身的类型可能会有所不同(Windows窗体/控制台/网络应用程序),根据你的专业和实力,在这里神奇的是下面的代码片段,其中更新CheckoutExpires列值以下降锁定的文件。

private void UpdateItemCheckoutExpiration(SPListItem item)

        {

    SqlConnection contentDatabaseConnection = null;

    try

    {

        contentDatabaseConnection = 

          new SqlConnection(item.Web.Site.ContentDatabase.DatabaseConnectionString);

        contentDatabaseConnection.Open();



        string updateCommandText = string.Format(

            "UPDATE dbo.AllDocs SET CheckoutExpires " + 

            "= '{0:yyyy-MM-dd HH:mm:ss:fff}' WHERE Id = '{1}'",

            DateTime.Now.ToUniversalTime(), item.UniqueId);



        SqlCommand updateCommand = 

          new SqlCommand(updateCommandText, contentDatabaseConnection);

        SqlDataAdapter contentDataAdapter = new SqlDataAdapter();

        contentDataAdapter.UpdateCommand = updateCommand;

        contentDataAdapter.UpdateCommand.ExecuteNonQuery();

        contentDatabaseConnection.Close();

    }

    catch (Exception)

    {

        // handle exception here

    }

    finally

    {

        if (contentDatabaseConnection != null && 

            contentDatabaseConnection.State != ConnectionState.Closed)

            contentDatabaseConnection.Close();

    }

}

文件本身已对SharePoint数据库执行查询后,将被立即释放。因此,这个真棒软件,我们不会担心一些顽皮的用户打开的文件,没有检查出来,并一起吃午饭,然后有没有办法迫使它如果不能掌握自己的电脑。
快乐SharePointing的;)

回答

评论会员:j 时间:2