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

SQL Server 2016 (รุ่นบิลด์หลัก 13.00.xxxx) โปรดติดแท็ก sql-server ด้วย

1
ปัญหาเกี่ยวกับแบบแผนการตั้งชื่อตารางและการจัดการนโยบายใน SQL Server 2016
ใน SQL Server 2012 ฉันมีชุดนโยบายที่ไม่อนุญาตให้มีช่องว่างในชื่อตาราง อย่างไรก็ตามเมื่อฉันใช้นโยบายเดียวกันใน SQL Server 2016 ฉันได้รับข้อผิดพลาด นี่คือรหัสสำหรับเงื่อนไข: DECLARE @condition_id INT EXEC msdb.dbo.sp_syspolicy_add_condition @name=N'No Spaces', @description=N'No spaces in table names.', @facet=N'IMultipartNameFacet', @expression=N'<Operator> <TypeClass>Bool</TypeClass> <OpType>NOT_LIKE</OpType> <Count>2</Count> <Attribute> <TypeClass>String</TypeClass> <Name>Name</Name> </Attribute> <Constant> <TypeClass>String</TypeClass> <ObjType>System.String</ObjType> <Value>% %</Value> </Constant> </Operator>', @is_name_condition=4, @obj_name=N'% %', @condition_id=@condition_id OUTPUT SELECT @condition_id นี่คือรหัสสำหรับนโยบาย: DECLARE @object_set_id INT …

3
ไม่สามารถกู้คืนฐานข้อมูลที่เปิดใช้งาน TDE เมื่อใช้ MAXTRANSFERSIZE และ CHECKSUM
Update : @AmitBanerjee - ผู้จัดการโปรแกรมอาวุโสสำหรับกลุ่มผลิตภัณฑ์ Microsoft SQL Server ยืนยันว่า MS จะตรวจสอบปัญหาเนื่องจากมีข้อบกพร่อง มีใครพบปัญหาในการกู้คืนข้อมูลสำรองใน SQL Server 2016 ที่เปิดใช้งาน TDE และใช้MAXTRANSFERSIZE> 65536 (ในกรณีของฉันฉันเลือก 65537 เพื่อให้สามารถบีบอัดฐานข้อมูล TDE ) และCHECKSUM? ด้านล่างนี้เป็นคำซ้ำ: --- create database create database test_restore go -- create table create table test_kin (fname char(10)) go -- Enable TDE use master GO CREATE CERTIFICATE …

1
ฐานข้อมูล SQL Server AlwaysOn ติดอยู่ในโหมดไม่ซิงโครไนซ์ / กำลังกู้คืนหลังจากอัปเกรด ข้อผิดพลาด: ไม่สามารถเปิดฐานข้อมูล '…' รุ่น 782
ขณะทดสอบการอัปเกรดจาก SQL Server 2014 SP1 (12.0.4422.0) เป็น SQL Server 2016 CTP 3.2 (13.0.900.73) ฉันทำตามกระบวนการอัปเดตที่แนะนำและพบปัญหาที่ฐานข้อมูลจะไม่เริ่มทำงานบนหลักเก่าหลังจากล้มเหลว ไปยังการปรับปรุงรอง การตั้งค่าของเราเป็นแบบจำลองหลักและแบบจำลองรองเดียวและขั้นตอนที่ฉันทำคือ: ลบ failover อัตโนมัติในแบบจำลองรองกระทำการซิงโครนัส อัพเกรดอินสแตนซ์ของเซิร์ฟเวอร์รองเป็นเวอร์ชันใหม่ ล้มเหลวด้วยตนเองไปยังแบบจำลองรอง ตรวจสอบว่าฐานข้อมูลออนไลน์แบบจำลองหลักใหม่ อัปเกรดเรพพลิกาหลักก่อนหน้าเป็นเวอร์ชันใหม่ การอัพเกรดของรองและ failover เพื่อให้มันทำงานหลักตรงตามที่คาดไว้ แต่หลังจากการอัพเกรดแบบจำลองก่อนหน้านี้หลักที่ผมสังเกตเห็นว่าฐานข้อมูลที่มันถูกระบุไว้ใน SSMS เป็นไม่ตรงกัน / ในการกู้คืน การพยายามเข้าถึงพวกมันจะสร้างข้อความแสดงข้อผิดพลาด: ฐานข้อมูล ... ไม่สามารถเข้าถึงได้ (ObjectExplorer) กำลังตรวจสอบถึงบันทึกของเซิร์ฟเวอร์ SQL ที่ฉันเห็น ไม่สามารถเปิดฐานข้อมูล '... ' เวอร์ชัน 782 อัปเกรดฐานข้อมูลเป็นเวอร์ชันล่าสุด การสอบถามตาราง master..sysdatabases แสดงให้เห็นว่ามันเป็นรุ่นที่เก่ากว่าและไม่ได้รับการอัพเดตในระหว่างการอัพเกรด: น่าเสียดายที่ล็อกไม่ได้ระบุว่าทำไมมันจึงไม่อัปเดตและแดชบอร์ดกลุ่มความพร้อมใช้งานให้เฉพาะคำเตือนทั่วไปที่ระบุสถานะการซิงโครไนซ์ข้อมูลของฐานข้อมูลความพร้อมใช้งานบางอย่างไม่แข็งแรงโดยไม่มีเหตุผล ฉันพยายามใช้ …

