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

"การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ" ข้อผิดพลาดในการสร้างไซต์คอลเลกชัน


ปัญหา: ในการสร้างไซต์คอลเลกชันใหม่ใน SharePoint 2016 ฉันได้รับข้อความแสดงข้อผิดพลาด “การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ”!

ในการตรวจสอบบันทึก ULS พบข้อผิดพลาดโดยละเอียดดังนี้:
System.NullReferenceException: การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ ที่ Microsoft.SharePoint.Administration.SPContentDatabaseCollection.FindBestContentDatabaseForSiteCreation (IEnumerable`1 contentDatabases, Guid siteIdToAvoid, Guid webIdToAvoid, ฐานข้อมูล SPContentDatabase, SPContentDatabase DatabaseTheSiteWillBeDeletedFrom) ที่ Microsoft.SharePoint.Administration.SPContentDatabaseCollection.FindBestContentDatabaseForSiteCreation( SPSiteCreationParameters ไซต์CreationParameters, Guid ไซต์IdToAvoid, Guid webIdToAvoid, ฐานข้อมูล SPContentDatabase , ฐานข้อมูล SPContentDatabaseTheSiteWillBeDeletedFrom)

สาเหตุที่แท้จริง:

นี่เป็นเพราะฐานข้อมูลเนื้อหาที่ใช้งานไม่ได้ซึ่งเกี่ยวข้องกับเว็บแอปพลิเคชันนั้น ๆ

วิธีแก้ปัญหา:

ลบการเชื่อมโยงฐานข้อมูลเนื้อหาที่ไม่ถูกต้องโดยทำตามขั้นตอนด้านล่าง

ขั้นตอนที่ 1: รับ GUID ของแอปพลิเคชันเว็บ

ใช้สคริปต์ PowerShell ด้านล่างเพื่อรับ ID ของเว็บแอปพลิเคชันที่ต้องการ


(Get-SPWebApplication "https://intranet.crescent.com/").ID

ขั้นตอนที่ 2: ค้นหาฐานข้อมูล SharePoint Config ด้วย GUID ของแอปพลิเคชันเว็บ:

เข้าสู่ระบบ SQL Server ของคุณ เปิด SSMS เรียกใช้แบบสอบถามแบบใช้เลือกข้อมูลนี้กับฐานข้อมูลการกำหนดค่าของฟาร์ม

SELECT ID, Name, CAST (properties as xml) AS Result 
FROM [Objects]
WHERE ID = '0da122ac-8d9d-4bc1-aa1f-93df85bced3c'

คลิกที่ค่าคอลัมน์ "ผลลัพธ์" และค้นหา "m_Databases" และค้นหา GUID ฐานข้อมูลที่มีค่า "null"

ขั้นตอนที่ 3: ลบลิงก์ฐานข้อมูลที่เสียหาย:

ตอนนี้ ลบลิงก์ฐานข้อมูลที่ใช้งานไม่ได้โดยใช้ PowerShell


$WebApp = Get-SPWebApplication "https://intranet.crescent.com/"

$WebApp.ContentDatabases.delete("26449389-6c7e-4c0b-8a89-3ee35c991b35")

สิ่งนี้จะให้: ข้อยกเว้นที่เรียก "ลบ" ด้วยอาร์กิวเมนต์ "1": "การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ" แต่อย่ากังวล

ข้อผิดพลาดนี้ยังเกิดขึ้นเมื่อเซิร์ฟเวอร์ฐานข้อมูลของคุณมีพื้นที่ดิสก์ไม่เพียงพอ!

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