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

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

2
ทำไมการเปลี่ยนลำดับคอลัมน์การประกาศที่ประกาศจึงแนะนำการเรียงลำดับ
ฉันมีสองตารางที่มีชื่อคอลัมน์พิมพ์และดัชนีคีย์เหมือนกัน หนึ่งในพวกเขามีที่ไม่ซ้ำกันดัชนีคลัสเตอร์ที่หนึ่ง ๆ มีที่ไม่ซ้ำกัน การตั้งค่าการทดสอบ สคริปต์การตั้งค่ารวมถึงสถิติที่เป็นจริง: DROP TABLE IF EXISTS #left; DROP TABLE IF EXISTS #right; CREATE TABLE #left ( a char(4) NOT NULL, b char(2) NOT NULL, c varchar(13) NOT NULL, d bit NOT NULL, e char(4) NOT NULL, f char(25) NULL, g char(25) NOT NULL, h char(25) NULL …

3
คุณจะให้สิทธิ์ดำเนินการสำหรับขั้นตอนการจัดเก็บเดียวได้อย่างไร
ปกติเมื่อฉันสร้างโพรซีเดอร์ที่เก็บไว้ฉันจะใช้สิ่งต่อไปนี้เป็นเทมเพลตการเรียงลำดับ Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end มีวิธีการรวมการให้สิทธิ์ดำเนินการในขั้นตอนที่เก็บไว้ในขณะที่ฉันอยู่หรือไม่ ตัวอย่างเช่น ... Grant execute [User_Execute] ... แต่สำหรับขั้นตอนการจัดเก็บนี้เท่านั้น ฉันเคยเห็นคำถามที่คล้ายกันอื่น ๆ แต่ดูเหมือนว่าพวกเขาทั้งหมดอ้างถึงขั้นตอนการจัดเก็บทั้งหมดไม่ใช่แค่คำถามเดียวและฉันไม่เคยเห็นคำถามที่คุณสามารถระบุสิทธิ์ภายในcreate procedureสคริปต์ได้ แม้แต่คำตอบเกี่ยวกับวิธีที่ฉันสามารถตั้งค่าการอนุญาตโดยไม่มี GUI สำหรับขั้นตอนการจัดเก็บเฉพาะจะยินดี แก้ไข คำตอบยอดนิยมชี้ให้ฉันอย่างแม่นยำในทิศทางที่ถูกต้องนี่คือสิ่งที่ฉันกำลังมองหาฉันไม่ได้คิดเกี่ยวกับการรวมชุดคำสั่งซึ่งเป็นสิ่งที่ฉันทำลงไปการผสมคำสั่งพร้อมกับกระบวนการจัดเก็บของฉัน อย่างไรก็ตามฉันคิดว่ามันค่อนข้างเรียบ Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end GO GRANT EXECUTE ON <procedurename> to <username> …
40 sql-server 

2
DBA ต้องรู้อะไรเกี่ยวกับ SSAS
ฉันได้เห็นวัสดุจำนวนมากครอบคลุมด้านธุรกิจของ SSAS แต่ไม่มากเกี่ยวกับประเด็นสำคัญของการบริหารและการจัดการ จากมุมมองของการดูแลอินสแตนซ์ของ SQL Server Analysis Services DBA ที่ทำงานต้องรู้อะไรเกี่ยวกับ SSAS เพื่อจัดการอย่างถูกต้องและมีประสิทธิภาพ
40 sql-server  ssas 

4
ฉันจะกำหนดการเข้าถึงความปลอดภัยของกลุ่ม Active Directory ทั้งหมดใน SQL Server 2008 ได้อย่างไร
ฉันต้องการใช้การรักษาความปลอดภัยแบบรวมกับแอปพลิเคชันภายในซึ่งอยู่ในโดเมนทั้งหมด น่าเสียดายที่ฉันไม่สามารถทำให้สิ่งนี้ทำงานได้ดี ฉันต้องการกำหนดให้ทั้ง Exchange (Active Directory) จัดกลุ่มบทบาทใน SQL Server สำหรับการเข้าถึงแบบอ่าน / เขียนในตารางบางตัว ด้วยวิธีนี้ฉันจะไม่ต้องสร้างโอเปอเรเตอร์เมื่อมีคนจ้างหรือลบโอเปอเรเตอร์เมื่อมีคนถูกไล่ออก เป็นไปได้ไหม ฉันจะทำขั้นตอนใดในการทำเช่นนี้?

