ถ้าฉันใช้ชื่อฐานข้อมูลที่มีจุดอยู่ใน SQL Server (2005 หรือ 2008) บางอย่างเช่น "MyApp.Sales" สิ่งนี้จะทำให้เกิดปัญหาหรือไม่?
ถ้าฉันใช้ชื่อฐานข้อมูลที่มีจุดอยู่ใน SQL Server (2005 หรือ 2008) บางอย่างเช่น "MyApp.Sales" สิ่งนี้จะทำให้เกิดปัญหาหรือไม่?
คำตอบ:
คุณทำได้แต่ฉันจะไม่ทำ คุณจะต้องตัดชื่อฐานข้อมูลด้วยวงเล็บเหลี่ยมเช่น [MyApp.Sales]
ดังนั้นการสรุป: ถ้าคุณเห็นคุณค่าของความมีสติอย่าทำอย่างนั้น
ฉันคิดว่ามันเป็นความคิดที่เลวมากแม้ว่าจะเป็นไปได้ทางเทคนิค
ในช่วงหลายปีที่ผ่านมาฉันพบว่าหลายคนมีปัญหาในการทำความเข้าใจกับการตั้งชื่อแบบสี่ส่วนแม้ว่าจะดูเหมือนชัดเจน:
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]
การรักษาสิ่งที่เรียบง่ายเป็นสิ่งสำคัญ
ในกรณีที่คนอื่นพบคำถามนี้ ...
โปรดทราบว่าไม่เพียง แต่เป็นความคิดที่ไม่ดีเพราะผู้ใช้อาจสับสน แต่ยังเป็นเพราะเครื่องมือบางอย่างอาจสับสน
แม้แต่ Microsoft เองก็มีปัญหากับสิ่งนี้ หากคุณพยายามเชื่อมต่อฐานข้อมูลของคุณกับแผ่นงาน Excel โดยใช้ Microsoft Query (ผ่าน ODBC) คุณจะได้รับตัวช่วยสร้างการกำหนดค่าซึ่งให้คุณเลือกฐานข้อมูลที่คุณต้องการเชื่อมต่อ อย่างไรก็ตามการเลือกฐานข้อมูลที่มีจุดจะทำให้เกิดข้อผิดพลาดที่ระบุว่าไม่พบเซิร์ฟเวอร์ ดูเหมือนว่าตัวช่วยสร้างไม่ได้ตรวจสอบว่าค่าที่ต้องการหลบหนีและเชื่อมต่อตัวระบุ
มีวิธีแก้ไขปัญหาแน่นอน แต่คุณช่วยตัวเองให้เดือดร้อนโดยไม่ทำสิ่งนี้ตั้งแต่เริ่มต้น
อย่าใช้ช่วงเวลาในชื่อฐานข้อมูลชื่อสิ่งพิมพ์ชื่อผู้ใช้ และฉันขอแนะนำอย่างยิ่งว่าอย่าใช้จุดในชื่อ (คอลัมน์ตารางมุมมองฐานข้อมูล ฯลฯ )
อัปเดต: ฉันสามารถยืนยันได้ว่าเครื่องหมายลบขีดกลาง "-" เป็นสาเหตุของปัญหาที่คล้ายคลึงกัน
นี่คือสิ่งที่เกิดขึ้น:
SQL Server ใช้สคริปต์สำหรับการใช้งานภายในเช่นขั้นตอนการจัดเก็บระบบ ดังกล่าวแล้วที่นี่คำสั่งที่คุณใช้บางครั้งจะบังคับให้คุณใส่ชื่อลงในวงเล็บและนั่นคือ (Microsoft อย่างจริงจัง?) ไม่ได้ (เสมอ) โอเคสำหรับการใช้งานวิธีการจัดเก็บ
ในความเป็นจริงฉันไม่สามารถล้างข้อมูล abonnement อีกต่อไปเพราะขั้นตอนการจัดเก็บซ้ำผ่านฐานข้อมูลทั้งหมดและไม่หนีชื่อฐานข้อมูล propperly การทำซ้ำนี้เป็นสิ่งที่ซับซ้อนที่ฉันไม่สามารถแก้ไขได้ใน 8 SPs
นอกจากนี้ฉันไม่สามารถใช้ MMC หรือสคริปต์เพื่อแก้ไขข้อขัดแย้งของการจำลองแบบได้ หากคุณมีฐานข้อมูลหนึ่ง (หนึ่ง!) ที่มีจุดอยู่ภายในชื่อปัญหาเหล่านี้จะเกิดขึ้นกับ everey db ทุกสิ่งพิมพ์
นี่คือเหตุการณ์ที่ฉันมี การดำเนินการ SQL ที่ซับซ้อนจะถูกประมวลผลในภาษา sql และจะทำงานได้ดีถ้าฐานดี
หากคุณพยายามเชื่อมต่อฐานข้อมูลของคุณกับแผ่นงาน Excel โดยใช้ Microsoft Query (ผ่าน ODBC) คุณจะได้รับตัวช่วยสร้างการกำหนดค่าซึ่งให้คุณเลือกฐานข้อมูลที่คุณต้องการเชื่อมต่อ - aKzenT
ข้อผิดพลาดเหล่านี้มักจะพบได้ในซอฟต์แวร์บุคคลที่สามดังนั้นอย่าใช้จุดในทุกชื่อของทุกสิ่งบนเซิร์ฟเวอร์ sql
มีอักขระจำนวนมากที่อนุญาตให้ใช้ในชื่อ แต่การประชุมและสามัญสำนึก จำกัด การใช้อักขระพิเศษ '_' (ขีดล่าง) เป็นตัวแยกที่ปลอดภัยที่สุดที่พิสูจน์แล้วและรักษาความง่ายในการอ่าน
ดีลเดียวกัน: ชื่อคีย์ต่างประเทศไม่ควรมีจุดใด ๆ
ฉันพบว่าหากคุณต้องการเปลี่ยนชื่อดังกล่าวคุณจะต้องใช้เครื่องหมายวงเล็บในการsp_renameทำงาน (เพราะเมื่อคุณเปลี่ยนชื่อคีย์ต่างประเทศคุณจะต้องระบุสคีมา)
ตัวอย่าง:
sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'
หากคุณลืมเครื่องหมายวงเล็บแสดงว่าคุณได้รับข้อผิดพลาด: 15225
หนึ่งในซัพพลายเออร์ของเราได้เลือกที่จะแนะนำชื่อสคีมา: [System.Activities.DurableInstancing] มันเสียเครื่องมือดาต้าโหลดของเราดังนั้นตอนนี้เรามีการพัฒนาเพิ่มเติมเพื่อรับมือกับความแปลกประหลาดของพวกเขา อย่าทำอย่างนั้น ใช้ '-'.
-เมื่อคุณสามารถใช้เครื่องหมายขีดล่าง_และไม่จำเป็นต้องใส่ชื่อในวงเล็บเหลี่ยมเลย