当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 修复 SharePoint 迁移中 Test-SPContentDatabase 的 MissingSetupFile 错误

作者:精品下载站 日期:2024-12-14 14:10:01 浏览:14 分类:玩电脑

修复 SharePoint 迁移中 Test-SPContentDatabase 的 MissingSetupFile 错误


问题:
迁移过程中在 SharePoint 内容数据库上运行“Test-SPContentDataBase”cmdlet 时出现“MissingSetupFile”错误。
[MissingSetupFile] 文件 [Features\Feature-folder\feature-artifact] 在数据库 [SharePoint_Content_database] 中被引用 [1] 次,但未安装在当前场中。请安装包含此文件的任何功能/解决方案。数据库 [SharePoint_Content_database] 中引用了一个或多个安装文件,但未安装在当前服务器场中。请安装包含这些文件的任何功能或解决方案。

[玩转系统] 修复 SharePoint 迁移中 Test-SPContentDatabase 的 MissingSetupFile 错误

解决方案:

那么,解决方案是:安装并部署从源场到目标场的所有解决方案。您的组织可能已在 SharePoint 2010 环境中构建和部署了多个自定义项,例如第 3 方产品(例如竹子解决方案)、自定义 WSP 解决方案、网站定义、功能、事件接收器、Web 部件、用户控件等。在测试内容数据库进行升级之前,您必须将所有这些二进制文件和解决方案安装并部署到目标 SharePoint 2013 环境。

将解决方案从源场部署到目标场:

  • 转至 SharePoint 管理中心 >> 导航至“解决方案管理”>> 从 SharePoint 2010 场(或任何 SharePoint 源场)的系统设置中管理场解决方案。
  • 列出部署到农场的所有 WSP 解决方案的清单。确定部署这些解决方案的 Web 应用程序。
  • 下载所有 WSP 文件并将其移植到目标场。根据源场将它们全部部署在目标中。

您可以使用 PowerShell 自动化执行上述步骤,而不是手动执行:

  1. 如何提取和下载 SharePoint 中的所有 WSP 解决方案文件
  2. 如何在 SharePoint 中使用 PowerShell 安装和部署多个 WSP 解决方案

如果您不需要那些缺失的功能工件(例如 Target 场中的 Web 部件)并从内容数据库中清理缺失的安装文件,该怎么办?

用于查找和删除丢失的安装文件的 PowerShell 脚本:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

Function Run-SQLScript($SQLServer, $SQLDatabase, $SQLQuery)
{
    $ConnectionString = "Server =" + $SQLServer + "; Database =" + $SQLDatabase + "; Integrated Security = True"
    $Connection = new-object system.data.SqlClient.SQLConnection($ConnectionString)
    $Command = new-object system.data.sqlclient.sqlcommand($SQLQuery,$Connection)
    $Connection.Open()
    $Adapter = New-Object System.Data.sqlclient.sqlDataAdapter $Command
    $Dataset = New-Object System.Data.DataSet
    $Adapter.Fill($Dataset) 
    $Connection.Close()
    $Dataset.Tables[0]
}

#Define configuration parameters
$Server="Ab-SQL-001"
$Database="SP10_Content_KM"
$SetupFile="Features\Crescent.Intranet.WebParts\WEFnews\WEFnews.dwp"

#Query SQL Server content Database to get information about the MissingFiles
$Query = "SELECT * from AllDocs where SetupPath like '"+$SetupFile+"'"
$QueryResults = @(Run-SQLScript -SQLServer $Server -SQLDatabase $Database -SQLQuery $Query | select Id, SiteId, WebId)

#Iterate through results
foreach ($Result in $QueryResults)
{
    if($Result.id -ne $Null)
    {
        $Site = Get-SPSite -Limit all | where { $_.Id -eq $Result.SiteId }
        $Web = $Site | Get-SPWeb -Limit all | where { $_.Id -eq $Result.WebId }

        #Get the URL of the file which is referring the feature
        $File = $web.GetFile([Guid]$Result.Id)
        write-host "$($Web.URL)/$($File.Url)" -foregroundcolor green
        
        #$File.delete()
    }
}

此脚本可获取引用丢失的安装文件的所有位置(并可选择删除它们!)。不要忘记适当地设置变量 $Server、$Database 和 $SetupFile!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