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

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

1
ข้อความ FlushCache ที่ปรากฏในบันทึกในเวลาที่กำหนด
เมื่อไม่นานมานี้เรามีปัญหาเกี่ยวกับประสิทธิภาพของฐานข้อมูลจำนวนมากและฉันพยายามที่จะดูว่าฉันสามารถหาสาเหตุได้หรือไม่ เราไม่มี DBA (ฉันเป็นผู้พัฒนาซอฟแวร์) ดังนั้นฉันจึงเป็นคนชักปีกและสิ่งที่ฉันพบว่าการอ่านออนไลน์เช่นภาษาต่างประเทศให้ฉัน เราได้รีสตาร์ท SQL Server ทุกเช้าเพราะนั่นเป็นวิธีเดียวที่จะเปิดให้บริการในระหว่างวันทำงาน ฉันสังเกตว่าทุกเช้าประมาณตี 5 เราเริ่มได้รับข้อความนี้ทุกสองนาทีในบันทึก: FlushCache: ทำความสะอาด 11848 bufs ด้วย 7432 เขียนใน 97168 ms (หลีกเลี่ยงสกปรก 8139 bufs ใหม่) สำหรับ db 9: 0 เป้าหมายสุดท้ายที่โดดเด่น: 4, avgWriteLatency 32 ปริมาณงานเฉลี่ย: 0.72 MB / วินาที, ความอิ่มตัวของ I / O: 11635, บริบทสวิตช์ 18849 ตัวเลขแตกต่างกันในแต่ละครั้งแน่นอน แต่มันเป็นข้อความเดียวกันซ้ำไปซ้ำมาในรูปแบบนั้นจนกว่าฉันจะรีสตาร์ทเซิร์ฟเวอร์ ฉันไม่แน่ใจว่าจะตีความสิ่งนี้อย่างไรฉันได้ลองใช้ Google เกี่ยวกับเรื่องนี้และสิ่งที่ฉันรวบรวมได้ทั้งหมดนั่นก็หมายความว่าอาจมีบางอย่างผิดปกติกับ …

1
ชุดข้อมูลสถิติ IO- โต๊ะทำงาน / ไฟล์งาน
ฉันกำลังดำเนินการแบบสอบถามที่สร้างแผน: สถิติ IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads …

5
เหตุใดการส่งข้อมูลที่ชัดเจนนี้ทำให้เกิดปัญหากับเซิร์ฟเวอร์ที่เชื่อมโยงเท่านั้น
ฉันกำลังสืบค้นข้อมูลจากเซิร์ฟเวอร์ที่เชื่อมโยงผ่านมุมมองบนเซิร์ฟเวอร์ต้นทาง มุมมองต้องรวมคอลัมน์มาตรฐานสองสามมาตรฐานเช่นCreated, ModifiedและDeleted, แต่ในกรณีนี้ตารางบนเซิร์ฟเวอร์ต้นทางไม่มีข้อมูลที่เหมาะสม คอลัมน์จึงถูกส่งไปยังประเภทที่เกี่ยวข้องอย่างชัดเจน ฉันอัปเดตมุมมองเปลี่ยนคอลัมน์จาก NULL AS Modified ไปยัง CAST(NULL as DateTime) as Modified อย่างไรก็ตามหลังจากดำเนินการอัปเดตนี้มุมมองกำลังเรียกใช้ข้อความแสดงข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 7341 ระดับ 16 สถานะ 2 บรรทัด 3 ไม่สามารถรับค่าแถวปัจจุบันของคอลัมน์ "(นิพจน์ที่ผู้ใช้สร้างขึ้น). Expr1002" จากผู้ให้บริการ OLE DB "SQLNCLI11" สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง "" เราได้ทำ "การแปลงที่ชัดเจน" โดยทั่วไปทั่วเซิร์ฟเวอร์ต้นทางโดยไม่ต้องกังวลและฉันสงสัยว่าปัญหาอาจเกี่ยวข้องกับรุ่นของเซิร์ฟเวอร์ที่เกี่ยวข้อง เราไม่จำเป็นต้องใช้นักแสดงนี้ แต่มันรู้สึกสะอาดขึ้น ตอนนี้ฉันแค่อยากรู้ว่าทำไมสิ่งนี้เกิดขึ้น รุ่นเซิร์ฟเวอร์ (ที่มา): Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 14 พฤษภาคม …

