คำถามติดแท็ก sql-server

Microsoft SQL Server ทุกรุ่น (ไม่ใช่ MySQL) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น sql-server-2016 เนื่องจากมักเกี่ยวข้องกับคำถาม

19
การเพิ่มส่วนนำหน้า 'tbl' ลงในชื่อตารางเป็นปัญหาหรือไม่
ฉันดูวิดีโอบางส่วน Brent Ozar ( เช่นนี้ตัวอย่างเช่น ) และเขาก็แสดงให้เห็นไม่ prefixing ตารางที่มีหรือ‘tbl’‘TBL’ บนอินเทอร์เน็ตฉันพบว่ามีบางบล็อกที่บอกว่าไม่ได้เพิ่มอะไรลงไปในเอกสารประกอบและนอกจากนี้“ มันใช้เวลาในการอ่านนานกว่า” คำถามและข้อควรพิจารณา มันเป็นปัญหาหรือไม่? เพราะฉันเติมตารางด้วย 'tbl' ตั้งแต่งาน dba แรกของฉัน (DBA อาวุโสบอกให้ฉันทำแบบนั้นกับองค์กร) นี่เป็นสิ่งที่ฉันต้องกำจัดหรือไม่ ฉันทำการทดสอบคัดลอกตารางที่มีขนาดใหญ่มากและให้คำนำหน้า 'tbl' ในขณะที่รักษาอีกอันไว้โดยไม่มีมันและฉันไม่ได้สังเกตเห็นปัญหาเรื่องประสิทธิภาพใด ๆ

5
ควรใช้ TINYINT บน INT เมื่อใด
โดยทั่วไปฉันมักจะใช้ Ints ฉันรู้ว่าในทางทฤษฎีแล้วนี่ไม่ใช่วิธีปฏิบัติที่ดีที่สุดเนื่องจากคุณควรใช้ประเภทข้อมูลที่เล็กที่สุดที่จะรับประกันการจัดเก็บข้อมูล ตัวอย่างเช่นจะดีกว่าที่จะใช้tinyintเมื่อคุณรู้ว่าข้อมูลเดียวที่คุณจะจัดเก็บคือ 1, 0 หรือ null (มีโอกาสน้อยมากที่จะขยายไปยัง 2 หรือ 3 ในภายหลัง) อย่างไรก็ตามเหตุผลเดียวที่ฉันรู้ในการทำเช่นนี้คือเพื่อวัตถุประสงค์ในการจัดเก็บข้อมูล - ใช้ 1 ไบต์ในแถวแทนที่จะเป็น 4 ไบต์ อะไรคือผลกระทบของการใช้tinyint(หรือsmallintหรือbigintมากกว่า) intนอกเหนือจากการประหยัดพื้นที่บนฮาร์ดไดรฟ์ของคุณ?

3
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะสร้างธุรกรรมอยู่เสมอ?
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะสร้างธุรกรรมอยู่เสมอ? ยกตัวอย่างเช่นมันเป็นวิธีที่ดีในการสร้างการทำธุรกรรมเพื่ออะไร แต่คนที่เรียบง่ายSELECT? ต้นทุนในการสร้างธุรกรรมเมื่อไม่จำเป็นจริงๆคืออะไร? แม้ว่าคุณจะใช้ระดับการแยกเช่นREAD UNCOMMITTEDนั้นมันเป็นการปฏิบัติที่ไม่ดีหรือไม่?

