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

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

3
วิธีการให้สิทธิ์ในฟังก์ชันที่มีค่าเป็นตาราง
ฉันทำถูกแล้ว ... ฉันมีฟังก์ชั่นที่คืนเงิน ... CREATE FUNCTION functionName( @a_principal money, @a_from_date datetime, @a_to_date datetime, @a_rate float ) RETURNS money AS BEGIN DECLARE @v_dint money set @v_dint = computation_here set @v_dint = round(@v_dint, 2) RETURN @v_dint END GO Grant execute on functionName to another_user Go ฉันแค่สงสัยว่ามันเป็นไปได้ที่จะถูกแปลงเป็น iTVF หรือไม่? ฉันพยายามทำสิ่งนี้ แต่ฉันพบข้อผิดพลาด: CREATE FUNCTION …

4
มีอะไรขึ้นอยู่กับการเรียงคอลัมน์บางคอลัมน์ใน sys.database?
ฉันพยายามเรียกใช้UNPIVOTคอลัมน์ต่างๆที่มีอยู่ในsys.databasesSQL Server เวอร์ชันต่างๆตั้งแต่ปี 2005 ถึง 2012 ความUNPIVOTล้มเหลวพร้อมกับข้อความแสดงข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 8167 ระดับ 16 สถานะ 1 สาย 48 ประเภทของคอลัมน์ "CompatibilityLevel" ขัดแย้งกับประเภทของคอลัมน์อื่น ๆ ที่ระบุในรายการ UNPIVOT T-SQL: DECLARE @dbname SYSNAME; SET @dbname = DB_NAME(); SELECT [Database] = unpvt.DatabaseName , [Configuration Item] = unpvt.OptionName , [Configuration Value] = unpvt.OptionValue FROM ( SELECT DatabaseName = name , …

3
หยุดการทำงานของ Studio จัดการเซิร์ฟเวอร์ SQL โดยอัตโนมัติ
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา มีวิธีที่จะระงับการทำให้สมบูรณ์อัตโนมัติของ SQL Server Management Studio ชั่วคราวในขณะที่พิมพ์แบบสอบถามหรือไม่? ฉันไม่ต้องการปิดใช้งานการเติมข้อความอัตโนมัติให้สมบูรณ์เพียงแค่พูดว่ากดปุ่มค้างไว้ในขณะที่พิมพ์ด้วยคำใดคำหนึ่งเพื่อไม่ให้เข้าทาง ตัวอย่างเช่นฉันมีคำถามต่อไปนี้ SELECT Foo, Foo2 FROM SomeTable ขณะที่ผมพิมพ์Fooแล้วกดพื้นที่บาร์สตูดิโอ SQL Server บริหารเตะอัตโนมัติสมบูรณ์และเสร็จสิ้นไปFooFooBar

1
เหตุใด SQL Server“ Compute Scalar” เมื่อฉันเลือกคอลัมน์ที่คำนวณยังคงอยู่
สามSELECTคำสั่งในรหัสนี้ USE [tempdb]; GO SET NOCOUNT ON; CREATE TABLE dbo.persist_test ( id INT NOT NULL , id5 AS (id * 5) , id5p AS (id * 5) PERSISTED ); INSERT INTO dbo.persist_test (id) VALUES (1), (2), (3); SELECT id FROM dbo.persist_test; SELECT id5 FROM dbo.persist_test; SELECT id5p FROM dbo.persist_test; DROP …

3
ฉันจะเพิ่มคอลัมน์ rowversion ลงในตารางขนาดใหญ่โดยมีเวลาหยุดทำงานน้อยที่สุดได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ใช้ SQL Server 2008 และใหม่กว่าฉันต้องการเพิ่มคอลัมน์ rowversion ในตารางขนาดใหญ่อย่างไรก็ตามเมื่อฉันเพียงแค่ ALTER TABLE [Tablename] ADD Rowversion [Rowversion] NOT NULL จากนั้นตารางจะไม่พร้อมใช้งานสำหรับการอัปเดตนานเกินไป ฉันสามารถใช้กลยุทธ์ใดในการลดเวลาหยุดทำงานนี้ ฉันจะพิจารณาอะไร แน่นอนง่ายกว่าดีกว่า แต่ฉันจะพิจารณากลยุทธ์ใด ๆ ความคิดของฉันคือเป็นทางเลือกสุดท้ายฉันสามารถรักษาตารางการแสดงละครที่ปรับปรุงใหม่โดยทริกเกอร์แล้ว sp_rename ตาราง staging ลงในตารางเดิม แต่ฉันหวังว่าจะได้อะไรที่ง่ายกว่า / ง่ายกว่านี้


3
varchar (255) หรือ varchar (256)?
ฉันควรใช้varchar(255)หรือvarchar(256)เมื่อออกแบบตาราง? ฉันได้ยินมาว่ามีการใช้หนึ่งไบต์สำหรับความยาวของคอลัมน์หรือเพื่อเก็บข้อมูลเมตา มันสำคัญอีกต่อไปแล้ว ณ จุดนี้? ฉันเห็นโพสต์บนอินเทอร์เน็ตอย่างไรก็ตามพวกเขาใช้กับ Oracle และ MySQL เรามี Microsoft SQL Server 2016 Enterprise Edition แล้วนำไปใช้กับสภาพแวดล้อมนี้ได้อย่างไร ตอนนี้พูดตัวอย่างเช่นถ้าฉันบอกให้ลูกค้าของฉันเก็บตัวอย่างคำอธิบายข้อความถึง 255 ตัวอักษรแทน 256 จะมีความแตกต่าง? สิ่งที่ฉันอ่าน "ด้วยความยาวสูงสุด 255 อักขระ DBMS สามารถเลือกใช้ไบต์เดียวเพื่อระบุความยาวของข้อมูลในฟิลด์ถ้าขีด จำกัด เป็น 256 หรือมากกว่านั้นจำเป็นต้องใช้สองไบต์" มันเป็นเรื่องจริงเหรอ?

1
คีย์หลักพร้อมตัวเลือก“ ไม่ใช่สำหรับการจำลอง”
ฉันเพิ่งเข้าร่วมโครงการและฉันได้ค้นพบว่าในตารางส่วนใหญ่คีย์หลักมีคุณสมบัติ " NOT FOR REPLICATION" ฉันไม่ใช่ DBA แต่แน่นอนในฐานข้อมูลส่วนใหญ่ระเบียนที่ไม่มีคีย์หลักจะถือว่าเสียหาย คีย์หลักของบันทึกเหล่านี้ส่วนใหญ่จะถูกใช้เป็นคีย์ต่างประเทศอย่างแน่นอน นี่เป็นข้อผิดพลาดในส่วนของนักพัฒนาก่อนหน้า (ที่ไม่ได้ทำงานให้กับ บริษัท อีกต่อไป) หรือมีตรรกะอื่น ๆ ที่เกี่ยวข้องหรือไม่? เราไม่ได้ใช้การจำลองแบบในสภาพแวดล้อมการผลิตดังนั้นนี่จะไม่ส่งผลกระทบต่ออะไรที่ร้ายแรงอยู่ดี แต่ฉันสงสัยว่ามีผลข้างเคียงอื่น ๆ จากการลบคำสั่งเหล่านี้ทั้งหมดที่ฉันไม่ทราบ ฉันไม่พบเพลงฮิตที่มีประโยชน์มากมายสำหรับคำค้นหาจำนวนหนึ่งที่เกี่ยวข้องกับหัวข้อนี้ดังนั้นฉันค่อนข้างมั่นใจว่านี่เป็นเพียงข้อผิดพลาดที่ฉันต้องย้อนกลับดังนั้นคำถามนี้เป็นคำถามที่ทำให้หวาดระแวงของฉันจริงๆ

1
คุณเปิดใช้งานการแคชชุดผลลัพธ์ของ SQL Server 2019 อย่างไร
SQL Server 2019 CTP 2.3 ได้เพิ่มคอลัมน์ใหม่สองสามคอลัมน์ลงใน sys.database รวมถึง is_result_set_caching_on: มันไม่ได้ทำเป็นเอกสารในมีอะไรใหม่ใน SQL Server 2019หรือในหน้าเปลี่ยนแปลงฐานข้อมูล ฉันพยายามใช้ไวยากรณ์เดียวกันกับการกู้คืนฐานข้อมูลแบบเร่งความเร็วสำหรับการหัวเราะ: ALTER DATABASE StackOverflow2013 SET RESULT_SET_CACHING ON; แต่ไม่มีโชค: Msg 5058, Level 16, State 12, Line 8 Option 'RESULT_SET_CACHING' cannot be set in database 'StackOverflow2013'.

5
ความยืดหยุ่นในการขัดข้องของ SQL Server สามารถปรับปรุงได้หรือไม่
เรามีพีซีที่ใช้ SQL Server (2008 SP4 และ 2016 SP1) ซึ่งสูญเสียพลังงานเป็นประจำ เห็นได้ชัดว่าบางครั้งสิ่งนี้นำไปสู่ความเสียหาย (ดัชนี) ของฐานข้อมูล SQL Server ซึ่งเราจำเป็นต้องกู้คืนหลังจากนั้น ฉันทราบว่า SQL Server ไม่ได้ออกแบบมาสำหรับสถานการณ์ดังกล่าวและวิธีการแก้ไขที่ถูกต้องคือการแก้ไขสาเหตุของการสูญเสียพลังงาน (เพิ่มเติมที่ด้านล่างถ้าคุณอยากรู้) อย่างไรก็ตามมีตัวเลือกการปรับแต่งใด ๆ ใน SQL Server ที่ฉันสามารถตั้งค่าเพื่อลดความเสี่ยงของความเสียหายของฐานข้อมูลจากการสูญเสียพลังงานหรือไม่? พื้นหลัง: "พีซี" เป็นแท็บเล็ต Windows ที่ติดตั้งบนรถยก เมื่อผู้ใช้ปิดรถยกแท็บเล็ตจะสูญเสียพลังงาน เราได้พยายามสอนให้ผู้ใช้ปิด Windows อย่างถูกต้องก่อนที่จะปิดรถยก แต่ล้มเหลว (อาจเป็นเพราะการปิด "งาน" เกือบตลอดเวลา) ขณะนี้เรากำลังตรวจสอบตัวเลือกอื่น ๆ เช่นการเพิ่ม UPS ซึ่งส่งสัญญาณแท็บเล็ตเพื่อปิดการสูญเสียพลังงาน
20 sql-server  crash 

2
เหตุใดผู้ดำเนินการเชื่อมต่อจึงประมาณค่าแถวน้อยกว่าอินพุต
ในตัวอย่างแบบสอบถามแผนต่อไปนี้ดูเหมือนว่าชัดเจนว่าการประมาณแถวสำหรับConcatenationผู้ประกอบการควรเป็น~4.3 billion rowsหรือผลรวมของแถวประมาณการสำหรับสองอินพุต อย่างไรก็ตามมีการประมาณค่าการ~238 million rowsผลิตซึ่งนำไปสู่การเพิ่มประสิทธิภาพย่อยSort/ Stream Aggregateกลยุทธ์ที่กระจายข้อมูลหลายร้อย GB ไปยัง tempdb การประมาณที่สอดคล้องกันอย่างมีเหตุผลในกรณีนี้จะทำให้เกิด a Hash Aggregateลบการรั่วไหลและเพิ่มประสิทธิภาพของแบบสอบถาม นี่เป็นข้อบกพร่องใน SQL Server 2014 หรือไม่ มีสถานการณ์ที่ถูกต้องหรือไม่ที่การประมาณการต่ำกว่าอินพุทอาจมีเหตุผลหรือไม่? วิธีแก้ไขปัญหาใดบ้างที่อาจมีอยู่ นี่คือแผนแบบสอบถามเต็มรูปแบบ (ไม่ระบุชื่อ) ฉันไม่สามารถดูแลระบบเข้าถึงเซิร์ฟเวอร์นี้เพื่อให้เอาต์พุตจากQUERYTRACEON 2363หรือแฟล็กการติดตามที่คล้ายกัน แต่อาจสามารถรับเอาต์พุตเหล่านี้จากผู้ดูแลระบบหากพวกเขาจะเป็นประโยชน์ ฐานข้อมูลอยู่ในระดับความเข้ากันได้ 120 ดังนั้นจึงใช้เครื่องมือประมาณการ Cardinality ใหม่ของ SQL Server 2014 สถิติจะถูกอัพเดตด้วยตนเองทุกครั้งที่มีการโหลดข้อมูล เมื่อพิจารณาจากปริมาณข้อมูลเรากำลังใช้อัตราการสุ่มตัวอย่างเริ่มต้น เป็นไปได้ว่าอัตราการสุ่มตัวอย่างที่สูงขึ้น (หรือFULLSCAN) อาจมีผลกระทบ

1
ทำไมการค้นหา LIKE N '% %' ตรงกับอักขระ Unicode ใด ๆ และ = N' 'ตรงกับหลาย ๆ
DECLARE @T TABLE( Col NCHAR(1)); INSERT INTO @T VALUES (N'A'), (N'B'), (N'C'), (N'Ƕ'), (N'Ƿ'), (N'Ǹ'); SELECT * FROM @T WHERE Col LIKE N'%�%' ผลตอบแทน Col A B C Ƕ Ƿ Ǹ SELECT * FROM @T WHERE Col = N'�' ผลตอบแทน Col Ƕ Ƿ Ǹ การสร้าง "ตัวอักษร" สองไบต์ที่เป็นไปได้ทั้งหมดด้วยด้านล่างแสดงให้เห็นว่า=รุ่นตรงกับ 21,229 ของพวกเขาและLIKE N'%�%'รุ่นทั้งหมดของพวกเขา …

2
คำค้นหาที่ไม่มีแผนเพียงพอที่ดี
ฉันมีฐานข้อมูล SQL Server 2012 ผมสังเกตเห็นค่าของสำหรับการค้นหาบางอย่างและทั้งหมดให้Reason for early termination of statement optimization Good Enough Plan Foundตอนนี้คำถามของฉันคือ: ประเภทใดบ้างที่เป็นไปได้ของ“ เหตุผลในการยกเลิกการปรับให้เหมาะสมที่สุดในช่วงต้น” ฉันค้นหาสิ่งนี้เป็น msdn แต่ไม่ได้รับรายการค่าทั้งหมด มี DMV หรือเหตุการณ์เพิ่มเติมเพื่อแสดงรายการคำค้นหาทั้งหมดที่การเพิ่มประสิทธิภาพถูกยกเลิกเนื่องจากเหตุผลอื่นนอกเหนือจาก Good Enough Plan Found หรือไม่ ฉันอ้างอิงบทความสองบทความต่อไปนี้ซึ่งไม่ได้แสดงรายการความเป็นไปได้ทั้งหมด [พวกเขายังให้ผลลัพธ์ที่แตกต่างในฐานข้อมูลของฉันด้วย] การค้นหา: หมดเวลาการรวบรวมข้อความค้นหา การระบุแผนการสืบค้นที่ไม่ดีพอ

1
SQL Server - การจัดการการแปลสตริงในที่ซ้อนกันแบบ non-deterministic
ในขณะทำโปรไฟล์ฐานข้อมูลฉันพบว่ามีการอ้างอิงฟังก์ชั่นที่ไม่ได้กำหนดค่าบางอย่างที่เข้าถึง1,000-2500 ครั้งต่อนาทีสำหรับการเชื่อมต่อแต่ละครั้งในแอพพลิเคชั่นนี้ วิSELECTจากมุมมองทำให้แผนการดำเนินการต่อไปนี้: ดูเหมือนว่าแผนซับซ้อนสำหรับมุมมองที่มีน้อยกว่าหนึ่งพันแถวที่อาจเห็นการเปลี่ยนแปลงหนึ่งหรือสองแถวทุกสองสามเดือน แต่มันก็แย่ลงด้วยการปฏิบัติอื่น ๆ ดังต่อไปนี้: มุมมองแบบซ้อนไม่สามารถกำหนดค่าได้ดังนั้นเราจึงไม่สามารถจัดทำดัชนีได้ แต่ละมุมมองอ้างอิงหลายUDFs เพื่อสร้างสตริง UDF แต่ละอันประกอบด้วยUDFs ที่ซ้อนกันเพื่อรับรหัส ISO สำหรับภาษาที่แปลเป็นภาษาท้องถิ่น ผู้ชมในกองกำลังใช้เพิ่มเติมสร้างสตริงกลับมาจากUDFการเป็นJOINภาค มุมมองสแต็กแต่ละครั้งจะถือว่าเป็นตารางหมายความว่ามีINSERT/ UPDATE/ DELETEทริกเกอร์ในแต่ละเพื่อเขียนไปยังตารางพื้นฐาน ทริกเกอร์เหล่านี้ในมุมมองใช้CURSORSว่าEXECวิธีการจัดเก็บที่อ้างอิงมากกว่านี้สตริงสร้างUDFs ดูเหมือนว่าฉันจะเน่าเสีย แต่ฉันมีประสบการณ์กับ TSQL เพียงไม่กี่ปี มันจะดีขึ้นเช่นกัน! ดูเหมือนนักพัฒนาที่ตัดสินใจว่านี่เป็นความคิดที่ยอดเยี่ยมทำทั้งหมดนี้เพื่อให้สตริงสองสามร้อยรายการที่เก็บไว้สามารถมีการแปลตามสตริงที่ส่งคืนจากสตริงUDFนั้นเป็นแบบเฉพาะสคีมา นี่คือหนึ่งในมุมมองในสแต็ก แต่ทั้งหมดนั้นไม่ดีเท่ากัน: CREATE VIEW [UserWKStringI18N] AS SELECT b.WKType, b.WKIndex , CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.I18NString ELSE il.I18nString END AS WKString ,CASE …

4
คำแนะนำในการวินิจฉัยแบบสอบถามที่ช้า“ บางครั้ง”
ฉันมีกระบวนงานที่เก็บไว้ซึ่งส่งคืนผลลัพธ์จากมุมมองที่จัดทำดัชนีผ่านดัชนีครอบคลุม โดยปกติแล้วจะทำงานเร็ว (~ 10ms) บางครั้งสามารถทำงานได้ถึง 8 วินาที นี่คือตัวอย่างการดำเนินการแบบสุ่ม (หมายเหตุ: นี่ไม่ใช่แบบช้า แต่ข้อความค้นหาจะเหมือนกันนอกเหนือจากค่าที่ส่งผ่าน): declare @p2 dbo.IdentityType insert into @p2 values(5710955) insert into @p2 values(5710896) insert into @p2 values(5710678) insert into @p2 values(5710871) insert into @p2 values(5711103) insert into @p2 values(6215197) insert into @p2 values(5710780) exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2 นี่คือ SPROC: ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus] …

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