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

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

2
งานติดค้างในสตูดิโอการจัดการคุณจัดการกับพวกเขาอย่างไร
หลังจากคลิกที่ "ใช้ฐานข้อมูลออฟไลน์" ในสตูดิโอการจัดการข้อความนี้จะยังคงอยู่และจะไม่ปิดถ้าคุณคลิกที่ปิด เป็นวิธีที่ดีในการจัดการกับงานค้างเช่นนี้ในสตูดิโอการจัดการอะไร คุณสามารถฆ่าพวกเขาผ่านการตรวจสอบกิจกรรมได้หรือไม่? ฉันควรหากระบวนการที่จะหยุดงานนี้จากการผ่านและยุติมันได้หรือไม่
13 sql-server  ssms 

3
ค้นหา 100x ช้าลงใน SQL Server 2014 แถว Row Spool ประมาณผู้ร้ายหรือไม่
ฉันมีแบบสอบถามที่วิ่งใน800 มิลลิวินาทีใน SQL Server 2012และใช้เวลาประมาณ170 วินาทีใน SQL Server 2014 ฉันคิดว่าฉันได้ จำกัด เรื่องนี้ให้แคบลงเพื่อประเมินความน่าจะเป็นของRow Count Spoolผู้ให้บริการ ฉันได้อ่านเกี่ยวกับตัวดำเนินการสปูลแล้ว (เช่นที่นี่และที่นี่ ) แต่ฉันยังคงมีปัญหาในการทำความเข้าใจบางสิ่ง: เหตุใดแบบสอบถามนี้จึงต้องการRow Count Spoolผู้ดำเนินการ ฉันไม่คิดว่ามันจำเป็นสำหรับความถูกต้องดังนั้นสิ่งที่พยายามเพิ่มประสิทธิภาพโดยเฉพาะคืออะไร? เหตุใด SQL Server จึงประมาณว่าการเข้าร่วมกับRow Count Spoolผู้ดำเนินการลบแถวทั้งหมดออก นี่เป็นข้อบกพร่องใน SQL Server 2014 หรือไม่ ถ้าเป็นเช่นนั้นฉันจะยื่นในการเชื่อมต่อ แต่ฉันต้องการความเข้าใจที่ลึกซึ้งยิ่งขึ้นก่อน หมายเหตุ: ฉันสามารถเขียนแบบสอบถามอีกครั้งเป็นLEFT JOINหรือเพิ่มดัชนีลงในตารางเพื่อให้ได้ประสิทธิภาพที่ยอมรับได้ทั้งใน SQL Server 2012 และ SQL Server 2014 ดังนั้นคำถามนี้เกี่ยวกับการทำความเข้าใจแบบสอบถามเฉพาะและแผนในเชิงลึกมากขึ้น วิธีวลีที่ค้นหาแตกต่างกัน แบบสอบถามช้า ดูPastebin นี้สำหรับสคริปต์ทดสอบฉบับเต็ม …

4
SQL Server - ความแตกต่างระหว่างชื่ออินสแตนซ์และรหัสอินสแตนซ์
ฉันสับสนกับอินสแตนซ์ของ SQL Server เล็กน้อย ชื่ออินสแตนซ์และ ID อินสแตนซ์เป็นคุณสมบัติที่แตกต่างกัน แต่อินสแตนซ์ ID มีแนวโน้มที่จะเป็นค่าเริ่มต้นเป็นชื่ออินสแตนซ์ที่เป็นตัวพิมพ์ใหญ่ การติดตั้งช่วยให้คุณสามารถตั้งค่าต่าง ๆ สำหรับ ID ได้มากกว่าชื่อแม้ว่าโดยทั่วไปแล้วจะเหมือนกัน เห็นได้ชัดว่า ID หมายถึงการอ้างอิงภายในและชื่อหมายถึงการอ้างอิงที่ใช้งานง่าย แต่อะไรคือความแตกต่างพื้นฐานระหว่างสองสิ่งนี้? เมื่อใดจึงควรใช้มากกว่าอีกอัน ฉันต้องเข้าใจสิ่งนี้ในขณะที่ปรับใช้ / ติดตั้ง SQL Server 2008 R2 Express บนเครื่องเซิร์ฟเวอร์ของลูกค้าของเราจากกระบวนการติดตั้งแบบกำหนดเอง
13 sql-server 

