निःशुल्क शुरू करें

zplCloud Blog

SQL Server डेटा स्रोत के रूप में: निर्यात लूप, समाप्त

कनेक्शन स्ट्रिंग कभी आपकी मशीन से बाहर नहीं जाती। फ़िल्टर, सॉर्टिंग और पेजिंग आपके सर्वर पर पैरामीटराइज़्ड T-SQL के रूप में चलते हैं।

5 मिनट पढ़ने का समय zplCloud Team

निर्यात लूप, और यह क्यों टूटता है

zplCloud CLI एजेंट से जुड़ा लोकल SQL Server, जिसकी केवल मेल खाती पंक्तियाँ लेबल में उपयोग होती हैं

लेबल डेटा ERP, WMS या Azure SQL डेटाबेस में रहता है। सामान्य कार्यप्रवाह है CSV में निर्यात करना, कॉलम नाम ठीक करना, अपलोड करना, प्रिंट करना - और कल दोहराना, क्योंकि CSV पहले से पुराना है।

zplCloud डेटा हब निर्यात समाप्त करता है। आपके नेटवर्क के अंदर एक CLI एजेंट SQL Server कनेक्शन स्ट्रिंग रखता है, प्लेटफ़ॉर्म उसे क्वेरी विवरण भेजता है, और केवल परिणाम पंक्तियाँ वापस आती हैं। डेटाबेस कभी इंटरनेट पर उजागर नहीं होता और क्रेडेंशियल्स कभी क्लाउड में संग्रहीत नहीं होते।

यह पोस्ट सटीक यांत्रिकी है: क्या कहाँ चलता है, कौन सा SQL उत्पन्न होता है, और कठोर सीमाएँ क्या हैं।

एक अनुच्छेद में आर्किटेक्चर

zplcloud proxy api.zplcloud.com (SignalR) के लिए एक आउटबाउंड TLS कनेक्शन खोलता है। कोई इनबाउंड पोर्ट नहीं, कोई NAT नियम नहीं, कोई VPN नहीं। जब आप प्लेटफ़ॉर्म में डेटासोर्स खोलते हैं, तो बैकएंड एजेंट को एक अनुरोध वस्तु भेजता है - आधार क्वेरी, फ़िल्टर, सॉर्ट, ऑफ़सेट, लिमिट - और एजेंट उसे T-SQL में बदलता है, उसे आपके SQL Server पर आपके डेटाबेस उपयोगकर्ता के साथ निष्पादित करता है, और पंक्तियाँ लौटाता है। कनेक्शन स्ट्रिंग केवल एजेंट प्रक्रिया मेमोरी और उसके स्थानीय कॉन्फ़िगरेशन में मौजूद होती है।

चरण 1 - एक या अधिक सर्वरों के साथ एजेंट शुरू करें

# कई --sql फ्लैग की अनुमति है; NAME वही है जो आप प्लेटफ़ॉर्म में चुनते हैं।
zplcloud proxy --agent "Lager" \
  --sql PROD="Server=127.0.0.1;Database=erp;User Id=zplcloud;Password=…;Encrypt=True;TrustServerCertificate=True" \
  --sql WAREHOUSE="Server=sql-wh.internal.lan,1433;Database=logistik;User Id=zplcloud;Password=…;Encrypt=True;TrustServerCertificate=True"

बिना कमांड लाइन में रहस्य डाले समतुल्य (वे शेल इतिहास में पड़ेंगे):

# Windows PowerShell - प्रति सर्वर एक चर, नाम बीच में
$env:ZPLCLOUD_SQL_PROD_CONNECTION = "Server=127.0.0.1;Database=erp;User Id=zplcloud;Password=…;Encrypt=True;TrustServerCertificate=True"
zplcloud proxy --agent "Lager"

प्रारंभ बैनर सूचीबद्ध करता है कि क्या मिला: SQL servers: PROD, WAREHOUSE। प्लेटफ़ॉर्म पर प्रमाणीकरण --api-key <key> या ZPLCLOUD_API_KEY का उपयोग करता है।

