Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसएसआईएस पैकेज एसक्यूएल सर्वर 2012 में 32 बिट के रूप में नहीं चल रहा है

डिफ़ॉल्ट रूप से, सर्वर पर सब कुछ 64 बिट में चलेगा। इस व्यवहार को बदलने के लिए, आपको यह बताना होगा कि dtexec इस्तेमाल किया जाना चाहिए। 2012 के SSISDB के लिए, हमारे पास अपने पैकेजों को लागू करने के दो आसान तरीके हैं:SQL एजेंट और catalog.start_execution तरीका।

catalog.start_execution

सिंगल सर्विंग पैकेज रन के लिए, आप पैकेज को SSISDB कैटलॉग में ढूंढ सकते हैं और उन पर Execute... पर राइट क्लिक कर सकते हैं।

परिणामी पॉप अप संवाद में, आपको उन्नत टैब पर जाना होगा और 32-bit runtime की जांच करनी होगी डिब्बा। यह पैकेज के प्रत्येक रन पर किया जाएगा।

परदे के पीछे, विज़ार्ड जो SQL उत्पन्न करता है वह ऐसा दिखाई देगा

DECLARE @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution]
    @package_name = N'Package.dtsx'
,   @execution_id = @execution_id OUTPUT
,   @folder_name = N'POC'
,   @project_name = N'SSISConfigMixAndMatch'
,   @use32bitruntime = True
,   @reference_id = NULL
SELECT
    @execution_id
DECLARE @var0 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
    @execution_id
,   @object_type = 50
,   @parameter_name = N'LOGGING_LEVEL'
,   @parameter_value = @var0
EXEC [SSISDB].[catalog].[start_execution]
    @execution_id
GO

जैसा कि आप देख सकते हैं, @use32bitruntime पैरामीटर को 32 स्पेस में चलाना चाहिए यह इंगित करने के लिए True का मान पास किया गया है।

एसक्यूएल एजेंट

आवर्ती पैकेज रन के लिए, हम आम तौर पर शेड्यूलिंग टूल का उपयोग करते हैं। एजेंट में पैकेज के लिए 32 बिट सेटिंग तक पहुंचने के लिए, यह मूल रूप से एक ही क्लिक पथ है, सिवाय इसके कि आपको पहले कॉन्फ़िगरेशन टैब और फिर पर क्लिक करने की आवश्यकता है। 32-bit runtime . चुनने के लिए उन्नत टैब पर क्लिक करें

कार्य चरण की परिभाषा कुछ इस तरह दिखाई देगी

EXEC msdb.dbo.sp_add_jobstep
    @job_name = N'Do it'
,   @step_name = N'Run in 32bit'
,   @step_id = 1
,   @cmdexec_success_code = 0
,   @on_success_action = 1
,   @on_fail_action = 2
,   @retry_attempts = 0
,   @retry_interval = 0
,   @os_run_priority = 0
,   @subsystem = N'SSIS'
,   @command = N'/ISSERVER "\"\SSISDB\POC\SSISConfigMixAndMatch\Package.dtsx\"" /SERVER "\".\dev2014\"" /X86 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E'
,   @database_name = N'master'
,   @flags = 0

आप देखेंगे कि @command कॉल में, विज़ार्ड /X86 . जेनरेट करता है कॉल जो कि SQL एजेंट के लिए आरक्षित विशेष तर्क है (शुरुआत में BOL लिंक की जाँच करें) यह इंगित करने के लिए कि dtexec के 32 या 64 बिट संस्करण का उपयोग किया जाना चाहिए या नहीं। एक कमांड लाइन आमंत्रण के लिए हमें स्पष्ट रूप से सही dtexec का उपयोग करने की आवश्यकता होगी। डिफ़ॉल्ट रूप से, 64 बिट dtexec को आपके PATH परिवेश में सबसे पहले सूचीबद्ध किया जाएगा

64 बिट dtexec स्थान

  • C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
  • C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
  • C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
  • C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe

32 बिट dtexec स्थान

  • C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
  • C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
  • C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
  • C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe

आगे ड्राइवरों की समस्या निवारण

