नहीं, यह कहीं भी लॉग इन नहीं है। वोट दें और अपने व्यवसाय के मामले को बताएं; यह SQL सर्वर में तय की जाने वाली चीजों की लंबी सूची में से एक है।
यह कनेक्ट पर वर्षों पहले अनुरोध किया गया था (शायद पहले SQL Server 2000 या 2005 समय सीमा में), फिर नए फीडबैक सिस्टम पर:
और अब इसे वितरित किया गया है, SQL Server 2019 , SQL Server 2017 CU12 में, और भविष्य में SQL Server 2016 SP2 CU में दिखाई देगा।
एसक्यूएल सर्वर 2019 के पहले सार्वजनिक CTP में, यह केवल ट्रेस ध्वज 460 गुप्त की तरह यह लगता है के तहत सतहों, लेकिन यह में प्रकाशित हुआ था इस Microsoft श्वेतपत्र । यह आगे जाने वाला डिफ़ॉल्ट व्यवहार (कोई ट्रेस ध्वज आवश्यक नहीं) होगा, हालांकि आप एक नए डेटाबेस स्कोप्ड कॉन्फ़िगरेशन के माध्यम से इसे नियंत्रित करने में सक्षम होंगे VERBOSE_TRUNCATION_WARNINGS
।
यहाँ एक उदाहरण है:
USE tempdb;
GO
CREATE TABLE dbo.x(a char(1));
INSERT dbo.x(a) VALUES('foo');
GO
SQL Server 2019 से पहले सभी समर्थित संस्करणों में परिणाम:
Msg 8152, Level 16, State 30, Line 5
स्ट्रिंग या बाइनरी डेटा को छोटा किया जाएगा।
बयान समाप्त कर दिया गया है।
अब, SQL सर्वर 2019 CTP पर, ट्रेस ध्वज सक्षम होने के साथ:
DBCC TRACEON(460);
GO
INSERT dbo.x(a) VALUES('foo');
GO
DROP TABLE dbo.x;
DBCC TRACEOFF(460);
परिणाम तालिका, कॉलम और ( पूर्ण नहीं, काटे गए ) मान दिखाता है :
एमएसजी 2628, लेवल 16, स्टेट 1, लाइन 11
स्ट्रिंग या बाइनरी डेटा को तालिका 'tempdb.dbo.x', कॉलम 'a' में काट दिया जाएगा। काट दिया गया मान: 'f'।
बयान समाप्त कर दिया गया है।
जब तक आप सब कुछ छोड़ सकते हैं और SQL Server 2019 में अपग्रेड कर सकते हैं, या Azure SQL डेटाबेस में जा सकते हैं, आप अपने "ऑटोमैजिक" कोड को वास्तव में max_length से खींच सकते हैं sys.columns
, साथ ही उस नाम के साथ जिसे आप वैसे भी प्राप्त कर रहे हैं, और फिर आवेदन करना होगा LEFT(column, max_length)
या जो भी पीजी के समकक्ष है। या, इसका मतलब है कि आप चुपचाप डेटा खो देंगे, यह जानने के लिए कि कॉलम क्या बेमेल हैं और गंतव्य कॉलम को ठीक करें ताकि वे स्रोत से सभी डेटा को फिट कर सकें। मेटाडाटा को दोनों प्रणालियों तक पहुंच प्रदान करता है, और यह तथ्य कि आप पहले से ही एक क्वेरी लिख रहे हैं जो स्वचालित रूप से स्रोत से मेल खाना चाहिए -> गंतव्य कॉलम (अन्यथा यह त्रुटि शायद ही आपकी सबसे बड़ी समस्या होगी), आपको कोई भी क्रूरता नहीं करनी चाहिए बिल्कुल अनुमान लगाना।
sys.columns
क्योंकि मुझे इस बात का बिलकुल भी अंदाज़ा नहीं था कि आप वर्तमान में "ऑटोमैटिकली" कौन से कोड का उपयोग कर रहे हैं जो आपके प्रश्नों को उत्पन्न करते हैं। वास्तव में बहुत अधिक जटिल नहीं है कि मैं आपके कोड में शामिल करने के बारे में अनुमान लगा सकता हूंSELECT name, object_id, max_length FROM sys.columns;
। चूँकि आपके पास पहले से ही आटोमैटिक कोड है जो यह कर रहा होगा - या ऐसा कुछ बहुत - मुझे नहीं लगता कि एक उदाहरण आवश्यक था।