3
ERROR_STATE () ใน SQL Server คืออะไรและสามารถใช้งานได้อย่างไร?
ฉันอ่านว่าERROR_STATE()สามารถช่วยแยกแยะความแตกต่างระหว่างสถานะ / สถานที่ต่าง ๆ ในซอร์สโค้ดซึ่งเกิดข้อผิดพลาดประเภทเดียวกันได้ แต่มันไม่ชัดเจนสำหรับฉันว่ามันมีประโยชน์อย่างไร สถานะ MSDN: ERROR_STATE() ส่งคืนหมายเลขสถานะของข้อผิดพลาดที่ทำให้บล็อก CATCH ของโครงสร้าง TRY … CATCH ถูกเรียกใช้ สามารถนำไปใช้งานจริงได้อย่างไร? บางคนสามารถยกตัวอย่างให้ฉันคนที่ให้ไว้ในบทความอ้างอิงนี้ไม่ได้ช่วยอธิบายสิ่งต่าง ๆ ได้ดีสำหรับฉัน

4
ผลกระทบด้านความปลอดภัยและประสิทธิภาพของ“ สถานะเซิร์ฟเวอร์ดู”
คำถามนี้ชี้ให้เห็นว่าจำเป็นต้องได้รับอนุญาต "ดูสถานะเซิร์ฟเวอร์" สำหรับ DMV (มุมมองการจัดการแบบไดนามิก) ต่างๆ แต่ฉันไม่สามารถหาสิ่งที่คุณทำและไม่ต้องการให้สิทธิ์ ตอนนี้ฉันเข้าใจแล้วว่า "การอนุญาตน้อยที่สุด" และทำไมคุณไม่ต้องการให้ใครเลย แต่ฉันไม่สามารถหาแนวทางในการประเมินว่าควรได้รับอนุญาตหรือไม่ ดังนั้นคำถามของฉัน: อะไรคือความปลอดภัยและความหมายของประสิทธิภาพในการให้สิทธิ์ผู้ใช้ "ดูสถานะเซิร์ฟเวอร์" พวกเขาทำอะไรได้บ้างพวกเขาอาจไม่ได้รับอนุญาตให้ทำ ... อัปเดต : ข้อบ่งชี้หนึ่งคือผู้ใช้จะสามารถใช้ DMV เพื่อดูข้อความค้นหาได้ หากการสืบค้นหรือพารามิเตอร์การสืบค้นสามารถมีข้อมูลที่เป็นความลับที่ผู้ใช้ไม่สามารถมองเห็นได้การอนุญาตให้ VIEW SERVER STATE อนุญาตให้ทำเช่นนั้นได้ (เช่น dob = หรือ ssn =)
13 sql-server 

4
กระบวนการ“ TASK MANAGER” กำลังเข้ายึดฐานข้อมูลโหมดผู้ใช้คนเดียว มันคืออะไร?
นี่เป็นคำถามที่ซ้ำกันที่ฉันถามในstackoverflowแต่ฉันได้รับคำแนะนำว่าคนที่นี่อาจมีความคิดที่ดีขึ้นว่าเกิดอะไรขึ้น ฉันมีปัญหาเป็นระยะ ๆ เมื่ออัพเกรด SQL Server ในโหมดผู้ใช้คนเดียวโดยใช้. NET SqlConnection แอปพลิเคชั่นอื่น ๆ บางอย่างจะล็อกเข้าสู่ฐานข้อมูลในขณะที่กำลังประมวลผลโค้ด SQL และเริ่มกระบวนการของฉัน SqlConnection จะไม่ถูกปิดหรือกำจัด แต่อย่างใด แต่แอปพลิเคชั่นอื่นบางตัวเชื่อมต่อกับฐานข้อมูลและทำให้การเชื่อมต่อของฉันหยุดชะงัก เมื่อฉันรัน sp_who ฉันจะเห็นว่ากระบวนการที่ควบคุมฐานข้อมูลคือ Command = "TASK MANAGER" ทุกคนสามารถบอกฉันได้ว่ากระบวนการนี้มีจุดประสงค์อะไรและในโลกจะเข้าสู่ฐานข้อมูลได้อย่างไรซึ่งอยู่ในโหมดผู้ใช้คนเดียวและมีการเชื่อมต่อที่ใช้งานอยู่?

