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

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

4
การจัดรูปแบบ T-SQL ใน SSMS 2012
ตามเอกสาร Microsoft นี้: http://msdn.microsoft.com/en-us/library/ms174205.aspx ฉันควรจะสามารถใช้ ctrl + K แล้ว ctrl + D เพื่อจัดรูปแบบเอกสาร SQL ของฉันใน SQL Server Management Studio 2012 แต่เมื่อฉันใช้คอมโบนั้นฉันได้รับข้อผิดพลาด: การรวมคีย์ (Ctrl + K, Ctrl + D) ถูกผูกไว้กับคำสั่ง (Format Document) ซึ่งไม่สามารถใช้งานได้ในปัจจุบัน ฉันกำลังพยายามแก้ไขเอกสาร SQL ที่มีอยู่ซึ่งไม่มีการจัดรูปแบบเลยซึ่งทำให้อ่านยากมาก ไม่มีใครรู้วิธีการทำให้คำสั่งจัดรูปแบบเอกสารพร้อมใช้งานเพื่อให้ฉันสามารถจัดรูปแบบ SQL รหัสนี้สำหรับฉันได้หรือไม่
39 sql-server  ssms 

1
จุดที่ WHERE 1 = 2 คืออะไรสำหรับ SELECT INTO table query
ถ้าเราต้องการสร้างตารางใหม่จากตารางที่มีอยู่ใน SQL Server เราสามารถทำสิ่งต่อไปนี้ SELECT * into Table2 from Table1 WHERE 1=2 จุดที่ข้อคืออะไร? ฉันลองมันโดยไม่ใช้ประโยคไหนและมันก็ใช้ได้ดี ฉันเคยเห็นสิ่งนี้ซึ่งมีหลายตัวอย่างในอินเทอร์เน็ต แต่ไม่ใช่เหตุผลว่าทำไมมันถึงต้องการ
39 sql-server 

3
วิธีการในการค้นหาค่าสถานะการติดตามใหม่ใน SQL Server
มีร่องรอยการติดตามจำนวนมากอยู่ที่นั่น บางอย่างได้รับการบันทึกไว้เป็นอย่างดีบางอย่างไม่ได้และบางรายการก็พบว่ามีสถานะพฤติกรรมเริ่มต้นในการเปิดตัว 2016 นอกเหนือจากช่องทางการสนับสนุนอย่างเป็นทางการพนักงานของ Microsoft และอื่น ๆ แล้ววิธีการค้นหาการติดตามสถานะใหม่คืออะไร ฉันได้อ่านบทความล่าสุดโดย Aaron Bertrand ที่นี่และที่นี่แต่ไม่เห็นอะไรเลยเกี่ยวกับ Trace Flags ใหม่ ฉันคัดลอกข้อมูลและไฟล์บันทึกของ mssqlsystemresource ไปยังตำแหน่งใหม่และแนบมันเหมือนฐานข้อมูลปกติเพื่อเปิดดูตารางระบบและมุมมอง แต่ไม่พบสิ่งใดในทันที ฉันพิจารณาการจดรายการการสืบค้นกลับสถานะที่รู้จักและวนรอบตัวเลขที่ไม่อยู่ในรายการเพื่อดูว่าใครอนุญาตให้ใช้ DBCC TRACEON แต่ต้องการถามคำถามที่นี่ก่อน สมมติว่าคำสั่ง DBCC เพื่อเปิดใช้งานนั้นต้องทำการตรวจสอบกับทรัพยากรบางอย่างเพื่อให้แน่ใจว่าการตั้งค่าสถานะการสืบค้นกลับนั้นถูกต้อง มี. dll หรือไฟล์ระบบอื่น ๆ ที่เก็บรายการหรือไม่? ฉันรู้ว่าคำถามนั้นสร้างความหลากหลาย แต่สิ่งที่กระตุ้นให้เกิดการอ่านเกี่ยวกับธงชาติพร้อมกับพฤติกรรมที่ตั้งใจไว้พร้อมกับคุณสมบัติใหม่ในปี 2559 ที่ไม่มีผลกระทบที่อธิบายไว้ ความคิดเริ่มต้นของฉันคือบางทีตัวเลขอาจถูกย้ายไปอย่างใดอย่างหนึ่งเช่น 7129 กลายเป็น 7219 ฉันหวังว่าจะได้รับรายชื่อของธงติดตามที่ถูกต้องภายในช่วงพูดว่า 7000-7999 เพื่อหาวิธีเรียงสับเปลี่ยน ทดสอบพวกเขาทั้งหมดทั้งในฐานะที่เป็น DBCC TRACEON และพารามิเตอร์เริ่มต้นจะค่อนข้างรำคาญรวมกับการทดสอบผลกับพฤติกรรมการทำงาน