1
ความแตกต่างระหว่าง Hash, Merge และ Loop เข้าร่วมหรือไม่
ใน SQL Server คุณสามารถระบุคำแนะนำการเข้าร่วม: เข้าร่วมแฮช รวมเข้าด้วยกัน เข้าร่วมLOOP คำจำกัดความของการเข้าร่วมทั้งสามคำจำกัดความคืออะไรและแต่ละคนควรใช้เมื่อใด
40 sql-server 


1
ทำไมไฟล์. bacpac จึงเล็กเมื่อเทียบกับไฟล์. bak ของฐานข้อมูลเดียวกัน
ฉันได้รับการทำสำรองข้อมูลของฐานข้อมูลของฉัน SQL Server 2014 Express สำหรับการนำเข้าไปยังเซิร์ฟเวอร์อื่น ๆ และสังเกตเห็นความแตกต่างในขนาดไฟล์ระหว่างและ.bacpac.bak ทำไม.bacpacไฟล์ถึงเล็กมากเมื่อเปรียบเทียบกับ.bakไฟล์ของฐานข้อมูลเดียวกัน ขอบคุณสำหรับข้อมูลเชิงลึกใด ๆ !

6
ทำไมการเพิ่ม TOP 1 ถึงทำให้ประสิทธิภาพแย่ลงอย่างเห็นได้ชัด?
ฉันมีคำถามที่ค่อนข้างง่าย SELECT TOP 1 dc.DOCUMENT_ID, dc.COPIES, dc.REQUESTOR, dc.D_ID, cj.FILE_NUMBER FROM DOCUMENT_QUEUE dc JOIN CORRESPONDENCE_JOURNAL cj ON dc.DOCUMENT_ID = cj.DOCUMENT_ID WHERE dc.QUEUE_DATE <= GETDATE() AND dc.PRINT_LOCATION = 2 ORDER BY cj.FILE_NUMBER นั่นทำให้ฉันมีประสิทธิภาพที่น่ากลัว (อย่างที่ไม่เคยใส่ใจที่จะรอให้มันจบ) แผนแบบสอบถามมีลักษณะดังนี้: อย่างไรก็ตามถ้าฉันลบTOP 1แผนการที่มีลักษณะเช่นนี้ออกและทำงานใน 1-2 วินาที: แก้ไข PK & การทำดัชนีด้านล่าง ความจริงที่ว่าTOP 1แผนการสืบค้นที่เปลี่ยนแปลงนั้นไม่ได้ทำให้ฉันแปลกใจ แต่ฉันก็แปลกใจนิดหน่อยที่มันทำให้แย่ลงไปอีกมาก หมายเหตุ: ฉันได้อ่านผลลัพธ์จากโพสต์นี้และเข้าใจแนวคิดของRow Goalสิ่งอื่น ๆ แล้วสิ่งที่ฉันอยากรู้คือฉันจะเปลี่ยนการสืบค้นอย่างไรเพื่อที่จะใช้แผนการที่ดีกว่า ขณะนี้ฉันกำลังทิ้งข้อมูลลงในตารางชั่วคราวแล้วดึงแถวแรกออกมา …

3
ปริมาณการใช้“ หน่วยความจำเซิร์ฟเวอร์โดยรวม” ของ SQL Server หยุดนิ่งเป็นเดือนโดยมี 64GB + มากกว่านั้น
ฉันพบปัญหาแปลกที่ SQL Server 2016 Standard Edition 64- บิตดูเหมือนว่าได้ปิดตัวเองที่ครึ่งหนึ่งของหน่วยความจำทั้งหมดที่จัดสรรให้อย่างแม่นยำ (64GB 128GB) ผลลัพธ์ของ@@VERSIONคือ: Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64) 22 ธันวาคม 2017 11:25:00 ลิขสิทธิ์ (c) Microsoft Corporation Standard Edition (64 บิต) บน Windows Server 2012 R2 Datacenter 6.3 ( รุ่น 9600:) (Hypervisor) ผลลัพธ์ของsys.dm_os_process_memoryคือ: เมื่อฉันแบบสอบถามsys.dm_os_performance_countersผมเห็นว่าTarget Server Memory (KB)ที่131072000และเป็นเพียงภายใต้ครึ่งหนึ่งของที่ที่Total Server Memory …