1
ตัวเลือกการล็อคของฉันสำหรับคำสั่งผสานคืออะไร
ฉันมีขั้นตอนการจัดเก็บที่ดำเนินการคำสั่งMERGE ดูเหมือนว่าจะล็อกทั้งตารางตามค่าเริ่มต้นเมื่อดำเนินการผสาน ฉันกำลังเรียกขั้นตอนการจัดเก็บนี้ภายในธุรกรรมที่ฉันกำลังทำสิ่งอื่นอยู่ด้วยและฉันหวังว่ามันจะล็อคแถวที่ได้รับผลกระทบเท่านั้น ฉันลองคำใบ้MERGE INTO myTable WITH (READPAST)และดูเหมือนจะล็อคน้อยลง แต่มีคำเตือนในเอกสาร ms ที่บอกว่าสามารถแทรกคีย์ที่ซ้ำกันได้แม้จะข้ามคีย์หลัก นี่คือคีตารางของฉัน: CREATE TABLE StudentDetails ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(15) ) GO INSERT INTO StudentDetails VALUES(1,'WANG') INSERT INTO StudentDetails VALUES(2,'JOHNSON') GO CREATE TABLE StudentTotalMarks ( Id INT IDENTITY PRIMARY KEY, StudentID INTEGER REFERENCES StudentDetails, StudentMarks INTEGER ) GO …

3
วิธีค้นหาว่าการสำรองข้อมูลเซิร์ฟเวอร์ SQL นั้นถูกเข้ารหัสด้วย TDE โดยไม่กู้คืนการสำรองข้อมูลหรือไม่
มีวิธีการค้นหาจากไฟล์ SQL Server Backup หรือตาราง MSDB หรือไม่หากการสำรองข้อมูลถูกเข้ารหัสด้วย TDE โดยไม่ต้องพยายามเรียกคืนไฟล์ข้อมูลสำรอง? ขอบคุณ
13 sql-server 

4
ไม่สามารถสร้างแคตตาล็อก SSISDB
รับข้อผิดพลาดด้านล่างขณะพยายามสร้างแคตตาล็อกในบริการการรวมของ sql server 2014 ความคิดใดที่ฉันพลาดในการติดตั้งหรือที่อื่น ๆ ? ไม่สามารถเข้าถึงไฟล์สำรองข้อมูลแค็ตตาล็อก 'C: \ Program Files \ Microsoft SQL Server \ 120 \ DTS \ Binn \ SSISDBBackup.bak' ตรวจสอบให้แน่ใจว่ามีไฟล์ฐานข้อมูลอยู่และบัญชี SQL Server Service นั้นสามารถเข้าถึงได้ (Microsoft.SqlServer.IntegrationServices.Common.ObjectModel)

4
ทำไมคุณต้องการหลีกเลี่ยง Dynamic SQL ในขั้นตอนการจัดเก็บ?
ฉันเคยได้ยินคนหนึ่งบอกว่าคุณไม่ต้องการใช้ Dynamic SQL คุณสามารถยกตัวอย่างที่เป็นรูปธรรมหรือตัวอย่างในชีวิตจริงได้ไหม ส่วนตัวฉันรหัสมันสองสามครั้งในฐานข้อมูลของฉัน ฉันคิดว่ามันใช้ได้เพราะความยืดหยุ่น ฉันเดาว่าเกี่ยวกับ SQL Injection หรือ Performance มีอะไรอีกไหม