बिना निगरानी संचालन के लिए इसे स्थायी बनाएँ:

  • Windows: setx ZPLCLOUD_SQL_PROD_CONNECTION "…", या zplcloud proxy --agent "Lager" --service-install --api-key sk_zplcloud_…
  • Linux/Raspberry Pi: वही --service-install फ्लैग; यह Restart=always के साथ systemd यूनिट zplcloud-agent.service लिखता है
  • env के बजाय फ़ाइल: बाइनरी के बगल में या ~/.zplcloud/ में sqlservers.json, आकार { "sqlServers": { "PROD": "Server=…" } }
  • Docker: docker-compose.agent.yml में ZPLCLOUD_SQL_PROD_CONNECTION

कनेक्शन स्ट्रिंग नोट्स जो लोगों को एक घंटा खर्च कराते हैं

  • Encrypt=True;TrustServerCertificate=True स्व-हस्ताक्षरित प्रमाणपत्र वाले आंतरिक सर्वर के लिए व्यावहारिक जोड़ी है। वास्तविक प्रमाणपत्र मिलते ही TrustServerCertificate हटा दें।
  • नामांकित इंस्टेंस को Server=host\INSTANCE चाहिए; गैर-डिफ़ॉल्ट पोर्ट Server=host,1433 है - अल्पविराम, कोलन नहीं।
  • ठीक उन्हीं तालिकाओं पर SELECT वाला समर्पित SQL लॉगिन उपयोग करें जिनकी लेबल को आवश्यकता है। एजेंट सब कुछ उस उपयोगकर्ता के रूप में चलाता है, इसलिए डेटाबेस अनुमति सीमा है - प्लेटफ़ॉर्म नहीं।

चरण 2 - डेटासोर्स बनाएँ

डेटा स्रोत में चल रहा एजेंट Remote SQL Server के अंतर्गत प्रति कॉन्फ़िगर नाम एक चिप के साथ दिखाई देता है। चिप पर क्लिक करने से फ़ॉर्म पहले से भर जाता है।

फ़ील्डमान
नामLager-Artikel
प्रकारSQL Server
सर्वरPROD (--sql PROD=… से नाम)
क्वेरीSELECT ean, name, price FROM artikel

परीक्षण SELECT 1 चलाता है और सर्वर · डेटाबेस लौटाता है। फ़ील्ड CommandBehavior.SchemaOnly के साथ SELECT TOP 1 * के माध्यम से कॉलम मेटाडेटा पढ़ता है - यह डेटा खींचे बिना स्कीमा लाता है। यदि गहन नेस्टेड क्वेरी कोई स्कीमा नहीं लौटाती, तो एजेंट SingleRow के साथ एक बार पुनः प्रयास करता है।

चरण 3 - एजेंट वास्तव में क्या निष्पादित करता है

आपकी आधार क्वेरी सबक्वेरी के रूप में लपेटी जाती है। फ़िल्टर, सॉर्ट और पेजिंग एजेंट द्वारा जोड़े जाते हैं:

SELECT * FROM ( SELECT ean, name, price FROM artikel ) AS ds
WHERE ean LIKE @p0
ORDER BY name
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY

तीन चीज़ें दो बार पढ़ने लायक हैं:

1. मान पैरामीटर हैं, कभी स्ट्रिंग संयोजन नहीं। फ़िल्टर बिल्डर @p0, @p1, … उत्सर्जित करता है और SqlCommand.Parameters के माध्यम से मान बाँधता है। ऐसा कोई स्थान नहीं है जहाँ उपयोगकर्ता द्वारा दर्ज मान SQL टेक्स्ट बन जाए।

2. पेजिंग मूल है। limit 10 FETCH NEXT 10 ROWS ONLY बन जाता है; SQL Server काम करता है और वायर पर दस पंक्तियाँ लौटाता है, दस लाख नहीं।

