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

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

1
นายหน้าบริการได้รับการสำรองข้อมูลตอนนี้ได้รับแล้ว แต่ดูเหมือนว่าจะไม่ได้รับการประมวลผล
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 4 ปีที่แล้ว มีปัญหากับการแจ้งเตือนกิจกรรม บนเครื่อง / ไดรฟ์ / ฐานข้อมูลที่ข้อความถูกส่งไปยัง (ตัวรับสัญญาณ) หมายถึงไดรฟ์เต็มเมื่อไม่มีใครค้นหาดังนั้นจึงถูกสำรองตลอดทั้งวัน ตอนนี้เราเพิ่มพื้นที่ว่างในไดรฟ์ก็ยอมรับข้อความในคิว แต่ดูเหมือนว่าจะไม่ประมวลผล - ไม่มีระเบียนใหม่แทรกแม้ว่าคิวจะมี 22 ล้านข้อความและเพิ่มขึ้น (!) เปิดใช้งานคิว IS: is_activation_enabled = 1 is_receive_enabled = 1 is_enqueue_enabled = 1 ฉันเห็น SP ที่เปิดใช้งานอยู่activation_procedureแต่เมื่อฉันดูSP_WHOISACTIVEฉันไม่เห็นผู้อ่านที่ใช้งานอยู่ ก่อนที่ฉันจะระเบิดออกอีกครั้งฉันทำอะไรผิด ฉันจะนำไปดำเนินการหรือล้างข้อความได้อย่างไร ขอบคุณล่วงหน้า. ปรับปรุง One thought - ตั้งแต่ฉันมีis_enqueue_enabledบางทีมันเก็บข้อความทั้งหมดจนกว่ามันจะสามารถประมวลผลได้ทั้งหมด? ถ้าเป็นเช่นนั้นฉันสามารถปิดเครื่องได้อย่างปลอดภัยหรือไม่ CREATE …