6
ระบบปฏิบัติการส่งคืนข้อผิดพลาด 21 (อุปกรณ์ไม่พร้อม)
ทุกครั้งที่ฉันรีบูท Windows สำหรับฐานข้อมูลบางอย่างฉันจะได้รับข้อผิดพลาดนี้: ระบบปฏิบัติการส่งคืนข้อผิดพลาด 21 (อุปกรณ์ไม่พร้อม) ฉันตรวจสอบดิสก์ด้วยchkdsk /r- ไม่มีเซกเตอร์เสีย ฉันดำเนินการDBCC CHECKDBโดยไม่มีข้อผิดพลาด: *(CHECKDB found 0 allocation errors and 0 consistency errors in database)* ถ้าฉันรีสตาร์ท SQL Server ข้อผิดพลาดจะหายไป Windows 10 และ SQL Server 2016 Express

1
เหตุใดข้อความค้นหาที่คล้ายกันเหล่านี้จึงใช้ขั้นตอนการเพิ่มประสิทธิภาพที่แตกต่างกัน (การประมวลผลธุรกรรมกับแผนด่วน)
รหัสตัวอย่างในรายการเชื่อมต่อนี้ แสดงข้อบกพร่องที่ SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 ON L1.csv_item = L2.csv_item ส่งคืนผลลัพธ์ที่ถูกต้อง แต่ผลลัพธ์ต่อไปนี้จะส่งกลับผลลัพธ์ที่ไม่ถูกต้อง (เมื่อปี 2014 โดยใช้เครื่องมือประมาณการ Cardinality ใหม่) SELECT (SELECT COUNT(*) FROM dbo.my_splitter_1('2') L1 INNER JOIN dbo.my_splitter_1('') L2 ON L1.csv_item = L2.csv_item) เนื่องจากมันโหลดผลลัพธ์อย่างไม่ถูกต้องสำหรับ L2 ลงในสปูลนิพจน์ย่อยทั่วไปจากนั้นรีเพลย์ผลลัพธ์ของผลลัพธ์นั้นสำหรับผลลัพธ์ L1 ฉันอยากรู้ว่าทำไมความแตกต่างของพฤติกรรมระหว่างสองข้อความค้นหา Trace ธง 8675 แสดงให้เห็นว่าคนที่ทำงานเข้ามาและเป็นคนที่ไม่เข้าsearch(0) - transaction processingsearch(1) - quick …

3
ประโยชน์ที่ได้รับจากระดับธุรกรรมการแยกรายการ SET อ่านโดยไม่ได้รับอนุญาต
ฉันใช้SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDคำสั่ง SQL ทั่วไปของฉันส่วนใหญ่เพราะนี่เป็นการฝึกฝนให้ฉันเมื่อเริ่มเรียนรู้ภาษา จากความเข้าใจของฉันระดับแยกนี้ทำหน้าที่เช่นเดียวว่าแต่ฉันเท่านั้นที่เคยมีแนวโน้มที่จะใช้งานWITH (NO LOCK)SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED มีเคยเป็นเวลาที่ผมควรจะใช้มากกว่าWITH (NO LOCK)SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ไม่ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDผู้ใช้อื่น ๆ หยุดจากการถูกล็อคออกจากตารางที่ฉันอ่าน? ถ้า SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDใช้เพื่อหยุดล็อค แต่ฉันแค่อ่านข้อมูลจุดประสงค์ในการใช้คืออะไร? มันเป็นเพียงระบบสืบค้นที่เข้มข้นที่จะสร้างล็อค? ควรใช้หรือไม่เมื่อเรียกใช้ข้อความค้นหาที่จะกลับมาพูดอีก 5-10 วินาที? ฉันได้รับแจ้งว่าห้ามใช้ SET TRANSACTION ISOLATION LEVEL …

