SQL सर्वर डेटाबेस नामों में डॉट्स लगाना ठीक है?


27

यदि मैं SQL सर्वर (2005 या 2008) में एक डॉट के साथ एक डेटाबेस नाम का उपयोग करता हूं, तो "MyApp.Sales" जैसी कोई चीज, क्या इससे कोई समस्या होगी?

जवाबों:


60

आप कर सकते हैं , लेकिन मैं नहीं करूंगा। आपको हमेशा डीबी नाम को चौकोर कोष्ठक जैसे [MyApp.Sales] के साथ लपेटना होगा।

इसलिए पुनरावृत्ति करने के लिए: यदि आप अपने विवेक को महत्व देते हैं, तो ऐसा न करें।


36

मुझे लगता है कि तकनीकी रूप से भी यह बहुत बुरा विचार है।

इन वर्षों में मुझे पता चला कि कई लोगों को चार-भाग के नामकरण सम्मेलन को समझने में परेशानी होती है, हालांकि यह बहुत स्पष्ट लगता है:

server_name.database_name.schema_name.object_name

सोचिए अगर वे ऐसा कुछ देखें तो क्या होगा:

MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts

या:

[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]

चीजों को सरल रखना महत्वपूर्ण है।


15

मामले में कोई और इस सवाल का सामना करता है ...

ध्यान रखें कि यह केवल एक बुरा विचार नहीं है क्योंकि उपयोगकर्ता भ्रमित हो सकते हैं, बल्कि इसलिए भी कि कुछ उपकरण भ्रमित हो सकते हैं।

यहां तक ​​कि खुद Microsoft को भी इससे समस्या है। यदि आप अपने डेटाबेस को Microsoft क्वेरी (ODBC के माध्यम से) एक्सेल शीट से कनेक्ट करने का प्रयास करते हैं, तो आपको एक कॉन्फ़िगरेशन विज़ार्ड मिलता है, जिससे आप उस डेटाबेस को चुन सकते हैं जिसे आप कनेक्ट करना चाहते हैं। हालाँकि, एक डेटाबेस जिसमें एक डॉट होता है, यह बताते हुए एक त्रुटि का उत्पादन करेगा कि सर्वर नहीं मिला। ऐसा लगता है कि विज़ार्ड जाँच नहीं करता है कि मूल्यों को भागने की जरूरत है और नेत्रहीन पहचानकर्ताओं को अंधा कर देते हैं।

बेशक वर्कअराउंड हैं, लेकिन आप शुरुआत से ऐसा न करके खुद को कुछ परेशानी से बचा लेते हैं।


7

डेटाबेस नामों, प्रकाशन नामों, उपयोगकर्ता नामों में अवधि का उपयोग न करें। और मैं दृढ़ता से नाम (स्तंभ, तालिका, दृश्य, डेटाबेस, आदि) में एक अवधि का उपयोग न करने की सलाह देता हूं।

अपडेट: मैं पुष्टि कर सकता हूं, कि माइनस, डैश "-" सिम्मिलर मुद्दों का कारण बनता है।

यहाँ होता है:

SQL सर्वर सिस्टम संग्रहित प्रक्रियाओं की तरह आंतरिक उपयोग के लिए स्क्रिप्ट का उपयोग करता है। जैसा कि पहले ही यहाँ उल्लेख किया गया है, आपके द्वारा उपयोग की जाने वाली आज्ञाएँ कभी-कभी आपको नाम को कोष्ठक में रखने के लिए बाध्य करेंगी और यह (गंभीरता से microsoft?) नहीं है (हमेशा) संग्रहीत प्रक्रियाओं के उपयोग के लिए ठीक है

वास्तव में, मैं अब अवज्ञा संशोधन को साफ करने में सक्षम नहीं हूं क्योंकि संग्रहीत प्रक्रिया सभी डेटाबेस के माध्यम से पुनरावृत्त होती है और डेटाबेस के नामों को स्पष्ट रूप से नहीं बचती है। यह पुनरावृत्ति यह है कि जटिल मैं इसे 8 से अधिक एसपी में पैच करने में सक्षम नहीं था।

प्लस मैं प्रतिकृति संघर्षों को संपादित करने के लिए एमएमसी या स्क्रिप्ट का उपयोग करने में सक्षम नहीं हूं । यदि आपके पास एक (One!) डेटाबेस है, जिसके नाम के अंदर एक डॉट है, तो ये समस्याएँ हर डेब्यू, हर प्रकाशन पर घटित होंगी।

ये मेरे द्वारा की जाने वाली घटनाएँ हैं। यदि SQL ठीक है, तो जटिल SQL क्रियाएँ sql भाषा में संसाधित होती हैं और ठीक काम करेंगी।

यदि आप अपने डेटाबेस को Microsoft क्वेरी (ODBC के माध्यम से) एक्सेल शीट से कनेक्ट करने का प्रयास करते हैं, तो आपको एक कॉन्फ़िगरेशन विज़ार्ड मिलता है, जिससे आप उस डेटाबेस को चुन सकते हैं जिसे आप कनेक्ट करना चाहते हैं। - aKzenT

ये त्रुटियां अक्सर 3rd पार्टी सॉफ्टवेयर में पाई जा सकती हैं, इसलिए कभी भी sql सर्वर पर किसी भी चीज के नाम में डॉट्स का उपयोग कभी न करें।


6

नामों में कई पात्रों की अनुमति है, लेकिन, सम्मेलन और सामान्य ज्ञान विशेष वर्णों के उपयोग को सीमित करते हैं। '_' (अंडरस्कोर) सिद्ध सबसे सुरक्षित विभाजक है और पठनीयता को आसानी से बनाए रखता है।


1

समान सौदा: विदेशी कुंजी नाम में कोई डॉट नहीं होना चाहिए।

मैंने पाया कि यदि आपको ऐसे नाम का नाम बदलने की आवश्यकता है, तो आपको sp_renameकाम करने के लिए कोष्ठक की आवश्यकता होगी (क्योंकि जैसा कि आप एक विदेशी कुंजी का नाम बदलते हैं, आपको स्कीमा को निर्दिष्ट करने की आवश्यकता है)।

उदाहरण:

sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'

यदि आप कोष्ठक भूल जाते हैं, तो आपको एक त्रुटि मिलती है: 15225


-1

हमारे आपूर्तिकर्ताओं में से एक ने स्कीमा नाम शुरू करने के लिए चुना है: [System.Activities.DurableInstancing]। यह हमारे डटालोड टूल को तोड़ दिया है, इसलिए अब हमें उनके अजीब से निपटने के लिए और विकास करना है। बस यह मत करो। का उपयोग '-'।


5
-जब आप अंडरस्कोर का उपयोग कर सकते हैं तो डैश का उपयोग क्यों करना चाहिए _और चौकोर कोष्ठक में नाम बिल्कुल भी संलग्न नहीं करना चाहिए?
एरिक

3
एक माइनस अन्य लेकिन इसी तरह की समस्याओं का कारण होगा।
डैनियल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.