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

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

2
ความแตกต่างระหว่างโต๊ะ temp และตัวแปร table ใน SQL Server คืออะไร?
ดูเหมือนว่าจะเป็นพื้นที่ที่มีตำนานและมุมมองที่ขัดแย้งกันอยู่บ้าง ดังนั้นความแตกต่างระหว่างตัวแปรตารางและตารางชั่วคราวใน SQL Server คืออะไร?

4
เหตุใดทรานแซคชันของธุรกรรมจึงเพิ่มขึ้นหรือหมดพื้นที่
คำถามนี้ดูเหมือนจะเป็นคำถามที่พบบ่อยในฟอรัมส่วนใหญ่และทั่วทั้งเว็บมันถูกถามที่นี่ในหลาย ๆ รูปแบบซึ่งโดยทั่วไปแล้วจะมีลักษณะดังนี้: ใน SQL Server - อะไรคือเหตุผลที่บันทึกการทำธุรกรรมมีขนาดใหญ่มาก? เหตุใดไฟล์บันทึกของฉันจึงใหญ่ มีวิธีใดบ้างในการป้องกันไม่ให้ปัญหานี้เกิดขึ้น ฉันจะทำอย่างไรเมื่อฉันติดตามตัวเองด้วยสาเหตุที่สำคัญและต้องการวางไฟล์บันทึกธุรกรรมของฉันให้มีขนาดสมบูรณ์

18
คุณจัดทำเอกสารฐานข้อมูลของคุณอย่างไร?
ฉันพบว่าลูกค้าส่วนใหญ่ของฉันไม่ได้จัดทำเอกสารฐานข้อมูลของพวกเขาเลยและฉันพบว่ามันค่อนข้างน่ากลัว เพื่อแนะนำวิธีปฏิบัติที่ดีกว่านี้ฉันต้องการทราบว่าเครื่องมือ / กระบวนการที่ผู้คนใช้ คุณจัดทำเอกสารฐานข้อมูลของคุณอย่างไร (SQL Server) คุณใช้เครื่องมืออะไร Documentation Storage Format สำหรับ schema ฐานข้อมูล / meta-data หรือไม่ เอกสาร Word สเปรดชีต Excel ข้อความธรรมดา กระบวนการเอกสารหรือนโยบาย? ฉันไม่ได้พูดถึงวิศวกรรมย้อนกลับ / เอกสารฐานข้อมูลที่มีอยู่ แต่ส่วนใหญ่เกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดของเอกสารในขณะที่คุณพัฒนาระบบ / ฐานข้อมูลของคุณ

6
เมื่อใดที่ฉันควรใช้ข้อ จำกัด ที่ไม่ซ้ำกันแทนที่จะเป็นดัชนีที่ไม่ซ้ำกัน
เมื่อฉันต้องการให้คอลัมน์มีค่าที่แตกต่างฉันสามารถใช้ข้อ จำกัด ได้ create table t1( id int primary key, code varchar(10) unique NULL ); go หรือฉันสามารถใช้ดัชนีเฉพาะ create table t2( id int primary key, code varchar(10) NULL ); go create unique index I_t2 on t2(code); คอลัมน์ที่มีข้อ จำกัด เฉพาะดูเหมือนจะเป็นตัวเลือกที่ดีสำหรับดัชนีเฉพาะ มีเหตุผลใดบ้างที่ทราบว่าใช้ข้อ จำกัด ที่เป็นเอกลักษณ์และไม่ใช้ดัชนีที่ไม่ซ้ำกันแทน

7
CTE และ Temp Table แตกต่างกันอย่างไร
Common Table Expression (CTE) และ temp แตกต่างกันอย่างไร และฉันควรใช้อันใดอันหนึ่ง CTE WITH cte (Column1, Column2, Column3) AS ( SELECT Column1, Column2, Column3 FROM SomeTable ) SELECT * FROM cte ตารางอุณหภูมิ SELECT Column1, Column2, Column3 INTO #tmpTable FROM SomeTable SELECT * FROM #tmpTable
174 sql-server  cte 

5
เมื่อใดควรประกาศคีย์หลักที่ไม่ใช่แบบคลัสเตอร์
ในขณะที่สร้างฐานข้อมูลทดสอบสำหรับคำถามอื่นที่ฉันถามไปก่อนหน้านี้ฉันจำเกี่ยวกับคีย์หลักที่สามารถประกาศได้ NONCLUSTERED คุณจะใช้NONCLUSTEREDคีย์หลักตรงข้ามกับCLUSTEREDคีย์หลักเมื่อใด ขอบคุณล่วงหน้า

