Weboldal keresés

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.

Fontos: Készítsen biztonsági másolatot az adatbázisok törlése előtt.

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")

Kapcsolódó cikkek