it-swarm.asia

هل من المقبول وضع نقاط في أسماء قاعدة بيانات SQL Server؟

إذا استخدمت اسم قاعدة بيانات مع نقطة فيه في SQL Server (2005 أو 2008) ، شيء مثل "MyApp.Sales" ، فهل يتسبب ذلك في أي مشاكل؟

28
Sean Kearon

أنت تستطيع ، لكني لن أفعل. سيكون عليك دائمًا لف اسم DB بأقواس مربعة مثل [MyApp.Sales].

إذاً لتلخيص ذلك: إذا كنت تقدر عقلتك ، فلا تفعل ذلك.

62
Eric Humphrey - lotsahelp

أعتقد أنها فكرة سيئة للغاية حتى لو كان ذلك ممكنًا من الناحية الفنية.

على مر السنين اكتشفت أن العديد من الأشخاص يجدون صعوبة في فهم اصطلاح التسمية المكون من أربعة أجزاء على الرغم من أنه يبدو واضحًا جدًا:

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]

حفظ الأشياء بسيط مهم.

36
Marek Grzenkowicz

في حال واجه شخص آخر هذا السؤال ...

ضع في اعتبارك أنها ليست فكرة سيئة فقط لأنه قد يتم الخلط بين المستخدمين ، ولكن أيضًا لأنه قد يتم الخلط بين بعض الأدوات.

حتى مايكروسوفت نفسها لديها مشاكل مع هذا. إذا حاولت توصيل قاعدة البيانات الخاصة بك بورقة Excel باستخدام Microsoft Query (عبر ODBC) ، فستحصل على معالج تكوين يتيح لك اختيار قاعدة البيانات التي تريد الاتصال بها. ومع ذلك ، سيؤدي اختيار قاعدة بيانات تحتوي على نقطة إلى ظهور خطأ يفيد بعدم العثور على الخادم. يبدو أن المعالج لا يتحقق مما إذا كانت القيم تحتاج إلى الهروب وتسلسل المعرّفات بشكل أعمى.

هناك بالطبع مشاكل في العمل ، لكنك توفر على نفسك بعض المشاكل من خلال عدم القيام بذلك من البداية.

15
aKzenT

لا تستخدم النقطة في أسماء قواعد البيانات وأسماء النشر وأسماء المستخدمين. وأوصي بشدة بعدم استخدام نقطة في الاسم (العمود ، الجدول ، العرض ، قاعدة البيانات ، إلخ).

تحديث: أستطيع أن أؤكد أن الطرح والشرطة "-" يسبب مشاكل متشابهة.

إليك ما يحدث:

يستخدم SQL Server برامج نصية للاستخدام الداخلي مثل الإجراءات المخزنة للنظام. كما ذكرنا من قبل ، ستجبرك الأوامر التي تستخدمها أحيانًا على وضع الاسم بين قوسين وهو (بجدية Microsoft؟) ليس (دائمًا) بخير لاستخدام الإجراءات المخزنة .

في الحقيقة أنا لم يعد بإمكاني تنظيف معلومات الإيقاف لأن الإجراء المخزن يتكرر عبر جميع قواعد البيانات ولا يفلت من أسماء قاعدة البيانات بشكل صحيح. هذا التكرار هو ذلك التعقيد الذي لم أتمكن من تصحيحه في أكثر من 8 نقاط.

بالإضافة إلى أنني غير قادر على استخدام MMC أو البرامج النصية لتحرير تعارضات النسخ المتماثل . إذا كان لديك واحد (واحد!) قاعدة بيانات تحتوي على نقطة داخل اسمها ، ستحدث هذه المشاكل في كل يوم.

هذه هي الأحداث التي حدثت لي. تتم معالجة إجراءات SQL المعقدة بلغة SQL وستعمل بشكل جيد ، إذا كانت القاعدة على ما يرام.

إذا حاولت ربط قاعدة البيانات الخاصة بك بورقة Excel باستخدام Microsoft Query (عبر ODBC) ، فستحصل على معالج تكوين يتيح لك اختيار قاعدة البيانات التي تريد الاتصال بها. - aKzenT

غالبًا ما يتم العثور على هذه الأخطاء في برامج الجهات الخارجية ، لذلك لا تستخدم أبدًا النقاط في كل اسم لأي شيء على خادم SQL.

8
Daniel

هناك العديد من الأحرف المسموح بها في الأسماء ، ولكن الاصطلاح والحس السليم يحد من استخدام الأحرف الخاصة. "_" (الشرطة السفلية) هي الفاصل الأكثر أمانًا والمحافظة على سهولة القراءة.

7
user48235

نفس الصفقة: يجب ألا يحتوي اسم المفتاح الأجنبي على أي نقطة.

لقد وجدت أنه إذا كنت بحاجة إلى إعادة تسمية هذا الاسم ، فستحتاج إلى أقواس لجعل sp_rename العمل (لأنك عندما تقوم بإعادة تسمية مفتاح أجنبي تحتاج إلى تحديد المخطط).

مثال:

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

إذا نسيت الأقواس ، فستحصل على خطأ: 15225

1
Ozzie