2
พูลการเชื่อมต่อถูกรีเซ็ตด้วยข้อผิดพลาด: 18056, ความรุนแรง: 20, สถานะ: 46. และตัวนับ Perfmon ไม่แสดง
เราใช้การรับรองความถูกต้องของ SQL (เพื่อลดจำนวนพูลการเชื่อมต่อ) & สตริงการเชื่อมต่อ. NET 4.0 เพื่อเชื่อมต่อกับ SQL Server Enterprise Edition 2012 SP1 บนเซิร์ฟเวอร์ Windows 2008 R2 Enterprise: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 19 ตุลาคม 2555 13:38:57 ลิขสิทธิ์ (c) Microsoft Corporation รุ่นองค์กร (64 บิต) บน Windows NT 6.1 (รุ่น 7601: Service Pack 1) เราใช้เซิร์ฟเวอร์ประมาณ 50 เซิร์ฟเวอร์แบ่งออกเป็น …

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] …

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
เหตุใด DELETE จึงมีผลกระทบต่อประสิทธิภาพอย่างมาก
ในตอนท้ายคือสคริปต์ทดสอบสำหรับเปรียบเทียบประสิทธิภาพระหว่างตัวแปร @table และตาราง #temp ฉันคิดว่าฉันตั้งค่าไว้อย่างถูกต้อง - การกำหนดเวลาการทำงานนั้นเกิดขึ้นนอกคำสั่ง DELETE / TRUNCATE ผลลัพธ์ที่ฉันได้รับมีดังนี้ (คูณเป็นมิลลิวินาที) @Table Variable #Temp (delete) #Temp (truncate) --------------- -------------- ---------------- 5723 5180 5506 15636 14746 7800 14506 14300 5583 14030 15460 5386 16706 16186 5360 เพียงเพื่อให้แน่ใจว่าฉันมีสติสิ่งนี้แสดงให้เห็นว่า CURRENT_TIMESTAMP (aka GetDate()) ถูกนำมาใช้ในเวลาของคำสั่งไม่ใช่ของแบตช์ดังนั้นจึงไม่มีการโต้ตอบระหว่าง TRUNCATE / DELETE กับSET @StartTime = CURRENT_TIMESTAMPคำสั่ง select current_timestamp …

1
อะไรคือกายวิภาคของดัชนีคอลัมน์
หนึ่งในคุณสมบัติใหม่ในชื่อรหัส SQL Server 2012 Denaliคือดัชนี Columnstore ฉันรู้ดีเกี่ยวกับดัชนีการจัดเก็บแถวเก่าทั่วไปเช่นโครงสร้าง b-tree ความแตกต่างในการจัดเก็บระหว่างระดับลีฟและเพจ b-tree ผลกระทบของฟิลด์ที่รวมไว้การปรับให้เหมาะสมเพื่อใช้งานลำดับของคีย์เป็นต้น ฉันมีปัญหาในการรับข้อมูลที่ดีเกี่ยวกับinternalsของดัชนี columnstore มันเป็นโครงสร้างอย่างไร มีต้นไม้ b หรือไม่? มีโครงสร้างอื่น ๆ ในสถานที่? มีการจัดระเบียบข้อมูลอย่างไร ตัวดำเนินการเฉพาะประเภทใดที่เหมาะสมที่สุดที่จะใช้ มีรูปแบบการต่อต้านแบบอื่นที่ควรหลีกเลี่ยงเมื่อใช้งาน? สิ่งที่ฉันสามารถค้นหาเกี่ยวกับพวกเขานั้นเป็นสิ่งที่ตรงกันข้ามกับดัชนี "ปกติ" คือไม่มีการเรียงลำดับของคีย์ไม่มีเขตข้อมูลที่รวมไม่รวมอยู่เท่านั้น ข้อมูลเชิงลึกใด ๆ ที่ชื่นชม

2
การตรวจจับตารางหรือแถวที่ถูกล็อคใน SQL Server
ฉันกำลังพยายามทำความเข้าใจ / เรียนรู้วิธีติดตามรายละเอียดของเซสชันที่ถูกบล็อก ดังนั้นฉันจึงสร้างการตั้งค่าต่อไปนี้: create table foo (id integer not null primary key, some_data varchar(20)); insert into foo values (1, 'foo'); commit; ตอนนี้ฉันเชื่อมต่อกับฐานข้อมูลสองครั้งจากลูกค้าที่แตกต่างกันสองคน ปัญหาเซสชั่นแรก: begin transaction update foo set some_data = 'update' where id = 1; ฉันไม่ได้กระทำอย่างชัดเจนเพื่อรักษาล็อค ในเซสชั่นที่สองฉันออกคำสั่งเดียวกันและแน่นอนว่าหนึ่งรอเนื่องจากการล็อค ตอนนี้ฉันกำลังพยายามใช้คิวรี่ที่ต่างกันเพื่อดูว่าเซสชัน 2 กำลังรอfooตารางอยู่ sp_who2 แสดงต่อไปนี้ (ฉันลบบางคอลัมน์เพื่อแสดงเฉพาะข้อมูลสำคัญ): SPID | สถานะ | BlkBy | …

1
จะปลอดภัยหรือไม่ที่จะพึ่งพาคำสั่งของส่วนคำสั่งเอาท์พุทของ INSERT?
รับตารางนี้: CREATE TABLE dbo.Target ( TargetId int identity(1, 1) NOT NULL, Color varchar(20) NOT NULL, Action varchar(10) NOT NULL, -- of course this should be normalized Code int NOT NULL, CONSTRAINT PK_Target PRIMARY KEY CLUSTERED (TargetId) ); ในสองสถานการณ์ที่แตกต่างกันเล็กน้อยฉันต้องการแทรกแถวและคืนค่าจากคอลัมน์ข้อมูลประจำตัว สถานการณ์ 1 INSERT dbo.Target (Color, Action, Code) OUTPUT inserted.TargetId SELECT t.Color, t.Action, …