3
เมื่อใดควรสร้างสถิติแทนการสร้างดัชนี
ฉันได้พบข้อมูลมากมายเกี่ยวกับสิ่งที่ STATISTICS : วิธีการดูแลรักษาวิธีการสร้างด้วยตนเองหรือโดยอัตโนมัติจากแบบสอบถามหรือดัชนีและอื่น ๆ แต่ผมได้รับไม่สามารถที่จะหาใด ๆคำแนะนำหรือ "วิธีปฏิบัติที่ดีที่สุด" ข้อมูลเกี่ยวกับเมื่อเพื่อสร้าง: สถานการณ์ใดที่ได้ประโยชน์จากวัตถุสถิติที่สร้างขึ้นด้วยตนเองมากกว่าจากดัชนี ฉันได้เห็นสถิติที่สร้างขึ้นด้วยตนเองที่กรองแล้วช่วยสอบถามในตารางที่แบ่งพาร์ติชัน (เนื่องจากสถิติที่สร้างขึ้นสำหรับดัชนีครอบคลุมทั้งตารางและไม่ใช่ต่อพาร์ติชัน - ความสุกใส!) แต่แน่นอนว่าต้องมีสถานการณ์อื่น ๆ ที่จะได้รับประโยชน์จากวัตถุสถิติ ไม่ต้องการรายละเอียดของดัชนีหรือไม่คุ้มค่ากับการบำรุงรักษาดัชนีหรือเพิ่มโอกาสในการบล็อค / ล็อคตาย @JonathanFite ในความคิดเห็นพูดถึงความแตกต่างระหว่างดัชนีและสถิติ: ดัชนีจะช่วยให้ SQL ค้นหาข้อมูลได้เร็วขึ้นด้วยการสร้างการค้นหาที่เรียงลำดับแตกต่างจากตาราง สถิติช่วยให้ SQL พิจารณาว่าจำเป็นต้องใช้หน่วยความจำ / ความพยายามเท่าใดในการตอบแบบสอบถาม นั่นคือข้อมูลที่ดีส่วนใหญ่เป็นเพราะมันช่วยให้ฉันชี้แจงคำถามของฉัน: วิธีการที่ไม่ทราบนี้ (หรือข้อมูลทางเทคนิคอื่น ๆ ใด ๆ เกี่ยวกับสิ่งที่และวิธีการ s ที่เกี่ยวข้องกับพฤติกรรมและธรรมชาติของSTATISTICS) ช่วยตรวจสอบเมื่อให้เลือกCREATE STATISTICSมากกว่าCREATE INDEXโดยเฉพาะอย่างยิ่งเมื่อมีการสร้างดัชนีจะสร้างที่เกี่ยวข้องกับSTATISTICSวัตถุ? สถานการณ์ใดที่จะให้บริการที่ดีขึ้นโดยมีเพียงข้อมูลสถิติและไม่มีดัชนี มันจะเป็นซุปเปอร์ duper ประโยชน์ถ้าเป็นไปได้ที่จะมีตัวอย่างการทำงานของสถานการณ์ที่วัตถุที่เป็นแบบที่ดีกว่าSTATISTICSINDEX เนื่องจากฉันเป็นผู้เรียนด้วยสายตา / นักคิดฉันคิดว่ามันอาจช่วยให้เห็นความแตกต่างระหว่างSTATISTICSและINDEXes เคียงข้างกันเป็นวิธีที่เป็นไปได้ในการช่วยกำหนดว่าเมื่อใดSTATISTICSจะเป็นทางเลือกที่ดีกว่า …