19
นักพัฒนาควรจะสามารถสืบค้นฐานข้อมูลการผลิตได้หรือไม่
นักพัฒนาควรได้รับอนุญาตให้สืบค้นSELECTฐานข้อมูลการผลิต( / อ่านอย่างเดียว) หรือไม่? สถานที่ก่อนหน้านี้ที่ฉันทำงานทีมพัฒนามีdb_datareaderบทบาท; ที่ฉันทำงานอยู่ตอนนี้ทีมพัฒนาไม่สามารถเชื่อมต่อกับอินสแตนซ์การผลิตได้ หนึ่งในอินสแตนซ์ทดสอบคือสำเนาของการผลิตที่คืนค่าจากการสำรองการผลิตสัปดาห์ละครั้งดังนั้นจึงไม่มีปัญหาใด ๆ กับนักพัฒนาที่เห็นข้อมูลจริง มีเหตุผลที่ดีอะไรบ้างที่ไม่อนุญาตให้นักพัฒนาทำการสืบค้นการผลิต (ยกเว้นเพียงแค่ไม่ต้องการให้พวกเขาเข้าถึงการอ่านข้อมูลที่ละเอียดอ่อน)?

4
ช่วยในการติดตั้ง SQL Server 2017 - การติดตั้ง VS Shell ล้มเหลวด้วยรหัสออก 1638
คำแนะนำใด ๆ เกี่ยวกับวิธีจัดการกับข้อผิดพลาดนี้: TITLE: Microsoft SQL Server 2017 Setup ------------------------------ The following error has occurred: VS Shell installation has failed with exit code 1638. For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=14.0.1000.169&EvtType=0x5B39C8B9%25401434%25403 ------------------------------ BUTTONS: OK ------------------------------ นี่คือแล็ปท็อปเครื่องใหม่ที่ใช้งาน SQL Server 2016 express Visual Studio 2017 SSMS 2017 ฉันพยายามถอนการติดตั้งสิ่งใด ๆ ที่เกี่ยวข้องกับ SQL Server หรือ Visual Studio …