2
วิธีการป้องกัน Deadlocks ของคอลัมน์ที่แบ่งพาร์ติชันบน SELECT
ฉันมีตารางดัชนีคอลัมน์หลัก (CCI) สามตารางใน SQL Server 2016 CCI ทั้งหมดเหล่านี้อยู่ในรูปแบบการแบ่งพาร์ติชันเดียวกันโดยยึดตาม ID ผู้เช่า เมื่อเร็ว ๆ นี้และไม่สอดคล้องกันฉันได้รับการหยุดชะงักในงบเลือกง่าย ๆ จากการเข้าร่วมตารางเหล่านี้ ตัวอย่างแบบสอบถามที่ deadlocks: SELECT TOP 33 r.tenantid FROM Table_r r INNER JOIN Table_cm cm ON r.MyKey=cm.MyKey INNER JOIN Table_pe pe ON r.MyKey=pe.MyKey WHERE r.TenantId = 69 AND pe.TenantId = 69 AND cm.TenantId = 69 ข้อความผิดพลาด: ทรานแซคชัน …

1
ค่าใช้จ่ายของแถวเมื่อใช้การบีบอัดหน้า?
ฉันสร้างตารางที่มี 650 คอลัมน์ (19,4) คอลัมน์ เมื่อฉันเปิดการบีบอัดหน้าโดยเรียกใช้ ALTER TABLE fct.MyTable REBUILD WITH (DATA_COMPRESSION = PAGE); ฉันเข้าใจ ข่าวสารเกี่ยวกับ 1975, ระดับ 16, สถานะ 1 ดัชนี 'PK_Mytable' ความยาวแถวเกินความยาวสูงสุดที่อนุญาตได้ของ '8060' ไบต์ แต่ 650 ครั้ง 9 ไบต์มีเพียง 5850 ไบต์ซึ่งค่อนข้างไกลจากขีด จำกัด ที่ระบุไว้ที่ 8060 ไบต์ เซิร์ฟเวอร์กำลังเรียกใช้ Windows 2012 r2 ด้วย SQL Server 2016 SP1 CU2 ค่าใช้จ่ายของแถวเมื่อใช้การบีบอัดหน้า? นี่คือรหัสเพื่อแสดงสิ่งที่ฉันหมายถึง: /* …

1
ไม่มีดัชนีที่ไม่ได้ทำคลัสเตอร์เป็นส่วนหนึ่งของดัชนีที่ทำคลัสเตอร์แล้ว
ฉันกำลังดีบักเคียวรีที่รันช้าและในแผนการดำเนินการขอแนะนำให้ใช้ดัชนีที่ไม่ใช่คลัสเตอร์โดยมีผลกระทบ 51.6648 อย่างไรก็ตามดัชนีที่ไม่ทำคลัสเตอร์จะมีเฉพาะคอลัมน์ที่อยู่ในดัชนีคอมโพสิตคีย์หลัก (PK) แล้วเท่านั้น อาจเป็นเพราะลำดับของคอลัมน์ในดัชนีหรือไม่ เช่นถ้าคอลัมน์ในดัชนีคลัสเตอร์ไม่เรียงลำดับจากส่วนใหญ่ถึงน้อยที่สุดแล้วมีความเป็นไปได้ที่จะมีดัชนีที่ไม่รวมกลุ่มเพื่อปรับปรุงประสิทธิภาพหรือไม่ นอกจากนี้ดัชนีที่ไม่ทำคลัสเตอร์จะมีคอลัมน์ PK สองในสามเท่านั้นโดยที่คอลัมน์ที่สามนั้นถูกเพิ่มเป็นคอลัมน์ที่รวมไว้ เป็นincludeอีกสาเหตุหนึ่งที่ทำไมการใช้ดัชนีที่ไม่ทำคลัสเตอร์อาจจะดีที่สุด? ด้านล่างเป็นตัวอย่างของโครงสร้างตารางที่ฉันทำงานด้วย: Tables- Retailers ( RetailerID int PK, name ...) Retailer_Relation_Types ( RelationType smallint PK, Description nvarchar(50) ...) Retailer_Relations ( RetailerID int PK FK, RelatedRetailerID int PK FK, RelationType smallint PK FK, CreatedOn datetime ...) ตารางRetailer_Relationsมีดัชนีคอมโพสิต PK ต่อไปนี้และดัชนีแนะนำ CONSTRAINT PK_Retailer_Relations …

1
เมื่อคุณมี“ sql_exit_invoked” ใน System Health หมายความว่าอย่างไร
ฉันมีปัญหากับหนึ่งในเซิร์ฟเวอร์มาตรฐาน SQL Server 2016 ฉันมีเซิร์ฟเวอร์ที่ใช้งานจริง 8 แห่งและเซิร์ฟเวอร์นี้เป็นเซิร์ฟเวอร์เดียวที่ล้มเหลวแบบสุ่มโดยไม่มีการติดตามในบันทึก ฉันเปิดใช้งาน system_health อยู่ ฉันสังเกตเห็นว่าฉันมีแถวในแม่มดสุขภาพระบบคือ "sql_exit_invoked" ฉันพยายามหาข้อมูลเพิ่มเติมในแถวนั้น มันหมายความว่าอะไร? ข้อมูลเดียวที่ฉันค้นพบผ่านอินเทอร์เน็ตคือมันเกิดขึ้นเมื่อ SQLExit () ถูกเรียกใช้และมันถูกบันทึกไว้ตั้งแต่ SQL 2012 (ลิงก์มีอยู่ในเว็บไซต์ msdn ) ดังนั้นคำถามของฉันคือ: ฉันควรกังวลที่จะเห็นสิ่งนี้ในบันทึกของฉัน? ฉันพบสิ่งนี้บนเซิร์ฟเวอร์ที่มีปัญหาของฉันเท่านั้นไม่ใช่เซิร์ฟเวอร์อื่น ๆ อีก 7 เครื่อง (ทั้งหมดเป็นรุ่นมาตรฐานของ SQL Server 2016) ใครสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้กับฉันได้บ้าง

1
การวัดการขับไล่แผน
เรามี SQL Server 2016 SP1 โดยมีหน่วยความจำสูงสุดตั้งไว้ที่ 24GB เซิร์ฟเวอร์นี้มีคอมไพล์จำนวนมากโดยมีเพียง 10% ของคอมไพล์เหล่านี้มาจากคิวรี Ad-Hoc ดังนั้นแผนที่รวบรวมใหม่ควรเก็บไว้ในแผนแคช แต่ขนาดของแผนแคชจะไม่เพิ่มขึ้น (ประมาณ 3.72GB) ฉันสงสัยว่ามีแรงกดดันหน่วยความจำท้องถิ่นที่นำไปสู่การลบแผนจากแคช ขีดจำกัดความดันแคชของแผนคือ 5GB (75% ของหน่วยความจำเป้าหมายที่มองเห็นได้จาก 0-4GB + 10% ของหน่วยความจำเป้าหมายที่มองเห็นได้จาก 4GB-64GB + 5% ของหน่วยความจำเป้าหมายที่มองเห็น> 64GB) เมื่อ cachestore ถึง 75% ของขีด จำกัด แรงดันควรลบแผนออกจากแคช ในกรณีของฉัน 75% จาก 5 GB คือ 3.75GB ดังนั้นจึงเป็นไปได้ที่จะเป็นสาเหตุของการคอมไพล์สูง มีวิธีวัด (perfmon, Extended events, ... ) …

3
โซลูชันสำหรับการกำหนดค่าเฉพาะให้กับแถวด้วยระยะการทำงานร่วมกันที่ จำกัด
ฉันมีตารางที่สามารถสร้างและเติมด้วยรหัสต่อไปนี้: CREATE TABLE dbo.Example(GroupKey int NOT NULL, RecordKey varchar(12) NOT NULL); ALTER TABLE dbo.Example ADD CONSTRAINT iExample PRIMARY KEY CLUSTERED(GroupKey ASC, RecordKey ASC); INSERT INTO dbo.Example(GroupKey, RecordKey) VALUES (1, 'Archimedes'), (1, 'Newton'), (1, 'Euler'), (2, 'Euler'), (2, 'Gauss'), (3, 'Gauss'), (3, 'Poincaré'), (4, 'Ramanujan'), (5, 'Neumann'), (5, 'Grothendieck'), (6, 'Grothendieck'), …

2
การเปิดใช้ Query Store บน msdb มีประโยชน์อย่างไร
ของที่เก็บแบบสอบถามฐานข้อมูลระบบ SQL (ต้นแบบรุ่น msdb, tempdb) สามารถใช้ได้บน msdb เท่านั้น ฉันค้นหาและไม่พบเอกสารใด ๆ เกี่ยวกับที่เก็บแบบสอบถามใน msdb แม้ว่าคุณจะไม่เห็นใน GUI แต่ก็สามารถตรวจสอบได้ในอินสแตนซ์ SQL 2016 ของคุณ Validate Query Store ปิดอยู่ USE msdb SELECT * FROM sys.database_query_store_options; เปิด Query Store USE [master] GO ALTER DATABASE msdb SET QUERY_STORE = ON GO ALTER DATABASE msdb SET QUERY_STORE (OPERATION_MODE = READ_WRITE …

3
วิธีการใบ้การเข้าร่วมหลายคนใน SQL Server
ฉันมี 3 "ใหญ่" ตารางที่เข้าร่วมในคอลัมน์ (ทั้งสองint) ตารางที่ 1 มีประมาณ 200 ล้านแถว ตารางที่ 2 มีประมาณ 1.5 ล้านแถว ตารางที่ 3 มีประมาณ 6 ล้านแถว แต่ละตารางมีดัชนีคลัสเตอร์บนKey1, Key2และจากนั้นหนึ่งคอลัมน์อื่น ๆ Key1มี cardinality ต่ำและเบ้มาก มันถูกอ้างอิงอยู่เสมอในWHEREข้อ Key2ไม่เคยถูกกล่าวถึงในWHEREข้อ การเข้าร่วมแต่ละครั้งมีหลายต่อหลายคน ปัญหาเกิดขึ้นจากการประมาณเชิงปริมาณ การประมาณผลลัพธ์ของการรวมแต่ละครั้งจะเล็กลงแทนที่จะใหญ่ขึ้น ซึ่งจะส่งผลในการประมาณการขั้นสุดท้ายของหลายร้อยต่ำเมื่อผลลัพธ์ที่แท้จริงเป็นล้าน มีวิธีใดบ้างที่ฉันจะรู้ว่า CE เป็นตัวประมาณการที่ดีกว่า? SELECT 1 FROM Table1 t1 JOIN Table2 t2 ON t1.Key1 = t2.Key1 AND t1.Key2 = …

1
นายหน้าบริการ - อายุการสนทนาหรือไม่
เราพยายามให้ Service Broker ทำงานในสภาพแวดล้อมของเราเพื่อแก้ไขปัญหาทางธุรกิจ ฉันไม่รู้ว่าชื่อข้อความนั้นดีหรือไม่ แต่คำถามของฉันอยู่ด้านล่าง แต่มันอาจไม่ใช่คำถามที่ดีดังนั้นหลังจากนั้นคือสิ่งที่เรากำลังทำอยู่และทำไมฉันจึงคิดว่ามันเป็นคำถามที่ถูกต้อง ควรส่งข้อความในการสนทนากี่ข้อความก่อนที่จะสิ้นสุดการสนทนา เราต้องการใช้ Service Broker เพื่ออัพเดทตารางผลลัพธ์แบบอะซิงโครนัส ตารางผลลัพธ์แบนและรวดเร็ว เรามีทริกเกอร์ในตารางฐานที่ส่งข้อความพร้อมกับตารางและคีย์หลัก เรามีสามคิว: เวลาตอบสนองต่ำ - เป้าหมายคือ 15 วินาทีในการประมวลผล มันจัดการรายการที่เปลี่ยนแปลงที่เกี่ยวข้องกับรายการที่เฉพาะเจาะจง คิวจำนวนมาก - วัตถุประสงค์คือ 5 นาทีในการดำเนินการ มันจัดการเมื่อมีการเปลี่ยนแปลงบางอย่างที่มีผลต่อหลายร้อย (หรือหลายพัน) รายการ มันแบ่งรายชื่อของรายการที่ได้รับผลกระทบและฟีดพวกเขาไปยังคิวเวลาแฝงต่ำรอการตัดบัญชี เวลารอตอบสนองต่ำรอการตัดบัญชี - วัตถุประสงค์คือ 30 นาทีในการดำเนินการ สิ่งนี้จะประมวลผลรายการ แต่จากคิวจำนวนมากเท่านั้น โดยทั่วไปหากข้อมูลของลูกค้าอัพเดท ที่มีผลต่อผลิตภัณฑ์จำนวนมากเพื่อให้ส่งไปยังคิวจำนวนมากเพื่อการประมวลผลที่ช้าลง อย่างไรก็ตามหากผลิตภัณฑ์ได้รับการอัพเดตผลิตภัณฑ์นั้นจะถูกส่งไปยังคิวเวลาแฝงต่ำ เราใช้การสนทนาที่คล้ายกับบล็อกของ Remus Rusanu อีกครั้งhttp://rusanu.com/2007/04/25/reusing-conversations/ยกเว้นว่าเราดำเนินการตามโมดูลัสของคีย์หลัก สิ่งนี้มีประโยชน์ด้านการช่วยเหลือในการทำซ้ำของคีย์หลัก ดังนั้นเราจึงใช้การสนทนาอีกครั้งและอยู่ในหลักเกณฑ์ของเรา ด้วยสองเธรดฉันสามารถเขียนข้อความถึง 125 ข้อความ / …

1
สร้างดัชนีออฟไลน์ใหม่บนตารางที่แบ่งพาร์ติชัน
ถ้าฉันตารางพาร์ทิชันด้วยntext, textหรือimageประเภทข้อมูลและสร้างดัชนีบนพาร์ติชันเดียวที่มีonline = offไม่ว่าล็อคตารางทั้งหมดหรือเพียงแค่พาร์ทิชันในคำถาม?

1
การเปลี่ยนการตั้งค่าหน่วยความจำสูงสุดจะทำให้แผนการค้นหาไม่ถูกต้องหรือไม่
ฉันเพิ่งลดหน่วยความจำสูงสุดจากค่าเริ่มต้น (ไม่ จำกัด ) ลงเหลือ 20 GB สิ่งนี้ลบข้อความค้นหาที่เก่าที่สุดในแคชแผนหรือไม่

1
ฉันควรคาดหวังอะไรจากข้อ จำกัด ขนาดใหญ่ของเซิร์ฟเวอร์ SQL ที่เชื่อมโยง
ผลิตภัณฑ์ของเราใช้ Microsoft SQL Server ขณะนี้เรากำลังใช้ฐานข้อมูลสามฐานและปรับใช้กับฐานข้อมูล SQL Server เดียวเสมอ ฐานข้อมูลที่สามคือ OLTP, OLAP และการตรวจสอบ ฐานข้อมูล OLAP มีข้อมูลขาเข้าขนาดใหญ่บน EOD จากทั้ง OLTP และการตรวจสอบโดยใช้การสืบค้นข้ามฐานข้อมูล คำถาม หากเราต้องปรับใช้ฐานข้อมูลทั้งสามนี้ไปยังอินสแตนซ์ Standard Edition สามแยกภายในเซิร์ฟเวอร์จริงและผูกเข้าด้วยกันโดยใช้คุณสมบัติเซิร์ฟเวอร์ที่เชื่อมโยงของ SQL Server: รหัสสมัครจะโปร่งใสแค่ไหน? ฉันควรคาดหวังการเปลี่ยนแปลงมากแค่ไหน? ข้อมูลขาเข้าของ OLAP มีจำนวนแถว 50k-100k, น้ำหนักบรรทุก 200-500MB ต่อ EOD ฉันควรคาดหวังว่าจะมีประสิทธิภาพลดลงเท่าใด สิ่งที่ฉันควรคาดหวังมาก ๆ พื้นหลัง ขณะนี้เรากำลังทอยลูกค้ารายแรกที่มีผู้ใช้มากกว่า 500 คนพร้อมกัน เรากำลังร่างข้อกำหนดเซิร์ฟเวอร์ซึ่งรวมถึง 64 คอร์และ RAM 256GB สำหรับ SQL …

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