2
วิธีเพิ่มประสิทธิภาพคิวรีที่ทำงานช้าลงบนลูปซ้อน (Inner Join)
TL; DR เนื่องจากคำถามนี้ยังคงได้รับการดูฉันจะสรุปได้ที่นี่เพื่อให้ผู้มาใหม่ไม่ต้องทนทุกข์กับประวัติศาสตร์: JOIN table t ON t.member = @value1 OR t.member = @value2 -- this is slow as hell JOIN table t ON t.member = COALESCE(@value1, @value2) -- this is blazing fast -- Note that here if @value1 has a value, @value2 is NULL, and vice versa ฉันรู้ว่านี่อาจไม่ใช่ปัญหาของทุกคน แต่การเน้นความไวของอนุประโยค …

5
ฉันสามารถเพิ่มข้อ จำกัด ที่ไม่ซ้ำใครเพื่อละเว้นการละเมิดที่มีอยู่ได้หรือไม่?
ฉันมีตารางซึ่งขณะนี้มีค่าซ้ำกันในคอลัมน์ ฉันไม่สามารถลบรายการซ้ำที่ผิดพลาดเหล่านี้ได้ แต่ฉันต้องการป้องกันไม่ให้เพิ่มค่าที่ไม่ซ้ำกันเพิ่มเติม ฉันสามารถสร้างสิ่งUNIQUEที่ไม่ตรวจสอบความสอดคล้องที่มีอยู่ได้หรือไม่ ฉันลองใช้NOCHECKแล้วแต่ไม่สำเร็จ ในกรณีนี้ฉันมีตารางที่ผูกข้อมูลสิทธิ์การใช้งานกับ "CompanyName" แก้ไข:การมีหลายแถวที่มี "CompanyName" เดียวกันนั้นเป็นข้อมูลที่ไม่ดี แต่เราไม่สามารถลบหรืออัปเดตข้อมูลซ้ำเหล่านั้นได้ในขณะนี้ วิธีหนึ่งคือการINSERTใช้ s ที่เก็บไว้ซึ่งจะล้มเหลวในการทำซ้ำ ... ถ้าเป็นไปได้ที่ SQL จะตรวจสอบความเป็นเอกลักษณ์ของตัวเองมันจะดีกว่า ข้อมูลนี้ถูกสอบถามโดยชื่อ บริษัท สำหรับรายการซ้ำที่มีอยู่สองสามรายการนี้จะหมายความว่ามีการส่งคืนและแสดงแถวจำนวนมาก ... แม้ว่าจะเป็นความผิด แต่ก็เป็นที่ยอมรับในกรณีการใช้งานของเรา เป้าหมายคือการป้องกันในอนาคต ดูเหมือนว่าฉันจากความคิดเห็นที่ฉันต้องทำตรรกะนี้ในขั้นตอนการจัดเก็บ

2
การเปลี่ยนความกว้างของคอลัมน์
การเพิ่มความกว้างคอลัมน์ (nvarchar) จำเป็นต้องวางตารางหรือไม่ กล่าวอีกนัยหนึ่งความกว้างสามารถเปลี่ยนแปลงได้ในสภาพแวดล้อมการผลิตกับผู้ใช้ที่ใช้งานอยู่หรือไม่ ฉันคิดว่าถ้าขนาดเพิ่มขึ้น (เมื่อเทียบกับการลดลง) นี่จะไม่เป็นปัญหา
39 sql-server 