3
เหตุใดจึงใช้เวลาสูงสุด 30 วินาทีในการสร้างกลุ่มแถว CCI แบบง่าย
ฉันกำลังทำงานเกี่ยวกับการสาธิต CCIs เมื่อฉันสังเกตเห็นว่าเม็ดมีดบางรุ่นของฉันใช้เวลานานกว่าที่คาดหมาย คำจำกัดความของตารางที่จะทำซ้ำ: DROP TABLE IF EXISTS dbo.STG_1048576; CREATE TABLE dbo.STG_1048576 (ID BIGINT NOT NULL); INSERT INTO dbo.STG_1048576 SELECT TOP (1048576) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) RN FROM master..spt_values t1 CROSS JOIN master..spt_values t2; DROP TABLE IF EXISTS dbo.CCI_BIGINT; CREATE TABLE dbo.CCI_BIGINT (ID BIGINT NOT NULL, INDEX CCI …

1
กู้คืนฐานข้อมูลโดยใช้ GUI - ไฟล์ผิดเพื่อกู้คืน
ฉันแค่ล้อเล่นกับอินเทอร์เฟซกราฟิก SSMS และศึกษาตัวเลือกของงาน "กู้คืน" สิ่งหนึ่งที่ฉันสังเกตเห็นคือเมื่อฉันคลิกที่ "สร้างสคริปต์" บรรทัดแรกของแบบสอบถามคือ: RESTORE DATABASE [MyDatabase] FROM DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5 ( and a lot of log backups for point in time ) ตกลงไม่มีปัญหา แต่ฉันกำลังสำรองข้อมูลรายวันของฐานข้อมูลนี้ นี่Database_name_LOGSHIPPING.BKPคือชื่อของไฟล์ที่ฉันสร้างไว้สำหรับบันทึกการจัดส่งเมื่อหนึ่งเดือนที่แล้ว ทำไมเมื่อฉันพยายามใช้อินเทอร์เฟซกราฟิก SSMS เพื่อคืนค่าการสำรองข้อมูลชี้ไปที่แฟ้มสำรองนี้ ฉันไม่ได้มีไฟล์นี้อีกต่อไป ด้วยแบบสอบถามนี้จาก MSSQLTIPS ฉันสามารถดูการสำรองข้อมูลทั้งหมดจากฐานข้อมูลนี้: SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, …

3
ข้อมูลขนาดใหญ่และประสิทธิภาพใน SQL Server
ฉันเขียนแอปพลิเคชันด้วยแบ็กเอนด์ SQL Server ที่รวบรวมและจัดเก็บและบันทึกจำนวนมาก ฉันได้คำนวณว่าที่จุดสูงสุดปริมาณการบันทึกโดยเฉลี่ยอยู่ที่ประมาณ 3-4 พันล้านต่อวัน (การดำเนินการ 20 ชั่วโมง) โซลูชันดั้งเดิมของฉัน (ก่อนที่ฉันจะทำการคำนวณข้อมูลจริง) เพื่อให้แอปพลิเคชันของฉันแทรกระเบียนลงในตารางเดียวกันที่ลูกค้าของฉันสอบถาม นั่นขัดข้องและถูกเผาอย่างรวดเร็วค่อนข้างชัดเจนเพราะเป็นไปไม่ได้ที่จะสืบค้นตารางที่มีการแทรกเรคคอร์ดจำนวนมาก โซลูชันที่สองของฉันคือการใช้ฐานข้อมูล 2 ฐานข้อมูลหนึ่งสำหรับข้อมูลที่ได้รับจากแอปพลิเคชันและอีกหนึ่งฐานข้อมูลสำหรับไคลเอ็นต์ที่พร้อมใช้งาน แอปพลิเคชันของฉันจะรับข้อมูลและแบ่งเป็นชุด ~ 100k เรคคอร์ดและแทรกจำนวนมากในตารางการจัดเตรียม หลังจาก ~ 100k บันทึกแอปพลิเคชันทันทีสร้างตารางการแสดงละครอีกด้วยสคีมาเหมือนก่อนหน้าและเริ่มแทรกลงในตารางนั้น มันจะสร้างเรกคอร์ดในตารางงานที่มีชื่อของตารางที่มีเรกคอร์ด 100k และกระบวนงานที่เก็บไว้ในฝั่ง SQL Server จะย้ายข้อมูลจากตาราง staging ไปยังตารางการผลิตที่ไคลเอ็นต์พร้อมแล้วปล่อย ตารางตารางชั่วคราวที่สร้างโดยแอปพลิเคชันของฉัน ฐานข้อมูลทั้งสองมีชุดตาราง 5 ชุดที่มีสคีมาเดียวกันยกเว้นฐานข้อมูลที่มีตารางงาน ฐานข้อมูลการจัดเตรียมไม่มีข้อ จำกัด ด้านความสมบูรณ์, คีย์, ดัชนี ฯลฯ ... บนตารางที่มีระเบียนจำนวนมากที่จะอยู่ SignalValues_stagingดังต่อไปนี้ชื่อตารางเป็น เป้าหมายคือเพื่อให้แอปพลิเคชันของฉันกระแทกข้อมูลลงใน SQL Server โดยเร็วที่สุด …

6
ประสิทธิภาพของ a = 0 และ b = 0 และ… z = 0 vs a + b + c + d = 0
นี่เป็นคำถามง่าย ๆ ที่ฉันไม่สามารถหาคำตอบได้ ในแง่ของประสิทธิภาพถ้าฉันมีWHEREประโยคเช่นa=0 and b=0 and ... z=0ฉันจะได้รับประสิทธิภาพใด ๆ หรือไม่ถ้าฉันเปลี่ยนเงื่อนไขนั้นด้วยa+b+...+z=0? กล่าวอีกนัยหนึ่งมีการเพิ่มประสิทธิภาพใด ๆ โดยการแทนที่ต่อไปนี้ Select * From MyTable Where A=0 and B=0 and C=0 and D=0... กับ Select * From MyTable Where A+B+C+D=0... ฉันรู้ว่ามันสามารถขึ้นอยู่กับดัชนีได้ แต่สำหรับจุดประสงค์นี้สมมุติว่าไม่มีดัชนีอยู่ ตัวดำเนินการทางคณิตศาสตร์ (+) ทำงานได้ดีกว่าตัวดำเนินการทางตรรกะ "OR" หรือ "AND" หรือไม่? ฉันอยู่ภายใต้การแสดงผลว่าการเพิ่มประสิทธิภาพนั้นดีกว่าหลายเงื่อนไขด้วย ANDs หรือ OR ผลการทดสอบ บนตาราง 4.2 ล้านแถว …

3
การใช้ชนิดย่อยของชนิดย่อยในรูปแบบการออกแบบชนิด / ชนิดย่อยที่มีคลาสย่อยเฉพาะซึ่งกันและกัน
บทนำ เพื่อให้คำถามนี้มีประโยชน์สำหรับผู้อ่านในอนาคตฉันจะใช้ตัวแบบข้อมูลทั่วไปเพื่อแสดงปัญหาที่ฉันเผชิญ รูปแบบข้อมูลของเราประกอบด้วย 3 หน่วยงานซึ่งจะต้องได้รับการระบุว่าเป็นA, และB Cเพื่อให้ทุกอย่างง่ายขึ้นคุณลักษณะทั้งหมดของพวกเขาจะเป็นintประเภท Entity Aมีแอตทริบิวต์ต่อไปนี้: D, EและX; Entity Bมีแอตทริบิวต์ต่อไปนี้: D, EและY; เอนทิตีCมีคุณสมบัติดังต่อไปนี้: DและZ; เนื่องจากเอนทิตีทั้งหมดใช้แอตทริบิวต์ร่วมกันDฉันจึงตัดสินใจใช้การออกแบบชนิด / ชนิดย่อย ข้อสำคัญ: เอนทิตีเป็นเอกสิทธิ์เฉพาะบุคคล! หมายความว่าเอนทิตีนั้นเป็น A หรือ B หรือ C ปัญหา: หน่วยงานAและBมีอีกแอตทริบิวต์ทั่วไปแต่แอตทริบิวต์นี้ไม่ได้อยู่ในกิจการEC คำถาม: ฉันต้องการใช้คุณลักษณะที่อธิบายข้างต้นเพื่อเพิ่มประสิทธิภาพการออกแบบของฉันถ้าเป็นไปได้ ความจริงแล้วฉันไม่รู้ว่าจะทำอย่างไรและจะเริ่มต้นอย่างไรจึงจะโพสต์นี้

2
เหตุใดอักขระเหล่านี้จึงเท่าเทียมกันใน SQL Server
ฉันแค่ไม่เข้าใจ ดูแบบสอบถาม SQL นี้: select nchar(65217) -- ﻁ select nchar(65218) -- ﻂ select nchar(65219) -- ﻃ select nchar(65220) -- ﻄ if nchar(65217) = nchar(65218) print 'equal' if nchar(65217) = nchar(65219) print 'equal' if nchar(65217) = nchar(65220) print 'equal' ขึ้นอยู่กับความสัมพันธ์สกรรมกริยามันหมายความว่า SQL Server ถือว่าพวกเขาทั้งหมดจะเป็นตัวละครเดียวกัน อย่างไรก็ตามในสภาพแวดล้อมอื่นพูดเช่น C # พวกเขาไม่เหมือนกัน สิ่งที่ฉันสับสนคือ: การเปรียบเทียบสตริงทำงานใน SQL Server …

4
คุณจะค้นหารุ่น / รุ่นของ SQL Server โดยไม่ติดตั้ง SSMS ได้อย่างไร
จะทราบได้อย่างไรว่าติดตั้งรุ่นใดโดยไม่ต้องติดตั้ง Studio จัดการ? ฉันมีเซิร์ฟเวอร์ที่ทำหน้าที่เป็นผู้จัดการใบอนุญาตสำหรับซอฟต์แวร์อื่น เมื่อตรวจสอบการแจ้งเตือนการใช้ RAM สูงฉันพบว่ากระบวนการsqlservr.exeใช้เวลา RAM เกือบ 2 GB ฉันดูในเมนูโปรแกรมและพบว่าตัวจัดการการกำหนดค่าได้รับการติดตั้งมิฉะนั้นมันเป็นกระดูกที่เปลือยเปล่า ฉันคลิกที่คุณสมบัติของไฟล์ EXE และพบ 10.50.1600.1 แต่ไม่มีที่ไหนที่ฉันพบว่าระบุว่าเป็น Express, Dev, STN, ENT ฯลฯ ถ้าฉันต้องเดานี่เป็นฉบับด่วน แต่ฉันอยากรู้ว่ามีสัญลักษณ์บอกเรื่องชัดเจนหรือไม่ อัปเดต: @Bob - ไฟล์บอกฉันว่าฉันรู้ไม่ใช่ฉบับ @valo - ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันเรียกใช้คำสั่งนั้นและฉันได้ตรวจสอบว่ามีการเปิดใช้งานชื่อ pipes: HResult 0x35, ระดับ 16, สถานะ 1 ผู้ให้บริการไปป์ที่มีชื่อ: ไม่สามารถเปิดการเชื่อมต่อกับ SQL Server [53] Sqlcmd: ข้อผิดพลาด: Microsoft SQL Server Native Client …
20 sql-server 

2
มีรายการการดำเนินงานออนไลน์ที่สมบูรณ์สำหรับ SQL Server แต่ละเวอร์ชันหรือไม่
ในขณะที่เรากำลังจะเปลี่ยนตารางขนาดใหญ่บางส่วนในฐานข้อมูล 5TB ของเราฉันพบว่าตัวเองต้องการรายชื่อของการดำเนินการที่สามารถดำเนินการออนไลน์และที่ต้องล็อคเต็มรูปแบบที่จะจัดขึ้นในขณะที่พวกเขาทำงาน ในอุดมคติแล้วรายการนี้จะมีข้อมูลเกี่ยวกับคำสั่งที่ต้องการล็อค SCH-M เพื่อกระทำในตอนท้าย ในขณะที่ฉันรู้ว่าส่วนใหญ่ของพวกเขาจากเวลาของฉันใน Microsoft ฉันรู้สึกประหลาดใจที่ฉันไม่สามารถหารายชื่อของการดำเนินงานออนไลน์ที่เปิดเผยต่อสาธารณชนเนื่องจากพวกเขาวิวัฒนาการมาจาก SQL Server 2005 และตลอดจนถึง 2014 CTP ใครบ้างมีรายการดังกล่าวพร้อมใช้งาน? ถ้าไม่ฉันอาจตัดสินใจสร้างมันขึ้นมา

1
อินสแตนซ์แปลกของ SQL Server ขัดข้องเมื่อแคสต์เป็นตัวเลข
ในขณะที่ทำงานกับ C # Entity Framework ฉันสังเกตเห็นความผิดพลาดของอินสแตนซ์ SQL Server ของฉัน ฉันสามารถติดตามข้อความนี้ได้: SELECT * FROM dbo.[TestTable] where mpnr in (1099059904, 1038139906, 1048119902, 1045119902, 1002109903, 1117109910, 1111149902, 1063149902, 1117159902, 1116109904, 1105079905, 1012079906, 1129129904, 1103059905, 1065059905, 1091059906, 1110149904, 1129149903, 1083029905, 1080139904, 1076109903, 1010019902, 1058019902, 1060019903, 1053019902, 1030089902, 1018149902, 1077149902, 1010109901, 1011109901, 1000119902, 1023049903, 1107119909, …

2
เลือกระเบียนทั้งหมดเข้าร่วมกับตาราง A หากมีอยู่แล้วเข้าร่วมตาราง B ถ้าไม่ใช่
ดังนั้นนี่คือสถานการณ์ของฉัน: ฉันทำงาน Localization สำหรับโครงการของฉันและโดยทั่วไปฉันจะทำเช่นนี้ในรหัส C # แต่ฉันต้องการทำเช่นนี้ใน SQL อีกเล็กน้อยตั้งแต่ฉันพยายามควัก SQL เล็กน้อย สภาพแวดล้อม: มาตรฐาน SQL Server 2014, C # (.NET 4.5.1) หมายเหตุ: ภาษาการเขียนโปรแกรมควรไม่เกี่ยวข้องฉันเพียง แต่รวมไว้เพื่อความสมบูรณ์เท่านั้น ดังนั้นฉันจึงประสบความสำเร็จในสิ่งที่ฉันต้องการ แต่ไม่เท่าที่ฉันต้องการ จะได้รับในขณะที่ (อย่างน้อยปี) ตั้งแต่ผมได้กระทำใด ๆ SQL JOINs JOINยกเว้นคนพื้นฐานและนี้ค่อนข้างซับซ้อน นี่คือ diagramme ของตารางที่เกี่ยวข้องของฐานข้อมูล (มีอีกมากมาย แต่ไม่จำเป็นสำหรับส่วนนี้) ความสัมพันธ์ทั้งหมดที่อธิบายในภาพเสร็จสมบูรณ์ในฐานข้อมูล - PKและFKข้อ จำกัด คือการตั้งค่าและการใช้งานทั้งหมด ไม่มีคอลัมน์ใดที่อธิบายnullได้ dboตารางทั้งหมดมีแบบแผน ตอนนี้ฉันมีคำถามที่เกือบจะทำสิ่งที่ฉันต้องการ: นั่นคือให้ใด ๆจากรหัสSupportCategoriesและรหัสใด ๆของLanguagesมันก็จะกลับมาอย่างใดอย่างหนึ่ง: หากมีการแปลขวาที่เหมาะสมสำหรับภาษานั้นสำหรับสตริงที่ (IE …

4
แผนการดำเนินการ vs ข้อมูลสถิติ IO
แผนการดำเนินการกราฟิก SQL Server อ่านจากขวาไปซ้ายและบนลงล่าง มีคำสั่งที่มีความหมายต่อเอาต์พุตที่สร้างขึ้นโดยSET STATISTICS IO ON? แบบสอบถามต่อไปนี้: SET STATISTICS IO ON; SELECT * FROM Sales.SalesOrderHeader AS soh JOIN Sales.SalesOrderDetail AS sod ON soh.SalesOrderID = sod.SalesOrderID JOIN Production.Product AS p ON sod.ProductID = p.ProductID; สร้างแผนนี้: และSTATISTICS IOผลลัพธ์นี้: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead …

2
ฉันจะทำให้เซิร์ฟเวอร์ที่เชื่อมโยงทำงานโดยใช้การรับรองความถูกต้อง Windows ได้อย่างไร
ฉันกำลังพยายามนำเซิร์ฟเวอร์ที่เชื่อมโยงไปยัง ServerA ที่สร้างขึ้นบนเซิร์ฟเวอร์อื่นโดยใช้ ServerB "ทำโดยใช้บริบทความปลอดภัยปัจจุบันของการเข้าสู่ระบบ" ในสภาพแวดล้อมของโดเมน ฉันอ่านว่าฉันต้องสร้าง SPN สำหรับบัญชีบริการที่ใช้ SQL Server ในแต่ละเซิร์ฟเวอร์เพื่อเปิดใช้งาน Kerberos ฉันได้ทำไปแล้วและตอนนี้ทั้งสองแสดงรูปแบบการตรวจสอบสิทธิ์เป็น Kerberos อย่างไรก็ตามฉันยังคงพบข้อผิดพลาด: "Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'". ใน Active Directory ฉันเห็นว่าบัญชีบริการสำหรับ ServerB เชื่อถือได้สำหรับการมอบหมายให้ MSSQLSvc แต่ฉันสังเกตเห็นว่าบัญชีบริการสำหรับ ServerA ยังไม่ได้เปิดใช้งาน "เชื่อใจผู้ใช้นี้สำหรับการมอบหมาย" เซิร์ฟเวอร์เป้าหมายต้องเปิดใช้งานตัวเลือกนั้นด้วยหรือไม่ มีสิ่งใดอีกที่จำเป็นในการใช้การเข้าสู่ระบบ Windows ปัจจุบันเพื่อใช้เซิร์ฟเวอร์ที่เชื่อมโยงหรือไม่

4
การเลือกอัลกอริทึมที่เหมาะสมในฟังก์ชัน HashBytes
เราจำเป็นต้องสร้างค่าแฮชของข้อมูล nvarchar เพื่อการเปรียบเทียบ มีอัลกอริทึมแฮชหลายอย่างใน T-SQL แต่มีวิธีไหนที่ดีที่สุดในการเลือกจากสถานการณ์นี้ เราต้องการให้มั่นใจว่าความเสี่ยงของการมีค่าแฮชที่ซ้ำกันสำหรับค่า nvarchar ที่ต่างกันสองค่านั้นเป็นขั้นต่ำ จากการวิจัยของฉันทางอินเทอร์เน็ต MD5 นั้นดีที่สุด นั่นถูกต้องใช่ไหม? MSDN บอกเรา (ลิงค์ด้านล่าง) เกี่ยวกับอัลกอริธึมที่มีอยู่ แต่ไม่มีคำอธิบายใดเกี่ยวกับเงื่อนไขใดบ้าง HASHBYTES (Transact-SQL) เราจำเป็นต้องเข้าร่วมสองตารางในสองคอลัมน์ nvarchar (สูงสุด) ในขณะที่คุณสามารถจินตนาการแบบสอบถามใช้เวลาในการดำเนินการ เราคิดว่าจะเป็นการดีกว่าที่จะเก็บค่าแฮชของข้อมูล nvarchar (สูงสุด) แต่ละรายการและทำการรวมเข้ากับค่าแฮชมากกว่าค่า nvarchar (สูงสุด) ซึ่งเป็น blobs คำถามคืออัลกอริธึมแฮชใดที่ให้ความแตกต่างดังนั้นเราจึงไม่เสี่ยงต่อการมีค่าแฮชหนึ่งค่าสำหรับมากกว่าหนึ่ง nvarchar (สูงสุด)

5
ดาวน์โหลด SQL Server Profiler สำหรับ SQL Server Management Studio
ฉันจะทำโปรไฟล์ฐานข้อมูล SQL Server 2008 เพื่อดูรหัสที่กำลังดำเนินการบนฐานข้อมูลเฉพาะได้อย่างไร ฉันจำได้ว่าใช้ Profiler ของ SQL Server แต่ฉันไม่เห็นใน SQL Server Management Studio หลังจากดาวน์โหลด SQL Server 2008 R2 Express ฉันจะดาวน์โหลดเครื่องมือนั้นและติดตั้งได้ที่ไหน ฉันต้องการ SQL Server 2008 เวอร์ชันเต็มเพื่อดูตัวเลือกนี้หรือไม่?

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