3

首先,我正在学习 sharepoint 2013 并且我一直在学习一些教程,到目前为止,我只是设置了一个场,除了每 5 分钟登录到事件查看器的该服务之外,一切似乎都正常工作:

作业定义 Microsoft.Office.Server.UserProfiles.LMTRepopulationJob (ID 1e573155-b7f6-441b-919b-53b2f05770f7) 的 Execute 方法引发了异常。更多信息包括在下面。

FeedCacheService.BulkLMTUpdate 中的意外异常:无法创建 DataCache。SPDistributedCache 可能已关闭..

我发现这是一个配置为每 5 分钟执行一次的作业

在此处输入图像描述

但是关于 SPDistributedCache 可能已关闭的假设,我已经验证了它并且它正在运行

在此处输入图像描述

在此处输入图像描述

如您所见,它实际上正在运行,我还通过 SP powershell ( get-cachehostand get-cacheclusterhealth) 检查了主机缓存,但一切似乎都很好

在此处输入图像描述

然而,当我执行命令时,get-cache我只得到默认值,对于我所读到的内容,应该列出其他缓存类型,如:

DistributedAccessCache_XXXXXXXXXXXXXXXXXXXXXXXXXXX DistributedBouncerCache_XXXXXXXXXXXXXXXXXXXXXXXX DistributedSearchCache_XXXXXXXXXXXXXXXXXXXXXXXXX DistributedServerToAppServerAccessTokenCache_XXXXXXX DistributedViewStateCache_XXXXXXXXXXXXXXXXXXXXXXX

其中我认为可能应该包括 DataCache

在此处输入图像描述

直到现在我已经尝试了一些解决方法但没有成功

Restart-Service AppFabricCachingService
Remove-SPDistributedCacheServiceInstance
Add-SPDistributedCacheServiceInstance
Restart-CacheCluster

即使这个脚本似乎在许多情况下都可以修复 AppFabric 缓存服务

$SPFarm = Get-SPFarm
$cacheClusterName = "SPDistributedCacheCluster_" + $SPFarm.Id.ToString()
$cacheClusterManager = [Microsoft.SharePoint.DistributedCaching.Utilities.SPDistributedCacheClusterInfoManager]::Local
$cacheClusterInfo = $cacheClusterManager.GetSPDistributedCacheClusterInfo($cacheClusterName);
$instanceName ="SPDistributedCacheService Name=AppFabricCachingService"
$serviceInstance = Get-SPServiceInstance | ? {($_.Service.Tostring()) -eq $instanceName -and ($_.Server.Name) -eq $env:computername}
$serviceInstance.Delete()
Add-SPDistributedCacheServiceInstance
$cacheClusterInfo.CacheHostsInfoCollection

好吧,如果有人有任何建议,我将不胜感激,在此先感谢您!

4

3 回答 3

1

这是一条通用错误消息,意味着真正的问题未知(因此使用“可能”一词)。

我相信解决这个问题的关键不是可能,而是在 ULS 日志中查找在它之前发生的事件。“意外”类型的事件不会出现在事件日志中,并且经常出现在一般类型的错误之前。

在许多情况下,您可能会看到类似“找不到文件”的内容。这通常意味着注明的文件不在程序集缓存中。由于分布式缓存使用 Sharepoint 之外的 AppFabric,因此 Sharepoint 查找其文件的唯一方法是查看程序集缓存。sharepoint pre Installer 应该已将文件放在那里,但它可能已失败,或者可能有人卸载了 App Fabric 并手动重新安装,这会从程序集中删除文件而不会放回它们。

于 2016-02-29T10:56:42.780 回答
1

Restart-CacheCluster您可以指定与您的 SharePoint 数据库的连接之前(目录名称可能不同)

Use-CacheCluster -ConnectionString "Data Source=(SharePoint DB Server)
\\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;
Integrated Security=True" -ProviderType System.Data.SqlClient

注意:它不会永久有效

注意 2:如果您在 DB Server 上没有命名实例,只需将您的服务器名称放在不带“\”的位置即可。

如果你没有目录,你可以按照这个脚本

***
Remove-Cache default
New-Cache SharePointCache
Get-CacheConfig SharePointCache
Set-CacheConfig SharePointCache -NotificationsEnabled True
***
New-CacheCluster -Provider System.Data.SqlClient -ConnectionString  "Data     Source=(SharePoint DB Server)\\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True" -Size Small

Register-CacheHost -Provider System.Data.SqlClient -ConnectionString  "Data Source=(SharePoint DB Server)\\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True"  -Account "Domain\spservices_account" -CachePort 22233 -ClusterPort 22234  -ArbitrationPort 22235 -ReplicationPort 22236 -HostName  [Name_of_your_server]

Add-CacheHost -Provider System.Data.SqlClient -ConnectionString  "Data Source=(SharePoint DB Server)\\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True" -Account "Domain\spservices_account"

Add-CacheAdmin -Provider System.Data.SqlClient -ConnectionString  "Data Source=(SharePoint DB Server)\\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True" 

Use-CacheCluster

您可以在 regedit 中指定或检查您的数据库配置

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppFabric\V1.0\Configuration

查找 ConnectionString 字符串值,并设置您的连接字符串

Data Source=(SharePoint DB Server)\(Optional Instance);Initial Catalog=CacheClusterConfigurationDB;Integrated Security=True

要查询服务器的状态,您可以使用:

Get-SPServiceInstance | ? {($_.service.tostring()) -eq “SPDistributedCacheService Name=AppFabricCachingService”} | select Server, Status
Get-SPServer | ? {($_.ServiceInstances | % TypeName) -contains "Distributed Cache"} | % Address
Get-AFCache | Format-Table –AutoSize
Get-CacheHost

附加:如果您需要更改您的服务帐户,您可以执行此过程:

$f = Get-SPFarm
$svc = $f.Services | ? {$_.Name -eq "AppFabricCachingService"}
$acc = Get-SPManagedAccount -Identity "Domain\spservices_account"
$svc.ProcessIdentity.CurrentIdentityType = "SpecificUser"
$svc.ProcessIdentity.ManagedAccount = $acc
$svc.ProcessIdentity.Update()
$svc.ProcessIdentity.Deploy()
于 2017-08-22T15:34:04.577 回答
0

您是否从农场帐户更改了分布式缓存帐户?你在什么版本号?这是一个单一的服务器场吗?

在我的脑海中,唯一剩下的就是:

Grant-CacheAllowedClientAccount -Account "domain\ProfileserviceWebAppIdentity"

运行此命令后,我会执行 iisreset 并重新启动 owstimer 服务。

于 2015-10-05T18:30:29.753 回答