2
อะไรคือจุดร้อนในบริบทของการเพิ่มไฟล์ไปยัง tempdb?
ฉันพยายามค้นหาว่าสามารถเพิ่มไฟล์ tempdb ลงใน SQL Server ได้หรือไม่โดยไม่ต้องเริ่มบริการ SQL Server อีกครั้ง ฉันเห็นคำตอบนี้ที่นี่ในผู้ดูแลฐานข้อมูล: Tempdb เพิ่มไฟล์ต้องมีการรีสตาร์ท และหนึ่งคำตอบระบุว่า: เพิ่ม - ไม่จำเป็นต้องหยุดทำงาน แม้ว่าฌอนจาก Microsoft ชี้ให้เห็นว่า SQL จะต้องการใช้ไฟล์ที่เติมด้านล่าง หากคุณไปจากไฟล์ข้อมูล 1 ไฟล์และเพิ่มมากขึ้นแล้ว SQL จะใช้ไฟล์ใหม่ชั่วครู่หนึ่ง แต่ประสิทธิภาพของคุณจะไม่แย่ไปกว่าการมีเพียงไฟล์เดียว อย่างไรก็ตามหากคุณมี 2+ แล้วและเพิ่มอีกหนึ่งมันจะฮอตสปอตในใหม่และลดประสิทธิภาพ อย่างไรก็ตามความคิดเห็นข้อควรระวังต่อไปนี้: ฉันจะใส่ภาคผนวกไว้ในส่วน "เพิ่ม": "เพิ่ม: ไม่ แต่คุณมักจะมีความไม่สมดุลดังนั้นคุณจะพบว่าร้อนแรงซึ่งอาจทำให้สิ่งต่าง ๆ แย่ลงมาก" ฉันมีคำถามต่อไปนี้เกี่ยวกับความคิดเห็นนั้น แต่ได้รับคำแนะนำให้ถามคำถามเหล่านั้นในคำถามใหม่ของฉันเอง (คำถามนี้) แทนที่จะถามผู้แสดงความคิดเห็นผ่านความคิดเห็นในคำตอบของคำถามนั้น โดยเฉพาะ: การจำที่ร้อนแรงคืออะไร (ฉันได้รับข้อมูลบางอย่างผ่านทาง Google แต่ไม่มีรายละเอียดว่าจะเกิดอะไรขึ้นกับฮอตสปอตบน tempdb หลังจากเพิ่มไฟล์) สิ่งที่เกี่ยวกับการจำร้อนทำให้สิ่งเลวร้ายยิ่งขึ้นใน …

4
คอลัมน์ Fast change NVARCHAR (4000) เป็น NVARCHAR (260)
ฉันมีปัญหาด้านประสิทธิภาพกับหน่วยความจำขนาดใหญ่มากที่จัดการตารางนี้ด้วยNVARCHAR(4000)คอลัมน์สองสามรายการ NVARCHAR(260)สิ่งที่เป็นคอลัมน์เหล่านี้ไม่เคยมีขนาดใหญ่กว่า การใช้ ALTER TABLE [table] ALTER COLUMN [col] NVARCHAR(260) NULL ผลใน SQL Server เขียนใหม่ทั้งตาราง (และใช้ขนาดตาราง 2x ในพื้นที่บันทึก) ซึ่งเป็นพันล้านแถวเท่านั้นที่จะเปลี่ยนแปลงอะไรไม่มีตัวเลือก การเพิ่มความกว้างของคอลัมน์ไม่มีปัญหานี้ แต่เป็นการลดลง ฉันได้ลองสร้างข้อ จำกัดCHECK (DATALENGTH([col]) <= 520)หรือCHECK (LEN([col]) <= 260)และ SQL Server ยังคงตัดสินใจที่จะเขียนตารางใหม่ทั้งหมด มีวิธีใดบ้างในการแก้ไขชนิดข้อมูลคอลัมน์เป็นการดำเนินการเฉพาะเมทาดาทา ไม่มีค่าใช้จ่ายในการเขียนใหม่ทั้งตาราง? ฉันใช้ SQL Server 2017 (14.0.2027.2 และ 14.0.3192.2) นี่คือตาราง DDL ตัวอย่างที่จะใช้ในการทำซ้ำ: CREATE TABLE [table]( id INT IDENTITY(1,1) …

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