Problem Service Broker
How Can I Trace Follw Code ?
(don't Trace in Visual Studio 2005)
Follow Code Run On a Sql Server 2005 Correctly But On Another Sql Server 2005 don't Run Correctly .
Please Help Me For Solve This Problem.
Thanks.
USE
MasterGO
ALTER
Database AdventureWorksSETENABLE_BROKERGO
ALTER
Database AdventureWorksSETNEW_BROKERGO
USE
AdventureWorksGO
DROP
MASTERKEYGO
CREATE
MASTERKEYENCRYPTIONBYPASSWORD='P@ssw0rd'GO
-
IF
EXISTS(SELECTobject_idFROMsys.proceduresWHEREname='usp_RequestHoliday')DROPPROCEDURE usp_RequestHoliday;IF
EXISTS(SELECTobject_idFROMsys.proceduresWHEREname='usp_ProcessHolidayRequest')DROPPROCEDURE usp_ProcessHolidayRequest;IF
EXISTS(SELECT service_idFROMsys.servicesWHEREname='http://schemas.apress.com/prosqlserver/HolidayRequestProcessorService')DROPSERVICE [http://schemas.apress.com/prosqlserver/HolidayRequestProcessorService];IF
EXISTS(SELECT service_idFROMsys.servicesWHEREname='http://schemas.apress.com/prosqlserver/HolidayRequestInitiatorService')DROPSERVICE [http://schemas.apress.com/prosqlserver/HolidayRequestInitiatorService];IF
EXISTS(SELECTobject_idFROMsys.service_queuesWHEREname='HolidayRequestQueue')DROPQUEUE HolidayRequestQueue;IF
EXISTS(SELECT service_contract_idFROMsys.service_contractsWHEREname='http://schemas.apress.com/prosqlserver/HolidayRequestContract')DROPCONTRACT [http://schemas.apress.com/prosqlserver/HolidayRequestContract];IF
EXISTS(SELECT message_type_idFROMsys.service_message_typesWHEREname='http://schemas.apress.com/prosqlserver/HolidayRequest')DROPMESSAGETYPE [http://schemas.apress.com/prosqlserver/HolidayRequest];IF
EXISTS(SELECT message_type_idFROMsys.service_message_typesWHEREname='http://schemas.apress.com/prosqlserver/SendFromTarget')DROPMESSAGETYPE [http://schemas.apress.com/prosqlserver/SendFromTarget];IF
EXISTS(SELECT xml_collection_idFROMsys.xml_schema_collectionsWHEREname='http://schemas.apress.com/prosqlserver/HolidayRequestSchema')DROPXMLSCHEMACOLLECTION [http://schemas.apress.com/prosqlserver/HolidayRequestSchema];GO
-
CREATE
XMLSCHEMACOLLECTION [http://schemas.apress.com/prosqlserver/HolidayRequestSchema]AS
N'<?xml version="1.0" encoding="utf-16"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="vacationRequest">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="employeeId" type="xs:integer" />
<xs:element name="email" type="xs:string" />
<xs:element name="startTime" type="xs:dateTime" />
<xs:element name="hours" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>'
;GO
CREATE
MESSAGETYPE [http://schemas.apress.com/prosqlserver/HolidayRequest]VALIDATION
=VALID_XMLWITHSCHEMACOLLECTION [http://schemas.apress.com/prosqlserver/HolidayRequestSchema];CREATE
MESSAGETYPE [http://schemas.apress.com/prosqlserver/SendFromTarget]VALIDATION
=VALID_XMLWITHSCHEMACOLLECTION [http://schemas.apress.com/prosqlserver/HolidayRequestSchema];CREATE
CONTRACT [http://schemas.apress.com/prosqlserver/HolidayRequestContract](
[http://schemas.apress.com/prosqlserver/HolidayRequest] SENT
BY INITIATOR,[http://schemas.apress.com/prosqlserver/SendFromTarget] SENT
BY Target);
GO
CREATE
PROCEDURE usp_ProcessHolidayRequestAS
DECLARE
@msgBodyXML([http://schemas.apress.com/prosqlserver/HolidayRequestSchema]),@convID
uniqueidentifier,@employeeID
int,@hours
int,@startTime
DateTime,@hoursTaken
int,@msgType
nvarchar(256),@ServiceName
nvarchar(256),@Status
tinyint;DECLARE
@msgTableTABLE(
message_body
varbinary(max),conversation_handleuniqueidentifier,message_type_name
nvarchar(256),Service_Namenvarchar(256),Statustinyint);
BEGIN
WAITFOR(RECEIVETOP(1) message_body,conversation_handle, message_type_name,Service_Name,StatusFROM HolidayRequestQueueINTO @msgTable),TIMEOUT 5000;SET @msgBody=(SELECTTOP(1)CAST(message_bodyASXML)FROM @msgTable);SET @convID=(SELECTTOP(1)conversation_handleFROM @msgTable);SET @msgType=(SELECTTOP(1) message_type_nameFROM @msgTable);SET @ServiceName=(SELECTTOP(1)Service_NameFROM @msgTable);SET @Status=(SELECTTOP(1)StatusFROM @msgTable);--END CONVERSATION @convID;INSERTINTO dbo.Vacation_Messages(ConvID, MsgType, MsgBody,Service_Name,Status)VALUES(@ConvID, @MsgType, @MsgBody,@ServiceName,@Status);DECLARE
@body1
nvarchar(1000),@msg1
xml;SET
@body1= N'<?xml version="1.0"?><vacationRequest>
<employeeId>'
+'1222'+'</employeeId><email>'
+'Test@yahoo.com'+'</email><startTime>'
+'2005-11-01T09:00:00+00:00'+'</startTime><hours>'
+'9'+'</hours></vacationRequest>'
;SET
@msg1=CAST(@body1ASXML);SENDONCONVERSATION @convIDMESSAGETYPE [http://schemas.apress.com/prosqlserver/SendFromTarget](@msg1);END
-- End ProcedureGO
CREATE
QUEUE HolidayRequestQueueWITH
STATUS=ON,RETENTION=ON,ACTIVATION
(STATUS=ON,PROCEDURE_NAME
= usp_ProcessHolidayRequest,MAX_QUEUE_READERS
= 5,EXECUTEASSELF);GO
CREATE
SERVICE [http://schemas.apress.com/prosqlserver/HolidayRequestProcessorService]ON
QUEUE HolidayRequestQueue(
[http://schemas.apress.com/prosqlserver/HolidayRequestContract]
);
CREATE
SERVICE [http://schemas.apress.com/prosqlserver/HolidayRequestInitiatorService]ON
QUEUE HolidayRequestQueue(
[http://schemas.apress.com/prosqlserver/HolidayRequestContract]
);
GO
CREATE
PROCEDURE usp_RequestHoliday@employeeId
int,@hours
int,@startDate
varchar(50)AS
DECLARE
@dialogHandleuniqueidentifier,@body
nvarchar(1000),@msg
XML,@date
nvarchar(100)BEGIN
SET @body= N'<?xml version="1.0"?><vacationRequest>
<employeeId>'
+CAST(@employeeIDASvarchar)+'</employeeId><email>'
+ @email+'</email><startTime>'
+ @startDate+'</startTime><hours>'
+CAST(@hoursASnvarchar)+'</hours></vacationRequest>'
;SET @msg=CAST(@bodyASXML)BEGINDIALOGCONVERSATION @dialogHandleFROMSERVICE[http://schemas.apress.com/prosqlserver/HolidayRequestInitiatorService]
TOSERVICE'http://schemas.apress.com/prosqlserver/HolidayRequestProcessorService'ONCONTRACT[http://schemas.apress.com/prosqlserver/HolidayRequestContract]
;SENDONCONVERSATION @dialogHandleMESSAGETYPE [http://schemas.apress.com/prosqlserver/HolidayRequest](@msg);--END CONVERSATION @dialogHandle;Print'Request sent!'END
GO
EXEC
usp_RequestHoliday 140,'someone@somewhere.com', 8,'2005-11-01T09:00:00+00:00'--====================================
SELECT
S.nameASService, Q.nameASQueueFROM
sys.servicesAS SJOIN
sys.service_queuesAS QON
Q.object_id= S.service_queue_idGO
SELECT
*FROMsys.conversation_endpointsSELECT
from_service_name,to_service_name
,transmission_status
FROM
sys.transmission_queueGO
SELECT
*FROM
HolidayRequestQueueSELECT
Status,queuing_order,CONVERT(XML,message_body)as Message1,Service_NameFROM
HolidayRequestQueue