4
เหตุใดตารางตัวเลขจึงประเมินค่าไม่ได้?
ผู้เชี่ยวชาญฐานข้อมูลถิ่นที่อยู่ของเรากำลังบอกเราว่าตารางตัวเลขมีค่ามาก ฉันไม่เข้าใจว่าทำไม นี่คือตารางตัวเลข: USE Model GO CREATE TABLE Numbers ( Number INT NOT NULL, CONSTRAINT PK_Numbers PRIMARY KEY CLUSTERED (Number) WITH FILLFACTOR = 100 ) INSERT INTO Numbers SELECT (a.Number * 256) + b.Number AS Number FROM ( SELECT number FROM master..spt_values WHERE type = 'P' AND number <= 255 …
112 sql-server 

6
วิธีตรวจสอบว่าจำเป็นต้องใช้ดัชนีหรือไม่
ฉันใช้เครื่องมือดัชนีอัตโนมัติบนฐานข้อมูล MS SQL ของเรา (ฉันแก้ไขสคริปต์ที่มาจาก Microsoft ซึ่งดูที่ตารางสถิติดัชนี - ดัชนีอัตโนมัติแบบดัชนี ) จากสถิติตอนนี้ฉันมีรายการคำแนะนำสำหรับดัชนีที่ต้องการสร้าง แก้ไข: ดัชนีที่อธิบายข้างต้นนำข้อมูลจาก DMV ที่บอกให้คุณทราบว่าโปรแกรมฐานข้อมูลจะใช้อะไรสำหรับดัชนีหากมีอยู่และสคริปต์ใช้คำแนะนำ Top x (ตามการค้นหาผู้ใช้ส่งผลกระทบ ฯลฯ ) และวางลงในตาราง (แก้ไขด้านบนบางส่วนมาจากคำตอบของ Larry Coleman ด้านล่างเพื่อชี้แจงสิ่งที่สคริปต์กำลังทำอยู่) เนื่องจากฉันยังใหม่กับผู้ดูแลฐานข้อมูลและมีการค้นหาอย่างรวดเร็วทั่วเน็ตฉันลังเลที่จะกระโดดและเพิ่มดัชนีที่แนะนำอย่างสุ่มสี่สุ่มห้า อย่างไรก็ตามไม่มีประสบการณ์ในสาขานี้ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีตรวจสอบว่าคำแนะนำนั้นจำเป็นหรือไม่ ฉันจำเป็นต้องเรียกใช้ SQL Profiler หรือไม่ควรตรวจสอบรหัสที่สืบค้นตารางหรือไม่ และคุณมีคำแนะนำอื่น ๆ อีกไหม?

6
SQL Server Management Studio 18 จะไม่เปิด (หน้าจอเริ่มต้นจะปรากฏขึ้น)
ฉันเพิ่งติดตั้ง SSMS 18 GA บนคอมพิวเตอร์ที่ติดตั้ง VS2019 เท่านั้นและเมื่อฉันพยายามเปิด SSMS หน้าจอเริ่มต้นจะปรากฏขึ้น แต่จากนั้นกระบวนการก็จะออก การรัน ssms ด้วย-logพารามิเตอร์จะแสดงข้อความแสดงข้อผิดพลาด: CreateInstance ล้มเหลวในแพ็คเกจ [Task Scheduler Package] ที่มา: 'mscorlib' คำอธิบาย: ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.VisualStudio.Shell.Interop.8.0, เวอร์ชัน = 15.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b03f5f7f11d50a3a' หรือหนึ่งในนั้น การพึ่งพาของมัน คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก HRESULT: 0x80131040) System.IO.FileLoadException: ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Microsoft.VisualStudio.Shell.Interop.8.0 เวอร์ชัน = 15.0.0.0 วัฒนธรรม = เป็นกลาง PublicKeyToken = b03f5f7f11d50a3a' …
105 sql-server  ssms  ssms-18 

8
ฉันจะย้ายไฟล์ฐานข้อมูล SQL Server ได้อย่างไร
ฉันมีฐานข้อมูลและต้องการย้าย.mdfและ.ldfไฟล์ไปยังตำแหน่งอื่น แต่ฉันไม่ต้องการหยุดMSSQLSERVERบริการและฉันไม่ต้องการส่งออกไปยังเซิร์ฟเวอร์อื่น ฉันจะทำสิ่งนี้ได้อย่างไร

6
เหตุใดจึงใช้ทั้ง TRUNCATE และ DROP
ในระบบฉันทำงานมีจำนวนมากของขั้นตอนการจัดเก็บและสคริปต์ SQL ที่ใช้ประโยชน์จากตารางชั่วคราว หลังจากใช้ตารางเหล่านี้แล้วก็เป็นการดีที่จะวาง เพื่อนร่วมงานของฉันหลายคน (เกือบทุกคนมีประสบการณ์มากกว่าฉัน) โดยทั่วไปแล้วทำสิ่งนี้: TRUNCATE TABLE #mytemp DROP TABLE #mytemp ฉันมักจะใช้ซิงเกิ้ลDROP TABLEในสคริปท์ของฉัน มีเหตุผลที่ดีในการทำTRUNCATEทันทีก่อนDROP?

8
SQL Server อ่านฟังก์ชัน COALESCE ทั้งหมดแม้ว่าอาร์กิวเมนต์แรกไม่ใช่ NULL หรือไม่
ฉันใช้COALESCEฟังก์ชันT-SQL โดยที่อาร์กิวเมนต์แรกจะไม่เป็นโมฆะในเวลาประมาณ 95% ของเวลาที่รัน หากอาร์กิวเมนต์แรกคืออาร์กิวเมนต์NULLที่สองนั้นเป็นกระบวนการที่ค่อนข้างยาว: SELECT COALESCE(c.FirstName ,(SELECT TOP 1 b.FirstName FROM TableA a JOIN TableB b ON .....) ) ตัวอย่างเช่นc.FirstName = 'John'ถ้า SQL Server จะยังเรียกใช้แบบสอบถามย่อยหรือไม่ ฉันรู้ว่าด้วยIIF()ฟังก์ชั่นVB.NET ถ้าอาร์กิวเมนต์ที่สองคือ True รหัสยังคงอ่านอาร์กิวเมนต์ที่สาม (แม้ว่ามันจะไม่ถูกใช้)

7
Guid vs INT - คีย์ไหนดีกว่ากัน?
ผมเคยถูกอ่านไปรอบ ๆ เหตุผลที่จะใช้หรือไม่และGuidint intมีขนาดเล็กลงเร็วขึ้นและง่ายต่อการจดจำตามลำดับเวลา และสำหรับGuidข้อได้เปรียบเดียวที่ฉันพบคือมันไม่เหมือนใคร ในกรณีGuidใดจะดีกว่าintและทำไม? จากสิ่งที่ฉันเห็นintไม่มีข้อบกพร่องยกเว้นโดยการ จำกัด จำนวนซึ่งในหลายกรณีไม่เกี่ยวข้อง ทำไมถึงถูกGuidสร้างขึ้นมา? ฉันคิดว่ามันมีจุดประสงค์อื่นนอกเหนือจากการให้บริการเป็นกุญแจหลักของตารางง่ายๆ (ตัวอย่างของแอปพลิเคชันจริงที่ใช้Guidกับบางสิ่ง) (Guid = UniqueIdentifier) ​​พิมพ์บน SQL Server

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