Keressen és töröljön nem használt árva adatbázisokat a SharePointban
Probléma:
Egy SharePoint 2013 kísérleti környezetben több webalkalmazást és szolgáltatásalkalmazást hozott létre tesztelési célokra. Ezen webalkalmazások egy része adatbázisaik törlése nélkül törlődik. Egy idő után az adatbázis-kiszolgáló megtelt, és meg kellett tisztítanunk az SQL Servert a nem használt SharePoint adatbázisok törlésével.
Megoldás:
A SharePoint 2013 Központi adminisztráció segítségével megtudhatja a webalkalmazások által használt adatbázisokat.
Aktív SharePoint tartalomadatbázisok beszerzése:
Lépjen a Központi rendszergazda > Alkalmazáskezelés > Tartalomadatbázisok kezelése oldalra. Kiválaszthatja és megtekintheti, hogy a webalkalmazások mely tartalomadatbázisokat használják.
Aktív SharePoint Service alkalmazásadatbázisok beszerzése:
Hasonlóképpen lépjen a Központi felügyelet > Szolgáltatásalkalmazások kezelése >> Válassza ki a szolgáltatásalkalmazást > Tulajdonságok menüpontot. Ez megmutatja, hogy az adott szolgáltatási alkalmazás milyen adatbázisokat használ.
De ezeket a lépéseket manuálisan meg kell ismételnie minden webalkalmazásnál és szolgáltatási alkalmazásnál, hogy megtudja, melyiket használja nem.
PowerShell megoldás az árva adatbázisok felderítésére:
Unalmas az SQL Server adatbázisok egyenkénti összehasonlítása. Minden webalkalmazáshoz, minden szolgáltatási alkalmazáshoz, nem igaz? Nos, használjuk a PowerShellt az aktív SharePoint adatbázisok megkeresésére.
1. lépés: Exportálja a SharePoint-adatbázisneveket szövegfájlba
Exportáljuk a SharePoint-adatbázisneveket szövegfájlba. Fuss:
Get-SPDatabase | Sort-Object Name | Select -ExpandProperty Name | Out-File "c:\SharepointDBs.txt"
2. lépés: Adatbázisnevek exportálása az SQL Serverről
Jelentkezzen be az SQL Server Management Studioba, futtassa ezt a lekérdezést:
SELECT [name] FROM master.dbo.sysdatabases WHERE dbid > 4
3. lépés: Hasonlítsa össze a két fájlt
Az Ön feladata sokkal könnyebb, ha rendelkezik szöveg-összehasonlító segédprogramokkal, például a BeyondCompare-rel. Ellenkező esetben a PowerShell segítségével összehasonlíthatja ezt a két fájlt, és megkaphatja a különbséget.
#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
Most megvan az összes nem használt adatbázis. Nyissa meg az SQL Server Management Studio alkalmazást, azonosítsa az összes nem használt adatbázist a fenti összehasonlításból, és törölje a nem használt SharePoint adatbázisokat az SQL Serverről.
Az adatbázis valóban törölve van, de továbbra is hivatkozik rá a SharePointban?
Mi a teendő, ha az adatbázist törölték, és a SharePoint továbbra is hivatkozik rá? Nos, használja ezt a PowerShell-szkriptet az összes hivatkozott törölt adatbázis megkereséséhez:
#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()}
Az adatbázis törölve van, de továbbra is hivatkozik rá a webalkalmazásban?
(Get-SPWebApplication https://sharepoint.crescent.com).ContentDatabases
Ezzel a webalkalmazással társított és hivatkozott összes tartalomadatbázist megkapja. A kimenetből válassza ki az árva adatbázis azonosítóját, és adja meg:
$WebApp = Get-SPWebApplication https://sharepoint.crescent.com
$webApp.ContentDatabases.Delete("Database-GUID")
