เปิดใช้งานนายหน้าเซิร์ฟเวอร์ SQL ใช้เวลานานเกินไป


138

ฉันมี Microsoft SQL Server 2005 และฉันพยายามเปิดใช้งาน Broker สำหรับฐานข้อมูลของฉันด้วย T-SQL:

 SELECT name, is_broker_enabled FROM sys.databases 
 -- checking its status 0 in my case
 ALTER DATABASE myDatabase SET ENABLE_BROKER

Alter Databaseต้องใช้เวลานานในการกระบวนการ ตอนนี้เป็นเวลากว่าครึ่งชั่วโมงแล้วและยังคงทำงานอยู่ ไม่แน่ใจว่ากำลังรออย่างอื่นอยู่หรือฉันต้องทำความสะอาดอะไรก่อนเช่นลบข้อความสัญญาคิวและบริการทั้งหมดภายใต้นายหน้าบริการ


1
เพื่อเป็นข้อสังเกตสำหรับผู้อื่นหากมีการเชื่อมต่อกับ db ที่เปิดอยู่ก็จะทำให้เกิดความล่าช้านี้ วิ่งsp_whoเพื่อแสดงว่ามี .. (อาจเป็นคุณ)
ChipperG

คำตอบ:


278

http://rusanu.com/2006/01/30/how-long-should-i-expect-alter-databse-set-enable_broker-to-run/

alter database [<dbname>] set enable_broker with rollback immediate;

7
ผลของ "พร้อมย้อนกลับทันที" คืออะไร?
ดารา

15
@ A.Dara คุณไม่สามารถเปลี่ยนแปลงฐานข้อมูลได้ตราบเท่าที่มีธุรกรรมที่รอดำเนินการ การย้อนกลับทันทีจะยุติสิ่งเหล่านี้ทั้งหมด
libjup


2

จริงๆแล้วฉันชอบที่จะใช้NEW_BROKERมันทำงานได้ดีในทุกกรณี:

ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

2
คุณควรอธิบายว่าทำไมคุณถึงชอบมันและมันแตกต่างกันอย่างไร ....
Mitch Wheat

มันใช้งานได้ดีและใช้เวลาไม่นานในทุกกรณี
Mike Darwish

2

การเปิดใช้งาน SQL Server Service Broker จำเป็นต้องมีการล็อกฐานข้อมูล หยุดการทำงานของ SQL Server Agent แล้วดำเนินการต่อไปนี้:

USE master ;
GO

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO

เปลี่ยน [MyDatabase] ด้วยชื่อฐานข้อมูลของคุณที่ต้องการจากนั้นเริ่ม SQL Server Agent

หากคุณต้องการดูฐานข้อมูลทั้งหมดที่มีการเปิดใช้งานหรือปิดใช้งานนายหน้าบริการให้สอบถาม sys.databases เช่น:

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.