2
ล็อคสร้างตาราง
ในแอปพลิเคชันอื่นฉันรู้สึกประทับใจกับการออกแบบที่ไม่ดี: มีหลายเธรดที่รันEnsureDatabaseSchemaExists()เมธอดพร้อมกันซึ่งมีลักษณะดังนี้: IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'MyTable') AND type = N'U') BEGIN CREATE TABLE MyTable ( ... ); END อย่างไรก็ตามแม้ว่าจะดำเนินการในการทำธุรกรรม SERIALIZABLE รหัสนี้ดูเหมือนจะไม่ปลอดภัยต่อเธรด (เช่นรหัสขนานพยายามสร้างตารางหลายครั้ง) มีโอกาสที่จะบังคับให้คำสั่ง SELECT ได้รับการล็อกซึ่งป้องกันเธรดอื่นให้ทำคำสั่ง SELECT ที่เหมือนกันหรือไม่? มีรูปแบบที่ดีกว่าสำหรับวิธีการแบบมัลติเธรด -CheckSchemaExists () หรือไม่?

3
คำสั่ง SQLCMD ไม่สามารถแทรกเครื่องหมายเน้นเสียงได้
ฉันพยายามเรียกใช้sqlcmd.exeเพื่อตั้งค่าฐานข้อมูลใหม่จากบรรทัดคำสั่ง ฉันใช้ SQL SERVER Express 2012 บน Windows 7 64 บิต นี่คือคำสั่งที่ฉันใช้: SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log และนี่คือสคริปต์สร้างไฟล์ sql: CREATE DATABASE aqualogy COLLATE Modern_Spanish_CI_AS WITH TRUSTWORTHY ON, DB_CHAINING ON; GO use aqualogy GO CREATE TABLE [dbo].[BaseLayers] ( [Code] nchar(100) NOT NULL , [Geometry] nvarchar(MAX) NOT …

3
ตัวระบุที่ไม่ซ้ำกับอักขระพิเศษที่ยังจับคู่ในการเลือก
เรากำลังใช้ SQL Server 2012 ด้วยตัวระบุที่ไม่ซ้ำกันและเราสังเกตว่าเมื่อทำการเลือกด้วยอักขระเพิ่มเติมที่เพิ่มเข้ามาในตอนท้าย (ไม่ใช่ 36 ตัวอักษร) มันยังคงส่งคืนการจับคู่กับ UUID ตัวอย่างเช่น: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' ส่งกลับแถวที่มี 7DA26ECB-D599-4469-91D4-F9136EC0B4E8uuid แต่ถ้าคุณวิ่ง: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS' ก็ยังส่งกลับแถวที่มี 7DA26ECB-D599-4469-91D4-F9136EC0B4E8uuid SQL Server ดูเหมือนจะไม่สนใจอักขระทั้งหมดที่เกิน 36 เมื่อทำการเลือก นี่เป็นข้อบกพร่อง / คุณสมบัติหรือสิ่งที่สามารถกำหนดค่าได้หรือไม่? มันไม่ได้เป็นปัญหาใหญ่เท่าที่เรามีการตรวจสอบในส่วนหน้าสำหรับความยาว แต่ดูเหมือนว่าพฤติกรรมที่ไม่ถูกต้องสำหรับฉัน

6
SQL Server“ Denali” คืออะไร? มีอะไรใหม่
ฉันพบชื่อใหม่ที่เรียกว่าSQL Server "Denali"ในรายการแบบหล่นลงบน MSDN แต่ฉันไม่พบข้อมูลเกี่ยวกับมันมากนัก: มีอะไรใหม่ (เอกสารนี้ใช้สำหรับดูตัวอย่างเท่านั้นที่ฉันเห็น) คุณสมบัติใหม่ 9 อันดับแรกของ SQL Server "Denali" ใครบ้างมีข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัติใหม่หรือแก้ไขข้อผิดพลาดที่สำคัญในรุ่นนี้? ฉันหวังว่ามีคนใช้หรือทดสอบ คุณสมบัติใหม่ ลำดับ ขยาย FILESTREAM (ขอบคุณEric Humphrey ) OFFSET & FETCH (เรียงตามข้อ) การเปลี่ยนแปลงตัวจัดการหน่วยความจำ LAG (.. ) และLEAD (.. ) .. OVER (Partition By..Order By) clause (ขอบคุณgbn ) รายชื่อของแอรอน

3
คัดลอกแผนการบำรุงรักษาไปยังเซิร์ฟเวอร์อื่น
มีวิธีคัดลอกแผนการบำรุงรักษาจาก SQL Server 2012 หนึ่งไปยังอีกแผนหนึ่งหรือไม่ เซิร์ฟเวอร์ทั้งสองไม่สามารถเข้าถึงได้ผ่านสำเนาของ Studio จัดการในเวลาเดียวกัน (ในเครือข่ายที่แตกต่างกัน)

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