से एसएसआईएसडीबी कार्यान्वयन के साथ एसएसआईएस को कॉल करना एसएसआईएस के माध्यम से एक वेब सेवा को कॉल करना और एसएसआईएस को SQL सर्वर सेवा ब्रोकर सक्रिय संग्रहीत प्रक्रिया से कॉल करना है।SQL सर्वर सेवा ब्रोकर
यहाँ मैं वर्तमान में क्या कर रहा है:
कतार
CREATE QUEUE [schema].[ProccessingQueue] WITH STATUS = ON , RETENTION = OFF , ACTIVATION ( STATUS = ON , PROCEDURE_NAME = [schema].[usp_ProccessingQueueActivation] , MAX_QUEUE_READERS = 10 , EXECUTE AS N'dbo' ), POISON_MESSAGE_HANDLING (STATUS = ON)
मेरे संग्रहीत प्रक्रिया:
ALTER PROCEDURE [schema].[usp_ProccessingQueueActivation]
WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;
<snip declaration>
BEGIN
BEGIN TRANSACTION;
WAITFOR
(
RECEIVE TOP (1)
@ConversationHandle = conversation_handle,
@MessageBody = CAST(message_body AS XML),
@MessageTypeName = message_type_name
FROM [schema].[ProccessingQueue]
), TIMEOUT 5000;
<snip awasome stuff>
EXEC dbo.RunSSIS <param>
DECLARE @ReplyMessageBody XML = @MessageBody;
SEND ON CONVERSATION @ConversationHandle MESSAGE TYPE [type] (@ReplyMessageBody);
END
<handle error>
COMMIT TRANSACTION;
END
END
अब यहाँ क्या RunSSIS संग्रहीत प्रक्रिया
ALTER PROCEDURE [dbo].[RunSSIS]
<params>
AS
BEGIN
DECLARE @exec_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'<SSIS_package>',
@folder_name=N'<folder>',
@project_name=N'<projectName>',
@use32bitruntime=FALSE,
@reference_id=NULL,
@[email protected]_id OUTPUT
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@exec_id,
@object_type=30,
@parameter_name=N'<param_Name>',
@parameter_value=<param>
SELECT @exec_id
EXEC [SSISDB].[catalog].[start_execution] @exec_id
END
की तरह लग रहा है
अब यह घटना-दर्शक में नीचे दिए गए अपवाद को फेंक देगा क्योंकि एसएसआईएसडीबी पर्यावरण में एसक्यूएल सेवा ब्रोकर सक्रियण सुरक्षा संदर्भ पहचाना नहीं गया है।
सक्रिय proc '[स्कीमा] [usp_ProccessingQueueActivation]।' कतार 'पर चल रहा' आउटपुट निम्नलिखित : 'वर्तमान सुरक्षा संदर्भ को नहीं लौटाया जा सकता है। कृपया मूल डेटाबेस पर स्विच करें जहां 'निष्पादित करें' कहा जाता था और इसे फिर से आजमाएं। '
समस्या मैं उन निम्नलिखित दृष्टिकोण
तो मैं इस लिंक http://www.databasejournal.com/features/mssql/article.php/3800181/Security-Context-of-Service-Broker-Internal-Activation.htm का पालन करें और एक आत्म हस्ताक्षरित प्रमाणपत्र के साथ एक उपयोगकर्ता द्वारा निर्मित की कोशिश की है हल करने के लिए (यह सोच कर कि यह उपयोगकर्ता है कि 'नहीं करता है टी की अनुमति है)। लेकिन यह एक ही त्रुटि लौटा रहा है, गहराई से खोदने पर मैंने पाया कि [आंतरिक]। [Ready_execution] में एसएसआईएसडीबी के पास लाइन 36 में "रिवर" कथन है जो त्रुटि को के रूप में फेंकता है, यह प्रतिरूपण पसंद नहीं करता है।
- मैं SSISDB को RunSSIS संग्रहीत प्रक्रिया के लिए कदम है और यह सक्रियण संग्रहीत प्रक्रिया से कॉल करने के लिए कोशिश करने की कोशिश की, इसे नीचे SSISDB के रूप में यह एसक्यूएल सर्वर प्रमाणन के साथ किसी भी उपयोगकर्ता की अनुमति नहीं है शूट किया गया था, यह एक विंडोज की जरूरत है सर्टिफिकेट द्वारा बनाए गए ऑथ और उपयोगकर्ता में स्पष्ट रूप से विंडोज क्रेडेंशियल नहीं है।
मेरा प्रश्न है
- मैं सही रास्ते पर हूँ? मैं निश्चित रूप से एसक्यूएल सर्वर के 2 घटक का उपयोग करने की उम्मीद नहीं करता, यह मुश्किल होगा।
- यदि सही दृष्टिकोण में नहीं है तो सेवा दलाल से सेवा कॉल करने का सबसे अच्छा तरीका क्या होगा? मैंने SQL सर्वर सेवा दलाल के लिए "बाहरी सक्रियण" देखा है लेकिन अभी तक पता नहीं लगाया है। लेकिन मैं सर्वर पर्यावरण और स्केल-सक्षम के अंदर रहने वाली किसी चीज से चिपकने की कोशिश करता हूं, और प्रोड पर्यावरण में विभिन्न घटक स्थापित करने के विचार को पसंद नहीं करता (यह हमेशा व्यक्तिगत समर्थन के लिए ओवरहेड होता है, क्योंकि एक और बिंदु है जो एक और बिंदु है असफल)
मैं विंडोज ऑथ का उपयोग कर रहा हूं और मेरे क्रेडेंशियल में sys_Admin पहुंच है।
यह http://dba.stackexchange.com – stuartd
के लिए बेहतर फिट जैसा दिखता है [सेवा ब्रोकर बाहरी सक्रियकर्ता] (https://blogs.msdn.microsoft.com/sql_service_broker/2009/05/18/get- प्रारंभ-से-उपयोग-बाहरी-सक्रियकर्ता /) –
क्या कोड हस्ताक्षर कार्य करता है? https://msdn.microsoft.com/en-us/library/bb283630.aspx –