Copia de seguridad-restauración de todas las bases de datos de SharePoint en SQL Server usando PowerShell
Requisito: Planeamos mover nuestra base de datos SQL de SharePoint a un servidor diferente. Entonces, tuvimos que hacer una copia de seguridad y restaurar todas las bases de datos de SharePoint de una instancia de SQL Server 2012 a otra.
¿Cómo hacer una copia de seguridad y restaurar todas las bases de datos de SharePoint desde SQL Server usando PowerShell?
Estos son los pasos a alto nivel para mover SharePoint de un SQL Server a otro:
- Obtenga una lista de todas las bases de datos de SharePoint
- Haga una copia de seguridad de todas las bases de datos de SharePoint desde el servidor SQL de origen
- Restaurar las copias de seguridad en la instancia del servidor SQL de destino
- Cambie el alias de SQL en SharePoint Server para que apunte al nuevo servidor.
Paso 1: obtenga todas las bases de datos de SharePoint
#Get All SharePoint Databases and form an Array
Get-SPDatabase | Select -ExpandProperty Name | foreach { $Databases+= $_+"," }
#Export to a txt file
$Databases > databases.txt
Este script le brinda una lista de todas las bases de datos de SharePoint, incluidas las bases de datos de configuración, las bases de datos de contenido y las bases de datos de aplicaciones de servicio, en una cadena separada por comas. Tomemos esa cadena y entregámosla a nuestro script de respaldo.
Paso 2: hacer una copia de seguridad de todas las bases de datos de SharePoint:
Antes de realizar una copia de seguridad de todas las bases de datos de SharePoint, asegúrese de configurar los sitios en modo de solo lectura (o configurar la base de datos en solo lectura en SQL Server) para evitar problemas de inconsistencia de datos.
Script de PowerShell para realizar copias de seguridad de todas las bases de datos de SharePoint desde SQL Server:
#Import SQL PowerShell module
Import-Module SQLPS -DisableNameChecking
#Configuration parameters
$SQLInstance="Cre-SQL-001"
$BackupPath="F:\Backup\"
#Array of Database names, Comma separated
$DatabaseColl="StateService_d73ac2ad313a41ba83d457bfb78cb4f3,Secure_Store_Service_DB_c13a71870bad4decb6f7582d9e26f46a,WordAutomationServices_e290fc12c8ee4ce09c38ba7fc8f089c9,Social DB,Bdc_Service_DB_f937be05fe5f48158d4895b6f2bb9674,WebAnalyticsServiceApplication_StagingDB_9efa01f9-ce98-4e4e-9e2d-ecfc9e19fc79,SharePoint_Config_2010,PerformancePoint Service Application_c1a8062656434a24a9c53f05fc8144f7,Search_Service_Application_CrawlStoreDB_76166d368e4a4ef58aabf8df57d7c670,Search_Service_Application_PropertyStoreDB_1fc75775ee894fd2aa0c4d1e7c75f0c7,Application_Registry_Service_DB_8e93a305ea904c81a34a3dd205265fc7,SharePoint_AdminContent_e0021dbb-cc00-4b58-a16d-9c4c481228ff,WSS_Content,WSS_Content_KM,WSS_Content_MySites,Search_Service_Application_DB_bfdf7354e7f84b1281121c7bdca7b43f,Managed Metadata Service_ff52c4f0cd504d938cd1b3dc9ef9ae8b,Profile DB,WSS_Logging,Sync DB,WebAnalyticsServiceApplication_ReportingDB_894b25ce-a2ba-4c7c-885e-08b3924deec8"
#Convert comma separated into an Array
$DatabaseNames = $DatabaseColl -split ","
#Backup Each Database
Foreach($DBName in $DatabaseNames)
{
write-host "Backing up the database: $($DBName)"
Backup-SqlDatabase -ServerInstance $SQLInstance -Database $DBName -BackupFile "$($BackupPath)\$($DBName).bak"
}
Paso 3: restaurar todas las bases de datos en la instancia de SQL Server de destino
Copie todos los archivos de respaldo del servidor de origen al destino y luego use el siguiente script de PowerShell para restaurar las bases de datos de SQL Server de forma masiva. Asegúrese de que la ubicación original (como en el servidor de la base de datos de origen) exista en el servidor de destino.
Script de PowerShell para restaurar bases de datos de SQL Server de forma masiva:
#Import SQL PowerShell module
Import-Module SQLPS -DisableNameChecking
#Configuration parameters
$SQLInstanceName="Cre-SQL-002"
$BackupPath="E:\Backup\"
#Get all Backup files
$BackupFilesColl = Get-ChildItem -Path $BackupPath | where {$_.extension -eq ".bak"}
#Iterate through each backup file
Foreach($BackupFile in $BackupFilesColl)
{
#Get the full path of the backup file
$DatabasePath = $BackupPath + '\' + $BackupFile
#Frame the Database Name
$DatabaseName = $BackupFile.ToString().Replace(".bak", "")
#Restore the database
write-host "Restoring Database: $($DatabaseName)"
Restore-SqlDatabase -ServerInstance $SQLInstanceName -Database $DatabaseName -BackupFile $DatabasePath
}
Paso 4: Cambie el alias de SQL Server para que apunte a su nuevo SQL Server:
Como paso final, cambie su alias de SQL de los servidores de SharePoint para que apunte a la nueva instancia del servidor SQL. Aquí está mi publicación sobre la configuración del alias del servidor SQL: Cómo crear un alias de servidor SQL para SharePoint. ¡Haga IISReset una vez hecho!
Estos scripts se pueden utilizar en escenarios como:
- Durante las migraciones de SharePoint, donde es posible que esté llevando todas las bases de datos de SharePoint a una nueva instancia de SQL Server.
- Cuando tiene que mover bases de datos de SharePoint desde un servidor SQL independiente único a un clúster de alta disponibilidad o un clúster AlwaysOn de SQL Server.