यह एक सर्वर पर चलता है, दूसरे पर नहीं।

चरण 1 - सत्यापित करें कि आपने ड्राइवर स्थापित किए हैं। मूर्खतापूर्ण, स्पष्ट लेकिन ऐसे कई प्रश्न हैं जहां लोगों ने गलती से सोचा था कि एसएसआईएस पैकेज/आईएसपैक को तैनात करने से सभी संदर्भित असेंबली भी तैनात हो जाएंगी। यह नगेट नहीं है इसलिए नहीं, सभी पूर्वापेक्षाओं को स्थापित करने और ठीक से स्थापित करने की आवश्यकता होगी (देखा गया है कि लोग उपकरण का उपयोग करने के बजाय असेंबली को जीएसी में कॉपी करने का प्रयास करते हैं)

चरण 2 - सर्वरों पर ड्राइवर स्थापना मिलानों को सत्यापित करें। फिर से, स्पष्ट लगता है लेकिन मैंने दर्द का अनुभव किया है, आम तौर पर VS_NEEDSNEWMETADATA, ड्राइवर संस्करण 4.0.2.013 में एक बिंदु अंतर पर 4.0.2.014 से अलग परिणाम उत्पन्न करता है

चरण 3 - सुनिश्चित करें कि आपके द्वारा परिभाषित कोई भी DSN सही स्थान पर परिभाषित किया गया था। यह कई कारणों से लोगों को काटता है। मुझे लगता है कि यह सर्वर 2012 तक नहीं था कि आप केवल odbcad32.exe (प्रशासनिक उपकरण से संबंधित निष्पादन योग्य -> ​​डेटा स्रोत (ओडीबीसी)) के 32 बिट संस्करण को फ़ाइल सिस्टम पर ढूंढकर प्राप्त कर सकते थे। सभी अधिक भ्रमित करने वाले निष्पादन योग्य को odbcad32.exe नाम दिया गया है, चाहे वह System32 या SysWOW64 में हो और वे दो फ़ोल्डर क्रमशः 64 बिट ड्राइवरों और 32 बिट ड्राइवरों के लिए हों। हां, भविष्य के पाठक, यह कोई टाइपो नहीं है। अनुप्रयोगों के 64 संस्करण System32 में हैं, 32 बिट संस्करण SysWOW64 में हैं। यह प्रभाव को कम करने के उद्देश्य से एक डिजाइन निर्णय था।

परीक्षण और लाइव सर्वर पर, C:\Windows\SysWOW64\odbcad32.exe चलाएँ अपने फॉक्सप्रो ड्राइवरों और संबंधित डीएसएन को खोजें, क्या वे उम्मीद के मुताबिक हैं?

चरण 4 - अजीब अनुमति जाँच। दोनों सर्वरों पर "सामान्य" खाते के रूप में लॉग ऑन करें और कमांड लाइन से पैकेज चलाएं। इस चरण को दोहराएं लेकिन एजेंट का उपयोग करके इसे निष्पादित करें, जो भी प्रॉक्सी आपने परिभाषित किया हो या नहीं। यदि पहला काम करता है लेकिन बाद वाला विफल हो जाता है, तो यह आमतौर पर अनुमति समस्या को इंगित करता है। यह हो सकता है कि SQL सर्वर या एजेंट खाता ड्राइवर द्वारा स्थापित किए गए किसी भी फ़ोल्डर तक नहीं पहुंच सकता। ऐसा हो सकता है कि उक्त खाते को InteractWithDesktop अनुमति या किसी अन्य अनुमति की आवश्यकता हो जिसे अस्वीकार कर दिया गया हो या स्पष्ट रूप से प्रदान नहीं किया गया हो।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं मैन्युअल रूप से पहचान कैसे सम्मिलित कर सकता हूं?

  2. ग्रुप बाय को उल्टा/ब्लो आउट करें

  3. एसक्यूएल 2005 परिणाम में शामिल हों

  4. SQL सर्वर केस स्टेटमेंट में कुल विकल्प

  5. एसक्यूएल का उपयोग कर एक स्ट्रिंग का हिस्सा निकालना