6
Management Studio System.OutOfMemoryException
ฉันใช้ Microsoft SQL Server 2012 และพยายามเรียกใช้แบบสอบถามอย่างง่าย ๆ ภายใน Management Studio ฉันได้รับข้อผิดพลาดต่อไปนี้ (ใน SSMS ทำงานบนเซิร์ฟเวอร์): เกิดข้อผิดพลาดขณะดำเนินการแบทช์ ข้อความแสดงข้อผิดพลาดคือ: ข้อยกเว้นชนิด 'System.OutOfMemoryException' ถูกส่งออกไป ระบบมีการติดตั้ง RAM 24GB แต่การค้นหาตัวจัดการงานกระบวนการ sqlservr.exe ใช้ 2.9GB เท่านั้น มีการตั้งค่าบางอย่างที่ จำกัด การใช้ RAM หรือไม่

1
แบบจำลองการกู้คืนง่ายหรือเต็มสำหรับฐานข้อมูล
ฉันควรใช้แบบจำลองการกู้คืนแบบเต็มเมื่อใดและเมื่อใดควรใช้แบบจำลองการกู้คืนอย่างง่ายสำหรับฐานข้อมูล ฉันใช้รูปแบบการกู้คืนแบบเต็มเสมอเพราะเป็นค่าเริ่มต้น แต่วันนี้ฉันพบข้อผิดพลาดนี้: ผู้ให้บริการ Microsoft OLE DB สำหรับ SQL Server (0x80040E14) บันทึกธุรกรรมสำหรับฐานข้อมูล 'DATABASE NAME' เต็ม หากต้องการค้นหาสาเหตุที่พื้นที่ในบันทึกไม่สามารถนำกลับมาใช้ใหม่ได้ให้ดูคอลัมน์ log_reuse_wait_desc ใน sys.database จริง ๆ แล้วฐานข้อมูลเฉพาะนั้นเป็นหนึ่งในฐานข้อมูลที่เล็กที่สุดและไม่ได้ใช้งานมากที่สุดบนเซิร์ฟเวอร์ของฉันดังนั้นฉันจึงไม่รู้เลยว่าจะสามารถบันทึกข้อมูลได้เต็มรูปแบบในฐานข้อมูลนี้ได้อย่างไร เมื่อต้องการลดขนาดบันทึกและทำให้ฐานข้อมูลสามารถเข้าถึงได้อีกครั้งฉันเปลี่ยนรูปแบบการกู้คืนจาก FULL เป็น SIMPLE และลดขนาดแฟ้มบันทึกเชิงตรรกะด้วยคำสั่งต่อไปนี้ alter database myDbName SET recovery simple go dbcc shrinkfile('LOG FILE LOGICAL NAME', 100) go มันช่วย แต่ตอนนี้ฉันต้องเข้าใจทำไมมันช่วยHOWสถานการณ์นี้เริ่มต้นและวิธีการป้องกันนี้ในอนาคตหรือไม่ แก้ไข: ทุกคืนเวลา 1 นาฬิกาเรากำลังสำรองข้อมูลสคริปต์ทุกฐานข้อมูลบนเซิร์ฟเวอร์ สิ่งนี้กำลังดำเนินการโดยสคริปต์บรรทัด 31 ซึ่งส่วนที่สำคัญที่สุดคือ …

