2010-12-02 8 views
7

मुझे SqlBulkCopy का उपयोग कर Staging नामक स्कीमा में किसी तालिका में डेटा डालने की आवश्यकता है।SqlBulkCopy का उपयोग करके, मैं एक गैर-डिफ़ॉल्ट डेटाबेस स्कीमा में किसी तालिका में डेटा कैसे सम्मिलित करूं?

ऐसा लगता है कि एपीआई केवल आपको DestinationTableName संपत्ति का उपयोग कर लक्ष्य तालिका नाम सेट करने की अनुमति देता है।

मैं इसे कैसे पूरा करूं? क्या यह संभव है?

उत्तर

11

एपीआई गंतव्य स्कीमा स्थापित करने के लिए एक स्पष्ट इंटरफेस प्रदान नहीं करता है, आप वास्तव में DestinationTableName संपत्ति इतनी तरह में एक 2 या 3-भाग योग्य तालिका नाम सामान कर सकते हैं:

b.DestinationTableName = string.Format("[{0}].[{1}]", schemaName, tableName); 

या

b.DestinationTableName = 
    string.Format("[{0}].[{1}].[{2}]", databaseName, schemaName, tableName); 

यह देखते हुए कि BULK INSERT ने हमेशा एक पूर्ण-योग्य तालिका नाम का समर्थन किया है, ऐसा लगता है कि उन अलग-अलग घटकों ने इसे एपीआई में कभी नहीं बनाया है।

इसके अलावा, ऐसा लगता है कि DestinationTableName बस BULK INSERT कथन में आउटपुट है, यह गुण SQL इंजेक्शन के लिए कमजोर हो सकता है। इसलिए यदि आप किसी जानकारी से किसी उपयोगकर्ता से यह जानकारी प्राप्त कर रहे हैं, तो इस ऑपरेशन को चलाने से पहले इनपुट को स्वच्छ करना सुनिश्चित करें।

संबंधित मुद्दे