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

[玩转系统] 在 SharePoint 中查找并删除未使用的孤立数据库

作者:精品下载站 日期:2024-12-14 13:46:30 浏览:16 分类:玩电脑

在 SharePoint 中查找并删除未使用的孤立数据库


问题:
在 SharePoint 2013 试验环境中,创建了多个 Web 应用程序和服务应用程序用于测试目的。其中一些 Web 应用程序被删除,但未删除其数据库。一段时间后,数据库服务器已满,我们必须通过删除未使用的 SharePoint 数据库来清理 SQL Server。

解决方案:

使用 SharePoint 2013 管理中心查找 Web 应用程序使用的数据库。

获取活动 SharePoint 内容数据库:
导航到中央管理 > 应用程序管理 > 管理内容数据库页面。您可以选择并查看 Web 应用程序使用哪些内容数据库。

获取活动 SharePoint 服务应用程序数据库:
同样,导航到管理中心 > 管理服务应用程序 >> 选择服务应用程序 > 属性。这将向您显示特定服务应用程序使用哪些数据库。

但是,您必须对所有 Web 应用程序和服务应用程序手动重复这些步骤,以找到您未使用的应用程序。

用于查找孤立数据库的 PowerShell 解决方案:

对于每个 Web 应用程序、每个服务应用程序,一一比较 SQL Server 数据库是很乏味的,不是吗?好吧,让我们使用 PowerShell 来查找活动的 SharePoint 数据库。

步骤 1:将 SharePoint 数据库名称导出到文本文件
让我们将 SharePoint 数据库名称导出到文本文件。跑步:


Get-SPDatabase | Sort-Object Name | Select -ExpandProperty Name | Out-File "c:\SharepointDBs.txt"

[玩转系统] 在 SharePoint 中查找并删除未使用的孤立数据库

步骤 2:从 SQL Server 导出数据库名称
登录到 SQL Server Management Studio,运行此查询:


SELECT [name] FROM master.dbo.sysdatabases WHERE dbid > 4 

第 3 步:比较两个文件
如果您有像 BeyondCompare 这样的文本比较实用程序,您的任务就会容易得多。否则,您可以使用 PowerShell 比较这两个文件并获取差异。


#Get SharePoint Databases 
$SharePointDBs = Get-Content "C:\SharePointDBs.txt"
#Get SQL Server Databases 
$SQLDBs = Get-Content "C:\SQLDBs.txt"

#Compare 
Compare-Object -ReferenceObject $SharePointDBs -DifferenceObject $SQLDBs

现在,您获得了所有未使用的数据库。打开 SQL Server Management Studio,从上面的比较中识别每个未使用的数据库,然后从 SQL Server 中删除任何未使用的 SharePoint 数据库。

重要提示:删除任何数据库之前请先进行备份。

数据库实际上已被删除,但仍在 SharePoint 中引用?
如果数据库已删除但 SharePoint 仍引用它怎么办?好吧,使用此 PowerShell 脚本查找引用的所有已删除数据库:


#Find all deleted databases which are still referenced in SharePoint Farm
$OrphanDBs = Get-SPDatabase | Where {$_.Exists -eq $false}
$OrphanDBs

#Remove all Deleted database references in SharePoint
Get-SPDatabase | Where{$_.Exists -eq $false} | ForEach {$_.Delete()} 

数据库已删除但仍在 Web 应用程序中引用?


(Get-SPWebApplication https://sharepoint.crescent.com).ContentDatabases

这将为您提供与 Web 应用程序关联和引用的所有内容数据库。从输出中,选择孤立数据库 ID 并将其提供给:


$WebApp = Get-SPWebApplication https://sharepoint.crescent.com
$webApp.ContentDatabases.Delete("Database-GUID")

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

取消回复欢迎 发表评论:

关灯