4
กฎที่แข็งและเร็วสำหรับการรวมคอลัมน์ในดัชนี
มีกฎใด ๆ ที่ยากและรวดเร็วในการตัดสินใจว่าควรจะใส่คอลัมน์ใดและเรียงตามลำดับในรวมในดัชนีที่ไม่ทำคลัสเตอร์ ฉันเพิ่งอ่านบทความนี้https://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index และฉันพบว่าสำหรับแบบสอบถามต่อไปนี้: SELECT EmployeeID, DepartmentID, LastName FROM Employee WHERE DepartmentID = 5 โปสเตอร์แนะนำให้สร้างดัชนีแบบนี้: CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee(EmployeeID, DepartmentID) INCLUDE (Lastname) ที่นี่คำถามของฉันมาทำไมเราไม่สามารถสร้างดัชนีเช่นนี้ CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, DepartmentID, LastName) หรือ CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, LastName) INCLUDE (DepartmentID) และสิ่งใดที่ทำให้ผู้โพสต์ตัดสินใจที่จะเก็บคอลัมน์นามสกุลไว้ด้วย ทำไมไม่คอลัมน์อื่น ๆ และวิธีการตัดสินใจในลำดับที่เราควรเก็บคอลัมน์ที่มี?

6
วิธีดำเนินการ SQL กับฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์
ฉันมี SQL มาตรฐานบางตัวที่ฉันรันกับหลายฐานข้อมูลบนเซิร์ฟเวอร์เดียวเพื่อช่วยฉันวินิจฉัยปัญหา: select so.name, so.type, MAX(case when sc.text like '%remote%' then '' ELSE 'N' END) AS Relevant, @@ServerName as Server, DB_Name() as DBName from sysobjects so with (nolock) join syscomments sc with (nolock) on so.id = sc.id where (sc.text like '%emote%') group by so.name, so.type order by so.type, so.name …
38 sql-server 

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

6
ฉันสามารถดูแบบสอบถามประวัติศาสตร์ทำงานบนฐานข้อมูล SQL Server ได้หรือไม่
มีคนกำลังเรียกใช้แบบสอบถามบนฐานข้อมูล SQL Server ของเราจากระยะไกลและระบบของพวกเขาล้มเหลว พวกเขาไม่มีการสำรองข้อมูลของแบบสอบถามนั้นและต้องการดูสิ่งที่ถูกเรียกใช้บนเซิร์ฟเวอร์ เป็นไปได้หรือไม่ที่จะค้นหาข้อความค้นหานี้ในบันทึกหรือในบางแห่ง?
38 sql-server  logs 

2
วิธีทำให้ sqlcmd ส่งคืน ERRORLEVEL นอกเหนือจาก 0 เมื่อสคริปต์. sql ล้มเหลว
ฉันกำลังเรียกใช้ sqlcmd จากแบตช์ไฟล์และฉันสงสัยว่าจะทำให้ ERRORLEVEL คืนเป็นค่าอื่นนอกเหนือจาก 0 ได้อย่างไรเมื่อมีบางอย่างผิดพลาดในการสำรองข้อมูล

