ค้นหาเว็บไซต์

สำรองข้อมูล-กู้คืนฐานข้อมูล SharePoint ทั้งหมดใน SQL Server โดยใช้ PowerShell


ข้อกำหนด: เราวางแผนที่จะย้ายฐานข้อมูล SQL ของ SharePoint ไปยังเซิร์ฟเวอร์อื่น ดังนั้นเราจึงต้องสำรองและกู้คืนฐานข้อมูล SharePoint ทั้งหมดจากอินสแตนซ์ SQL Server 2012 หนึ่งไปยังอีกอินสแตนซ์หนึ่ง

วิธีการสำรองและกู้คืนฐานข้อมูล SharePoint ทั้งหมดจาก SQL Server โดยใช้ PowerShell

ต่อไปนี้เป็นขั้นตอนในระดับสูงเพื่อย้าย SharePoint จาก SQL Server ที่หนึ่งไปยังอีกที่หนึ่ง:

  1. รับรายการฐานข้อมูล SharePoint ทั้งหมด
  2. สำรองฐานข้อมูล SharePoint ทั้งหมดจาก SQL Server ต้นทาง
  3. คืนค่าการสำรองข้อมูลไปยังอินสแตนซ์เซิร์ฟเวอร์ SQL เป้าหมาย
  4. เปลี่ยนนามแฝง SQL ใน SharePoint Server ให้ชี้ไปที่เซิร์ฟเวอร์ใหม่

ขั้นตอนที่ 1: รับฐานข้อมูล SharePoint ทั้งหมด


#Get All SharePoint Databases and form an Array
Get-SPDatabase | Select -ExpandProperty Name | foreach { $Databases+= $_+"," }

#Export to a txt file
$Databases > databases.txt

สคริปต์นี้จะแสดงรายการฐานข้อมูล SharePoint ทั้งหมด รวมถึงฐานข้อมูลการกำหนดค่า ฐานข้อมูลเนื้อหา และฐานข้อมูลแอปพลิเคชันบริการเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาค ลองใช้สตริงนั้นและมอบให้กับสคริปต์สำรองของเรา

เคล็ดลับ: หากคุณต้องการรับฐานข้อมูลเนื้อหาทั้งหมด ให้ใช้: Get-SPContentDatabase | เลือก -ขยายชื่อคุณสมบัติ

ขั้นตอนที่ 2: สำรองฐานข้อมูล SharePoint ทั้งหมด:

ก่อนที่จะสำรองข้อมูลฐานข้อมูล SharePoint ทั้งหมด ตรวจสอบให้แน่ใจว่าคุณตั้งค่าไซต์เป็นโหมดอ่านอย่างเดียว (หรือตั้งค่าฐานข้อมูลเป็นอ่านอย่างเดียวใน SQL Server) เพื่อหลีกเลี่ยงปัญหาข้อมูลที่ไม่สอดคล้องกัน

สคริปต์ PowerShell เพื่อสำรองฐานข้อมูล SharePoint ทั้งหมดจาก 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"
}

ขั้นตอนที่ 3: กู้คืนฐานข้อมูลทั้งหมดไปยังอินสแตนซ์ SQL Server เป้าหมาย

คัดลอกไฟล์สำรองข้อมูลทั้งหมดจากเซิร์ฟเวอร์ต้นทางไปยังเป้าหมาย จากนั้นใช้สคริปต์ PowerShell ด้านล่างเพื่อกู้คืนฐานข้อมูล SQL Server จำนวนมาก ตรวจสอบให้แน่ใจว่าตำแหน่งเดิม (เช่นเดียวกับในเซิร์ฟเวอร์ฐานข้อมูลต้นทาง) มีอยู่ในเซิร์ฟเวอร์เป้าหมาย

สคริปต์ PowerShell เพื่อกู้คืนฐานข้อมูล SQL Server จำนวนมาก:


#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
}

ขั้นตอนที่ 4: เปลี่ยนนามแฝงของเซิร์ฟเวอร์ SQL เพื่อชี้เซิร์ฟเวอร์ SQL ใหม่ของคุณ:

ในขั้นตอนสุดท้าย ให้เปลี่ยน SQL Alias ของคุณจากเซิร์ฟเวอร์ SharePoint ให้ชี้ไปที่อินสแตนซ์เซิร์ฟเวอร์ SQL ใหม่ นี่คือโพสต์ของฉันเกี่ยวกับการกำหนดค่านามแฝงเซิร์ฟเวอร์ SQL: วิธีสร้างนามแฝงเซิร์ฟเวอร์ SQL สำหรับ SharePoint ทำ IISReset เมื่อเสร็จแล้ว!

สคริปต์เหล่านี้สามารถใช้ได้ในสถานการณ์ต่างๆ เช่น:

  • ในระหว่างการโยกย้าย SharePoint ซึ่งคุณอาจนำฐานข้อมูล SharePoint ทั้งหมดไปยังอินสแตนซ์ SQL Server ใหม่
  • เมื่อคุณต้องการย้ายฐานข้อมูล SharePoint จาก SQL Server แบบสแตนด์อโลนเดี่ยวไปยังคลัสเตอร์ที่พร้อมใช้งานสูง หรือคลัสเตอร์ SQL Server AlwaysOn

บทความที่เกี่ยวข้อง