3
พื้นฐานการดำเนินการตามแผน - ความสับสนของการจับคู่แฮช
ฉันเริ่มเรียนรู้แผนการดำเนินการและสับสนเกี่ยวกับวิธีการทำงานของแฮชที่ตรงกันและทำไมจึงต้องใช้ในการเข้าร่วมง่ายๆ select Posts.Title, Users.DisplayName From Posts JOIN Users on Posts.OwnerUserId = Users.Id OPTION (MAXDOP 1) ตามที่ฉันเข้าใจแล้วผลลัพธ์ของการสแกนดัชนีสูงสุดจะกลายเป็นแฮชและแต่ละแถวในดัชนีสแกนคลัสเตอร์ด้านล่างจะค้นหา ฉันเข้าใจว่าตารางแฮชทำงานอย่างน้อยในระดับหนึ่ง แต่ฉันสับสนเกี่ยวกับค่าที่ได้รับการแฮชในตัวอย่างเช่นนี้ สิ่งที่จะทำให้ฉันรู้สึกว่าเป็นเขตข้อมูลทั่วไประหว่างพวกเขารหัสถูกแฮช - แต่ถ้าเป็นกรณีนี้ทำไมจำนวนแฮช?

6
เหตุใดปุ่มลำดับ GUID จึงทำงานได้เร็วกว่าปุ่ม INT ตามลำดับในกรณีทดสอบของฉัน
หลังจากที่ถามนี้คำถามเปรียบเทียบลำดับและ guid ของที่ไม่ใช่ลำดับผมพยายามที่จะเปรียบเทียบประสิทธิภาพ INSERT เมื่อวันที่ 1) ตารางที่มีคีย์หลัก GUID เริ่มต้นตามลำดับด้วยnewsequentialid()และ 2) ตารางที่มีคีย์หลัก INT identity(1,1)เริ่มต้นตามลำดับด้วย ฉันคาดว่าหลังจะเร็วที่สุดเนื่องจากมีความกว้างน้อยกว่าจำนวนเต็มและมันก็ดูเหมือนจะง่ายกว่าในการสร้างจำนวนเต็มตามลำดับกว่า GUID ตามลำดับ แต่ด้วยความประหลาดใจของฉัน INSERTs บนตารางที่มีคีย์จำนวนเต็มช้ากว่าตาราง GUID ตามลำดับอย่างมีนัยสำคัญ นี่แสดงการใช้เวลาเฉลี่ย (มิลลิวินาที) สำหรับการทดสอบการทำงาน: NEWSEQUENTIALID() 1977 IDENTITY() 2223 มีใครอธิบายเรื่องนี้ได้บ้าง มีการใช้การทดลองต่อไปนี้: SET NOCOUNT ON CREATE TABLE TestGuid2 (Id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID() PRIMARY KEY, SomeDate DATETIME, batchNumber BIGINT, FILLER CHAR(100)) …

3
ประสิทธิภาพการทำงานของดัชนีที่ไม่ทำคลัสเตอร์กับ Heaps เทียบกับดัชนีแบบคลัสเตอร์
เอกสารไวท์ 2007 นี้เปรียบเทียบประสิทธิภาพสำหรับคำสั่งเลือก / แทรก / ลบ / อัปเดตและการเลือกช่วงแต่ละรายการบนตารางที่จัดเป็นดัชนีแบบคลัสเตอร์เทียบกับบนตารางที่จัดเป็นฮีปที่มีดัชนีที่ไม่ใช่คลัสเตอร์ในคอลัมน์คีย์เดียวกันกับ CI โต๊ะ. โดยทั่วไปตัวเลือกดัชนีแบบคลัสเตอร์จะทำงานได้ดีขึ้นในการทดสอบเนื่องจากมีเพียงโครงสร้างเดียวที่ต้องบำรุงรักษาและเนื่องจากไม่จำเป็นต้องทำการค้นหาบุ๊กมาร์ก กรณีที่น่าสนใจอย่างหนึ่งที่อาจไม่ครอบคลุมในเอกสารจะเป็นการเปรียบเทียบระหว่างดัชนีที่ไม่ทำคลัสเตอร์กับฮีปเทียบกับดัชนีที่ไม่ทำคลัสเตอร์กับดัชนีที่ทำคลัสเตอร์ ในอินสแตนซ์นั้นฉันคาดว่า heap อาจทำงานได้ดีขึ้นเช่นเดียวกับ NCI leaf leaf ระดับ SQL Server ที่มี RID เพื่อติดตามโดยตรงแทนที่จะต้องการสำรวจดัชนีคลัสเตอร์ มีใครทราบบ้างเกี่ยวกับการทดสอบอย่างเป็นทางการที่คล้ายกันซึ่งดำเนินการในพื้นที่นี้และถ้าเป็นเช่นนั้นผลลัพธ์คืออะไร

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