3. पंक्ति गणना एक अलग क्वेरी है। जब आप कुल पूछते हैं, तो एजेंट उसी WHERE और उन्हीं पैरामीटरों के साथ SELECT COUNT(*) FROM (<base>) AS ds चलाता है।

कठोर सीमाएँ (एजेंट स्रोत से)

सीमामानकहाँ लागू
प्रति अनुरोध पंक्तियाँ1000 (RowCap)limit 1…1000 पर क्लैम्प्ड है; अनसेट होने पर डिफ़ॉल्ट 100
कमांड टाइमआउट15 sपरीक्षण, वर्णन, क्वेरी और गिनती
स्टेटमेंट प्रकारकेवल SELECTआधार क्वेरी मान्य है; बहु-स्टेटमेंट अस्वीकृत
सॉर्ट/फ़िल्टर कॉलममान्य पहचानकर्तामुक्त-रूप SQL के रूप में पारित नहीं

यदि आपको एक दृश्य में 1000 से अधिक पंक्तियाँ चाहिए - बैच प्रिंटिंग, पूर्ण कैटलॉग - प्लेटफ़ॉर्म बढ़ते OFFSET के साथ परिणाम सेट के माध्यम से पेज करता है। प्रत्येक पेज आपके सर्वर के विरुद्ध अपना 1000-पंक्ति अनुरोध है, इसलिए कुल के बावजूद मेमोरी समतल रहती है।

15-सेकंड टाइमआउट जानबूझकर है। यदि आपकी आधार क्वेरी 15 सेकंड में उत्तर नहीं दे सकती, तो वह अनुक्रमित दृश्य या सही इंडेक्स वाली तालिका से संबंधित है, लेबल डेटासोर्स से नहीं।

चरण 4 - डिज़ाइनर और Print Views में उपयोग करें

  • डिज़ाइनर → परीक्षण डेटा टैब → डेटा स्रोत: डेटासोर्स चुनें और लोड दबाएँ। फ़ील्ड बाइंडिंग प्लेसहोल्डर टेक्स्ट के बजाय वास्तविक पंक्तियों के साथ रेंडर होती हैं, इसलिए कुछ भी प्रिंटर तक पहुँचने से पहले आप वास्तविक फ़ील्ड लंबाई देखते हैं।
  • Print Views → कॉन्फ़िगरेशन → डेटा स्रोत (डेटा हब): दृश्य का पूर्वावलोकन और उसकी प्रिंटिंग लाइव क्वेरी का उपयोग करती है। ऑपरेटर वर्तमान डेटा देखता है; कोई CSV पुनः अपलोड नहीं करता।

विफलता मोड और उनका अर्थ

लक्षणकारण
एजेंट शुरू होता है लेकिन कोई चिप नहीं दिखती--sql नाम लापता, या एजेंट ने किसी दूसरे workspace की कुंजी से प्रमाणित किया
परीक्षण तुरंत विफलगलत कनेक्शन स्ट्रिंग (इंस्टेंस, पोर्ट, क्रेडेंशियल्स) - त्रुटि SQL Server से पारित होती है
परीक्षण हैंग, फिर विफल15 s टाइमआउट: एजेंट मशीन से सर्वर अप्राप्य, या फ़ायरवॉल पैकेट चुपचाप गिरा देता है
फ़ील्ड कुछ नहीं लौटाताआधार क्वेरी SchemaOnly के लिए बहुत नेस्टेड है; एजेंट SingleRow पर गिरता है, जिसे कम से कम एक पंक्ति मौजूद चाहिए
क्वेरी काम करती है, Print View खाली हैदृश्य किसी अन्य डेटासोर्स से बंधा है, या फ़िल्टर सभी पंक्तियाँ बाहर करता है

योजना

डेटा हब (CLI एजेंट के माध्यम से SQL Server और MongoDB डेटासोर्स) Pro योजना का हिस्सा है। विवरण मूल्य पृष्ठ पर।

संबंधित

और लेख