การใส่จุดในชื่อฐานข้อมูล SQL Server เป็นเรื่องปกติหรือไม่


27

ถ้าฉันใช้ชื่อฐานข้อมูลที่มีจุดอยู่ใน SQL Server (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 เองก็มีปัญหากับสิ่งนี้ หากคุณพยายามเชื่อมต่อฐานข้อมูลของคุณกับแผ่นงาน Excel โดยใช้ Microsoft Query (ผ่าน ODBC) คุณจะได้รับตัวช่วยสร้างการกำหนดค่าซึ่งให้คุณเลือกฐานข้อมูลที่คุณต้องการเชื่อมต่อ อย่างไรก็ตามการเลือกฐานข้อมูลที่มีจุดจะทำให้เกิดข้อผิดพลาดที่ระบุว่าไม่พบเซิร์ฟเวอร์ ดูเหมือนว่าตัวช่วยสร้างไม่ได้ตรวจสอบว่าค่าที่ต้องการหลบหนีและเชื่อมต่อตัวระบุ

มีวิธีแก้ไขปัญหาแน่นอน แต่คุณช่วยตัวเองให้เดือดร้อนโดยไม่ทำสิ่งนี้ตั้งแต่เริ่มต้น


7

อย่าใช้ช่วงเวลาในชื่อฐานข้อมูลชื่อสิ่งพิมพ์ชื่อผู้ใช้ และฉันขอแนะนำอย่างยิ่งว่าอย่าใช้จุดในชื่อ (คอลัมน์ตารางมุมมองฐานข้อมูล ฯลฯ )

อัปเดต: ฉันสามารถยืนยันได้ว่าเครื่องหมายลบขีดกลาง "-" เป็นสาเหตุของปัญหาที่คล้ายคลึงกัน

นี่คือสิ่งที่เกิดขึ้น:

SQL Server ใช้สคริปต์สำหรับการใช้งานภายในเช่นขั้นตอนการจัดเก็บระบบ ดังกล่าวแล้วที่นี่คำสั่งที่คุณใช้บางครั้งจะบังคับให้คุณใส่ชื่อลงในวงเล็บและนั่นคือ (Microsoft อย่างจริงจัง?) ไม่ได้ (เสมอ) โอเคสำหรับการใช้งานวิธีการจัดเก็บ

ในความเป็นจริงฉันไม่สามารถล้างข้อมูล abonnement อีกต่อไปเพราะขั้นตอนการจัดเก็บซ้ำผ่านฐานข้อมูลทั้งหมดและไม่หนีชื่อฐานข้อมูล propperly การทำซ้ำนี้เป็นสิ่งที่ซับซ้อนที่ฉันไม่สามารถแก้ไขได้ใน 8 SPs

นอกจากนี้ฉันไม่สามารถใช้ MMC หรือสคริปต์เพื่อแก้ไขข้อขัดแย้งของการจำลองแบบได้ หากคุณมีฐานข้อมูลหนึ่ง (หนึ่ง!) ที่มีจุดอยู่ภายในชื่อปัญหาเหล่านี้จะเกิดขึ้นกับ everey db ทุกสิ่งพิมพ์

นี่คือเหตุการณ์ที่ฉันมี การดำเนินการ SQL ที่ซับซ้อนจะถูกประมวลผลในภาษา sql และจะทำงานได้ดีถ้าฐานดี

หากคุณพยายามเชื่อมต่อฐานข้อมูลของคุณกับแผ่นงาน Excel โดยใช้ Microsoft Query (ผ่าน ODBC) คุณจะได้รับตัวช่วยสร้างการกำหนดค่าซึ่งให้คุณเลือกฐานข้อมูลที่คุณต้องการเชื่อมต่อ - aKzenT

ข้อผิดพลาดเหล่านี้มักจะพบได้ในซอฟต์แวร์บุคคลที่สามดังนั้นอย่าใช้จุดในทุกชื่อของทุกสิ่งบนเซิร์ฟเวอร์ sql


6

มีอักขระจำนวนมากที่อนุญาตให้ใช้ในชื่อ แต่การประชุมและสามัญสำนึก จำกัด การใช้อักขระพิเศษ '_' (ขีดล่าง) เป็นตัวแยกที่ปลอดภัยที่สุดที่พิสูจน์แล้วและรักษาความง่ายในการอ่าน


1

ดีลเดียวกัน: ชื่อคีย์ต่างประเทศไม่ควรมีจุดใด ๆ

ฉันพบว่าหากคุณต้องการเปลี่ยนชื่อดังกล่าวคุณจะต้องใช้เครื่องหมายวงเล็บในการsp_renameทำงาน (เพราะเมื่อคุณเปลี่ยนชื่อคีย์ต่างประเทศคุณจะต้องระบุสคีมา)

ตัวอย่าง:

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

หากคุณลืมเครื่องหมายวงเล็บแสดงว่าคุณได้รับข้อผิดพลาด: 15225


-1

หนึ่งในซัพพลายเออร์ของเราได้เลือกที่จะแนะนำชื่อสคีมา: [System.Activities.DurableInstancing] มันเสียเครื่องมือดาต้าโหลดของเราดังนั้นตอนนี้เรามีการพัฒนาเพิ่มเติมเพื่อรับมือกับความแปลกประหลาดของพวกเขา อย่าทำอย่างนั้น ใช้ '-'.


5
ทำไมต้องใช้เครื่องหมายขีดกลาง-เมื่อคุณสามารถใช้เครื่องหมายขีดล่าง_และไม่จำเป็นต้องใส่ชื่อในวงเล็บเหลี่ยมเลย
ErikE

3
ลบจะทำให้เกิดปัญหาอื่น ๆ แต่ที่คล้ายกัน
Daniel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.