6
กำลังดึงข้อมูลแถว n ต่อกลุ่ม
ฉันมักจะต้องเลือกจำนวนแถวจากแต่ละกลุ่มในชุดผลลัพธ์ ตัวอย่างเช่นฉันอาจต้องการแสดงมูลค่าการสั่งซื้อล่าสุด 'n' ที่สูงที่สุดหรือต่ำสุดต่อลูกค้า ในกรณีที่ซับซ้อนมากขึ้นจำนวนแถวที่จะแสดงอาจแตกต่างกันไปในแต่ละกลุ่ม (กำหนดโดยแอตทริบิวต์ของการจัดกลุ่ม / ระเบียนหลัก) ส่วนนี้เป็นทางเลือก / สำหรับเครดิตเพิ่มเติมและไม่ได้มีเจตนาเพื่อห้ามไม่ให้คนตอบรับ ตัวเลือกหลักสำหรับการแก้ไขปัญหาประเภทนี้ใน SQL Server 2005 และรุ่นที่ใหม่กว่าคืออะไร อะไรคือข้อดีและข้อเสียหลักของแต่ละวิธี? ตัวอย่าง AdventureWorks (เพื่อความชัดเจนและเป็นตัวเลือก) แสดงวันที่ล่าสุดของการทำธุรกรรมห้าครั้งและรหัสจากTransactionHistoryตารางสำหรับแต่ละผลิตภัณฑ์ที่เริ่มต้นด้วยตัวอักษรจาก M ถึง R เหมือนกันอีกครั้ง แต่มีnบรรทัดประวัติต่อผลิตภัณฑ์โดยที่nห้าเท่าของDaysToManufactureแอตทริบิวต์ผลิตภัณฑ์ เดียวกันสำหรับกรณีพิเศษที่ว่าเส้นหนึ่งของประวัติศาสตร์ที่ต่อผลิตภัณฑ์เป็นสิ่งจำเป็น (เดี่ยวรายการล่าสุดโดยผูกทำลายบนTransactionDateTransactionID


4
ฐานข้อมูลเซิร์ฟเวอร์ SQL ค้างอยู่ในสถานะคืนค่า
ฉันมีเซิร์ฟเวอร์ Sharepoint เรามีปัญหากับเครื่องมือสำรองของเราและตอนนี้ฐานข้อมูลของฉันบางส่วนติดอยู่ในสถานะการกู้คืน! เป็นไปได้หรือไม่ที่จะหยุดกระบวนการกู้คืน และฉันจะมั่นใจได้อย่างไรว่าความสมบูรณ์ของฐานข้อมูลไม่ได้ถูกบุกรุก?

5
มีการอัปเกรดแบบแทนที่ SQL Server แบบไม่ดีเหมือนที่เคยเป็นมาหรือไม่?
ฉันได้ทำงานกับเซิร์ฟเวอร์ SQL ในการเปิดและปิดตั้งแต่ SQL Server 6.5 คำแนะนำเก่าที่ยังคงดังในหัวของฉันก็ไม่เคยที่จะทำการอัพเกรดในสถานที่ ฉันกำลังอัปเกรดระบบ 2008 R2 DEV และ TEST เป็น SQL Server 2012 และต้องใช้ฮาร์ดแวร์เดียวกัน ความคิดที่ไม่จำเป็นต้องกู้คืนการกำหนดค่าบริการรายงานของฉันนั้นน่าสนใจมากและฉันก็ขัดกับเวลาที่ชาญฉลาดจริงๆ ไม่มีบริการวิเคราะห์ที่เกี่ยวข้องหรือสิ่งใดที่ผิดปกติหรือไม่เป็นมาตรฐาน - ติดตั้งเฉพาะเอ็นจิ้นฐานข้อมูลและบริการรายงานเท่านั้น มีใครประสบปัญหาร้ายแรงกับการอัปเกรดแบบแทนที่หรือไม่ หรือฉันควรประเมินตำแหน่งของฉันเกี่ยวกับการอัปเกรดแบบแทนที่?

4
ทำไมคำถามของฉันจึงช้ากว่าเมื่อวานเมื่อวาน?
[Memorial ~] (เลือกหนึ่งอัน) [ ] Well trained professional, [ ] Casual reader, [ ] Hapless wanderer, ฉันมี(เลือกทุกข้อที่ใช่) [ ] query [ ] stored procedure [ ] database thing maybe ที่ทำงานได้ดี(ถ้ามี) [ ] yesterday [ ] in recent memory [ ] at some point แต่ตอนนี้ช้าลงทันที ฉันได้ตรวจสอบแล้วเพื่อให้แน่ใจว่าไม่ได้ถูกบล็อกและไม่ใช่เหยื่อของงานการบำรุงรักษารายงานหรือกระบวนการนอกแบนด์ที่ยาวนาน ปัญหาคือสิ่งที่ฉันควรทำอย่างไรและฉันสามารถให้ข้อมูลใดได้บ้างเพื่อรับความช่วยเหลือ [*Insert appropriate closing remarks*]

5
ฐานข้อมูลใดที่สามารถจัดการกับการจัดเก็บระเบียนจำนวนพันล้านล้านล้านระเบียน
เรากำลังมองหาการพัฒนาเครื่องมือในการจับและวิเคราะห์ข้อมูล netflow ซึ่งเราได้รวบรวมจำนวนมหาศาล ในแต่ละวันเราบันทึกเร็กคอร์ดกระแสประมาณ 1.4 พันล้านรายการซึ่งจะมีลักษณะเช่นนี้ในรูปแบบ json: { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", …

4
แหล่งข้อมูลที่เชื่อถือได้ที่ <> และ! = เหมือนกันในประสิทธิภาพใน SQL Server
ลองพิจารณาคำตอบนี้เพื่อให้ความมั่นใจแก่ผู้ถามเกี่ยวกับ&lt;&gt;โอเปอเรเตอร์ที่: &lt;&gt;คือ ... !=เช่นเดียวกับ แต่จากนั้นผู้แสดงความคิดเห็นท่อขึ้นและพูดว่า: มันเป็นความจริงที่ว่าพวกมันใช้งานได้เหมือนกัน อย่างไรก็ตามเครื่องมือเพิ่มประสิทธิภาพการใช้ SQL นั้นแตกต่างกันมาก = /! = จะถูกประเมินว่าเป็นความจริง / เท็จในขณะที่ &lt;&gt; หมายถึงเครื่องยนต์ต้องมองและดูว่าค่ามากกว่าหรือน้อยกว่าหมายถึงค่าใช้จ่ายในการทำงานที่มากขึ้น สิ่งที่ควรพิจารณาเมื่อเขียนข้อความค้นหาที่อาจมีราคาแพง ฉันมั่นใจว่านี่เป็นเท็จ แต่เพื่อที่จะจัดการกับความคลางแคลงที่อาจเกิดขึ้นฉันสงสัยว่าทุกคนสามารถให้แหล่งข้อมูลที่เชื่อถือได้หรือเป็นที่ยอมรับเพื่อพิสูจน์ว่าผู้ประกอบการเหล่านี้ไม่เพียง แต่ใช้งานได้เหมือนกัน

6
เหตุใด SET ARITHABORT ON จึงเร่งการสืบค้นอย่างรวดเร็ว
แบบสอบถามเป็นตัวเลือกเดียวที่มีระดับการจัดกลุ่มจำนวนมากและการดำเนินการ aggragate เมื่อ SET ARITHABORT ON ใช้เวลาน้อยกว่าหนึ่งวินาทีมิฉะนั้นจะใช้เวลาหลายนาที เราได้เห็นพฤติกรรมนี้ใน SQL Server 2000 และ 2008
74 sql-server 

2
เชื่อมต่อกับ SQL Server ด้วย Windows Authentication ในโดเมนอื่น
ฉันพยายามเชื่อมต่อกับ SQL Server ระยะไกลบน VPN ในโดเมนอื่น เมื่อฉันป้อนชื่อเซิร์ฟเวอร์บน SQL Server และเลือกพารามิเตอร์การเชื่อมต่อเพิ่มเติมเพื่อเพิ่มสิ่งพิเศษที่โรงเรียนของฉันต้องการ: Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password ฉันได้รับข้อผิดพลาดต่อไปนี้: การเข้าสู่ระบบล้มเหลว การเข้าสู่ระบบมาจากโดเมนที่ไม่น่าเชื่อถือและไม่สามารถใช้กับการตรวจสอบ Windows

6
SQL Server ไม่สามารถวางฐานข้อมูล <dbname> ได้เนื่องจากมีการใช้งานอยู่ ... แต่ไม่มีเซสชันปรากฏขึ้น
เมื่อฉันพยายามที่จะวางฐานข้อมูลฉันได้รับข้อผิดพลาด "ไม่สามารถวางฐานข้อมูล" dbname "เพราะมันกำลังใช้งานอยู่" อย่างไรก็ตามเมื่อฉันรันsp_who2ไม่มีการเชื่อมต่อเซสชันกับฐานข้อมูลนี้ single_user mode with rollback immediateฉันยังได้ตั้งฐานข้อมูลเพื่อ ทำไมสิ่งนี้จึงเกิดขึ้น

1
รวมส่วนย่อยของตารางเป้าหมาย
ฉันกำลังพยายามใช้MERGEคำสั่งเพื่อแทรกหรือลบแถวออกจากตาราง แต่ฉันต้องการดำเนินการกับชุดย่อยของแถวเหล่านั้นเท่านั้น เอกสารสำหรับMERGEคำเตือนที่มีคำพูดค่อนข้างแรง: สิ่งสำคัญคือต้องระบุเฉพาะคอลัมน์จากตารางเป้าหมายที่ใช้สำหรับจุดประสงค์ที่ตรงกัน นั่นคือระบุคอลัมน์จากตารางเป้าหมายที่เปรียบเทียบกับคอลัมน์ที่เกี่ยวข้องของตารางต้นฉบับ อย่าพยายามปรับปรุงประสิทธิภาพการสืบค้นด้วยการกรองแถวในตารางเป้าหมายในส่วนคำสั่ง ON เช่นโดยระบุ AND NOT target_table.column_x = value การทำเช่นนั้นอาจส่งคืนผลลัพธ์ที่ไม่คาดคิดและไม่ถูกต้อง แต่นี่คือสิ่งที่ฉันต้องทำเพื่อให้MERGEงานของฉันปรากฏ ข้อมูลที่ฉันมีคือตารางการเข้าร่วมหลายต่อหลายมาตรฐานสำหรับหมวดหมู่ (เช่นรายการที่รวมอยู่ในหมวดหมู่ใด) ดังนี้: CategoryId ItemId ========== ====== 1 1 1 2 1 3 2 1 2 3 3 5 3 6 4 5 สิ่งที่ฉันต้องทำคือการแทนที่แถวทั้งหมดในหมวดหมู่เฉพาะด้วยรายการใหม่ ความพยายามครั้งแรกของฉันในการทำเช่นนี้ดูเหมือนว่า: MERGE INTO CategoryItem AS TARGET USING ( SELECT ItemId FROM …

6
มีความเสี่ยงอะไรบ้างถ้าเราเปิดใช้งานสแนปชอตการอ่านใน sql-server
ฉันได้อ่านที่นี่ว่าข้อมูลพิเศษบางอย่างจะถูกจัดเก็บต่อแถวดังนั้นเราจึงอาจเห็นประสิทธิภาพลดลง แต่มีความเสี่ยงอื่นอีกหรือไม่ เช่น. สิ่งนี้จะส่งผลต่อการกู้คืนฐานข้อมูลหรือไม่? มีอะไรอีกบ้างที่เราต้องทำเพื่อใช้ประโยชน์จากสิ่งนี้? ฉันวางแผนที่จะดำเนินการคำสั่งเหล่านี้: ALTER DATABASE DatabaseName SET READ_COMMITTED_SNAPSHOT ON ALTER DATABASE DatabaseName SET ALLOW_SNAPSHOT_ISOLATION ON ฉันเชื่อว่าสิ่งนี้จะทำให้เรามีบางสิ่งที่ใกล้เคียงกับ oracle มากขึ้นหากว่ามีธุรกรรมหนึ่งธุรกรรมที่กำลังอัพเดทธุรกรรมอื่น ๆ ยังคงสามารถอ่านข้อมูลเก่าได้ ถูกต้องหรือไม่ ฉันกำลังมองหาสิ่งนี้เพราะฉันเบื่อปัญหาการล็อคใน SQL Server 2005 ฉันหวังว่าสิ่งนี้อาจลดการหยุดชะงักเป็นครั้งคราวที่ผู้ใช้ของเราเห็นช่วยให้ประสิทธิภาพโดยรวมของแอปพลิเคชันของเราและกระตุ้นให้นักพัฒนาของเรา กลัว.

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