4
ALLOW_SNAPSHOT_ISOLATION และ READ_COMMITTED_SNAPSHOT
ฟอรัมและตัวอย่างแบบออนไลน์ส่วนใหญ่มักแนะนำให้มีทั้งสองอย่างALLOW_SNAPSHOT_ISOLATIONและREAD_COMMITTED_SNAPSHOTตั้งค่าเป็นเปิดเมื่อใดก็ตามที่มีคนถามสแนปชอตการกำหนดเวอร์ชันของแถวหรือคำถามที่คล้ายกัน ฉันเดาคำว่า SNAPSHOT ในการตั้งค่าทั้งสองทำให้สับสนเล็กน้อย ผมคิดว่าในการสั่งซื้อสำหรับโปรแกรมฐานข้อมูลที่จะใช้เวอร์ชันแถวแทนการล็อคสำหรับการทำงานเริ่มต้น READ_COMMITTED ฐานข้อมูลREAD_COMMITTED_SNAPSHOTเป็นชุดที่ ON โดยไม่คำนึงถึงสิ่งที่ALLOW_SNAPSHOT_ISOLATIONการตั้งค่า ALLOW_SNAPSHOT_ISOLATIONตั้งค่าจะถูกตั้งไว้ที่ ON เท่านั้นที่จะช่วยให้ภาพรวมการแยกเมื่อเริ่มต้นการทำธุรกรรม (เช่น SET แยกธุรกรรมระดับภาพรวม) โดยไม่คำนึงถึงของREAD_COMMITTED_SNAPSHOTการตั้งค่า เหตุผลเดียวที่มีการตั้งค่าทั้งสองนี้เป็น ON คือเมื่อต้องมีการอ่านการกำหนดเวอร์ชันแถวที่ยอมรับและ การแยกสแน็ปช็อต คำถามของฉันคือความเข้าใจของฉันไม่ถูกต้องในบางวิธี? และการตั้งค่าทั้งสองนี้จะต้องตั้งค่าเป็นเปิดพร้อมกันเสมอ (โดยเฉพาะอย่างยิ่งสำหรับการอ่านการกำหนดเวอร์ชันแถวที่ยอมรับได้)?

7
EXISTS (SELECT 1 …) เทียบกับ EXISTS (SELECT * …) อย่างใดอย่างหนึ่งหรือไม่
เมื่อใดก็ตามที่ฉันต้องการตรวจสอบการมีอยู่ของแถวในตารางฉันมักจะเขียนเงื่อนไขเช่น: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) คนอื่นเขียนเหมือน: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

8
งาน SQL Server Agent และกลุ่มความพร้อมใช้งาน
ฉันกำลังมองหาแนวปฏิบัติที่ดีที่สุดในการจัดการงาน SQL Server Agent ตามกำหนดเวลาในกลุ่มความพร้อมใช้งานของ SQL Server 2012 บางทีฉันอาจพลาดบางสิ่ง แต่ในสถานะปัจจุบันฉันรู้สึกว่า SQL Server Agent ไม่ได้รวมเข้ากับฟีเจอร์ SQL2012 ที่ยอดเยี่ยมนี้ ฉันจะทำให้งานเอเจนต์ SQL ตามกำหนดเวลารับรู้ถึงการสลับโหนดได้อย่างไร? ตัวอย่างเช่นฉันมีงานที่ทำงานบนโหนดหลักซึ่งโหลดข้อมูลในแต่ละชั่วโมง ทีนี้ถ้าหลักล้มลงฉันจะเปิดใช้งานงานรองซึ่งตอนนี้กลายเป็นงานหลักได้อย่างไร? ถ้าฉันจัดกำหนดการงานบนรองเสมอมันจะล้มเหลวเพราะงานรองเป็นแบบอ่านอย่างเดียว

5
วิธีการเร่งความเร็วการลบอย่างมากจาก <table> โดยไม่มีส่วนคำสั่ง
ใช้ SQL Server 2005 ฉันกำลังทำการลบขนาดใหญ่จากที่ไม่มีส่วนคำสั่ง โดยทั่วไปแล้วเทียบเท่ากับคำสั่ง TRUNCATE TABLE - ยกเว้นฉันไม่ได้รับอนุญาตให้ใช้ TRUNCATE ปัญหาคือตารางมีขนาดใหญ่มาก - 10 ล้านแถวและใช้เวลากว่าหนึ่งชั่วโมงกว่าจะเสร็จสมบูรณ์ มีวิธีทำให้เร็วขึ้นโดยไม่: ใช้ตัดทอน ปิดการใช้งานหรือวางดัชนี? t-log มีอยู่ในดิสก์ที่แยกต่างหาก ข้อเสนอแนะใด ๆ ยินดีต้อนรับ!

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