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

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

1
SQLCLR ชนิดรอในการตรวจสอบกิจกรรมภายใน SQL Server Management Studio (SSMS) คืออะไร
เมื่อฉันตรวจสอบเซิร์ฟเวอร์ SQL Prod ของฉันทุกครั้งที่ฉันเปิดการตรวจสอบกิจกรรมฉันจะเห็นSQLCLRรายการแรกในส่วนรอทรัพยากรในการตรวจสอบกิจกรรม มันมีจำนวนสูงเสมอ มีSQLCLRไว้เพื่ออะไร มันจะไม่ดีสำหรับเซิร์ฟเวอร์ที่SQLCLRมีจำนวนรอทรัพยากรสูงในการตรวจสอบกิจกรรม?

3
การสำรองหลายฐานข้อมูลไปยังจุดเดียวกันในเวลา
โดยปกติเมื่อเราเริ่มการสำรองข้อมูลเราไม่อนุญาตให้มีการเปลี่ยนแปลงการกระทำหรือฐานข้อมูลจะไม่สามารถเข้าถึงได้ ฉันหมายถึงฐานข้อมูลจะอยู่ในโหมดผู้ใช้คนเดียว แต่ฉันต้องการเริ่มการสำรองข้อมูลและปล่อย db สำหรับการใช้งาน นอกจากนี้เมื่อฉันเริ่มการสำรองข้อมูลฉันไม่ต้องการให้การเปลี่ยนแปลงอย่างต่อเนื่องถูกเขียนลงในไฟล์สำรอง ฉันต้องการทราบว่าฉันสามารถบรรลุสิ่งนี้ใน Microsoft SQL Server 2012 ได้อย่างไรโปรดช่วยฉันด้วย ให้ฉันอธิบายปัญหาของฉันก่อน ขณะนี้ฉันกำลังตั้งค่าฐานข้อมูลเป็นโหมดผู้ใช้คนเดียวจนกว่าการสำรองข้อมูลจะเสร็จสมบูรณ์ โหมดนี้จะให้บริการตามวัตถุประสงค์ของฉันในการหลีกเลี่ยงการเปลี่ยนแปลงข้อมูลเมื่อมีการสำรองข้อมูลอยู่ แต่แอปพลิเคชันของฉันเชื่อมโยงกับหลายฐานข้อมูล (แต่ละฐานข้อมูลเชื่อมโยงกันและมี var dbs ที่สร้างขึ้นเป็นรายเดือน) ดังนั้นการสำรองฐานข้อมูลเหล่านี้จึงเป็นกระบวนการที่น่าเบื่อและที่สำคัญฉันต้องป้องกันไม่ให้ผู้ใช้ออกจากระบบเมื่อมีการสำรองข้อมูล ดังนั้นฉันกำลังมองหากลไกการสำรองข้อมูลซึ่งจะตอบสนองความต้องการดังกล่าวด้านล่าง เริ่มการสำรองข้อมูล dbs ทั้งหมดในแต่ละครั้งและปล่อย db สำหรับการใช้งาน เนื่องจากฐานข้อมูลเชื่อมโยงกันฉันต้องการให้ความสอดคล้องของข้อมูลในไฟล์สำรอง ดังนั้นเนื่องจากข้อกำหนดความสอดคล้องของข้อมูลนี้ฉันไม่ต้องการให้การเปลี่ยนแปลงดำเนินไปกับไฟล์สำรองของฉัน สิ่งที่ฉันต้องการคือ - สำรองข้อมูล dbs ทั้งหมดในเวลาที่กำหนด

4
ค้นหา IP หรือผู้ใช้ทั้งหมดที่เข้าถึง SQL Server ที่ระบุ
สมมติว่าฉันพบ SQL Server และฉันไม่รู้ว่าแอปพลิเคชันใดที่เชื่อมต่อกับมัน บางทีฉันอาจพบแอปพลิเคชั่นเดียว แต่ฉันไม่แน่ใจว่าเป็นแอปพลิเคชั่นเดียวที่ใช้หรือไม่ มีวิธีที่ดีในการค้นหาการเชื่อมต่อที่แตกต่างกันทั้งหมดหรือไม่?

2
ปริมาณการใช้หน่วยความจำของ SQL Server 2012 ภายนอกพูลบัฟเฟอร์
ฉันมีอินสแตนซ์ของ SQL Server 2012 SP2 Enterprise Edition ที่ใช้หน่วยความจำประมาณ 20GB สูงกว่าค่าสูงสุด ขีด จำกัด หน่วยความจำ อินสแตนซ์ถูก จำกัด ที่ 65GB แต่หน่วยความจำกายภาพที่ใช้งานจากแบบสอบถามด้านล่างแสดง 86GB SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM sys.dm_os_process_memory; GO เซิร์ฟเวอร์มีอยู่จริงโดยมี 2 NUMA โหนด มีวิธีที่ฉันสามารถค้นหาสิ่งที่ใช้หน่วยความจำภายนอกของบัฟเฟอร์พูล (ฉันสมมติว่าเกิดอะไรขึ้น) นี่คือผลลัพธ์ของ DBCC MEMORYSTATUS: - และนี่คือขีด จำกัด หน่วยความจำที่ตั้งไว้: - ขอบคุณล่วงหน้า. ปรับปรุง: - ฉันเรียกใช้แบบสอบถามที่แอรอนแนะนำ SELECT TOP (20) * FROM sys.dm_os_memory_clerks …

1
ไวยากรณ์ของ INNER JOIN ซ้อนอยู่ภายใน OUTER JOIN เปรียบเทียบกับผลการสืบค้น
TLDR; หากคุณดูที่แผนปฏิบัติการ 2 แบบมีคำตอบที่ง่ายกว่ากันหรือไม่? ฉันไม่ได้ตั้งใจสร้างดัชนีเพื่อให้ง่ายต่อการดูว่าเกิดอะไรขึ้น การติดตามคำถามก่อนหน้าของฉันที่เราพบความแตกต่างของประสิทธิภาพการค้นหาระหว่างสไตล์การเข้าร่วมที่แตกต่างกัน (เช่นซ้อนกับดั้งเดิม) ฉันได้ตระหนักว่าไวยากรณ์ที่ซ้อนกันยังปรับเปลี่ยนพฤติกรรมของแบบสอบถาม พิจารณา 2 แบบสอบถามต่อไปนี้ SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m JOIN dbo.Manufacturers n -- <-- Nested INNER JOIN ON n.ManufacturerID = m.ManufacturerID ON m.ModelID = a.ModelID สิ่งนี้ไม่จำเป็นต้องทำให้ผู้ผลิตเข้าร่วมเพื่อรวมแถว auto กับ ModelID ที่ไม่ได้อยู่ในตาราง Models การใช้ไวยากรณ์แบบดั้งเดิมเราต้องเปลี่ยนการเข้าร่วมเป็นผู้ผลิตเป็นการรวมภายนอกเช่น ... แต่สิ่งนี้เปลี่ยนแผนแบบสอบถาม SELECT a.*, m.*, …

1
เหตุใดลำดับของ MS SQL Server จึงไม่มีพารามิเตอร์ ORDER เช่น Oracle
ในเอกสารประกอบของCREATE SEQUENCET-SQLคุณจะเห็นว่าCREATE SEQUENCEคำสั่งไม่มีORDERพารามิเตอร์ สำหรับการเปรียบเทียบเอกสาร Oracle สำหรับการCREATE SEQUENCEแสดงตัวเลือกORDER/ NOORDER: ORDER ระบุORDERเพื่อรับประกันว่าหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับการร้องขอ ข้อนี้มีประโยชน์ถ้าคุณใช้หมายเลขลำดับเป็นเวลาประทับ คำสั่งที่รับประกันนั้นมักจะไม่สำคัญสำหรับลำดับที่ใช้สร้างคีย์หลัก ORDERจำเป็นสำหรับการรับประกันการสั่งซื้อเท่านั้นหากคุณใช้ Oracle Database กับ Real Application Clusters หากคุณใช้โหมดเอกสิทธิ์เฉพาะบุคคลหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับเสมอ NOORDER ระบุNOORDERหากคุณไม่ต้องการรับประกันหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับการร้องขอ นี่คือค่าเริ่มต้น Microsoft SQL Server มีข้อ จำกัด ในการสั่งซื้ออย่างมากSEQUENCEหรือไม่ หรือ Microsoft ไม่เห็นว่าสำคัญโดยทั่วไปใช่หรือไม่

2
เพิ่มกำลังรอระหว่างจุดตรวจหลังจากอัพเกรดเป็นพื้นที่เก็บข้อมูลที่ดีขึ้น
เมื่อเราย้ายจากแฟลชอาร์เรย์ทั้งหมดที่เก่ากว่าไปเป็นแฟลชอาร์เรย์ทั้งหมดที่ใหม่กว่า (ต่างกัน แต่เป็นผู้จำหน่ายที่ได้รับการยอมรับ) เราเริ่มเห็นการรอคอยเพิ่มขึ้นใน SQL Sentry ระหว่างจุดตรวจ เวอร์ชัน: SQL Server 2012 Sp4 ในที่เก็บข้อมูลเก่าของเราการรอคอยของเราอยู่ที่ประมาณ 2k ด้วย "spikes" ถึง 2,500 ในระหว่างการตรวจสอบกับที่เก็บข้อมูลใหม่ spikes มักจะ 10k กับยอดใกล้ 50k ยามชี้ให้เราเห็นว่ามีความPAGEIOLATCHสุขมากขึ้น ทำการวิเคราะห์ของเราเองดูเหมือนว่าจะเป็นการรวมกันของPAGEIOLATCH and PAGELATCHรอ การใช้ Perfmon โดยทั่วไปเราสามารถพูดได้ว่ายิ่งมีด่านมากขึ้นเท่าไรเราก็ยิ่งได้รับมากขึ้นเท่านั้น ภาระงานของเราส่วนใหญ่จะเขียน (แทรก / ปรับปรุงเป็นหลัก) ผู้จำหน่ายอุปกรณ์จัดเก็บได้พิสูจน์ให้เราเห็นแล้วว่าอาร์เรย์ที่ต่อตรงกับ Fibre Channel นั้นตอบสนองย่อย 1 ms ในระหว่างเหตุการณ์จุดตรวจสอบเหล่านี้ HBA ยังยืนยันหมายเลขของอาเรย์ด้วย เรายังไม่เชื่อว่าเป็นปัญหาการเข้าคิว HBA เนื่องจากความลึกของคิวไม่เคยสูงกว่า 8 เราได้ลองใช้ HBA …

1
sp_cursorprepexec ทำให้ 53 ล้านอ่าน?
เรากำลังเรียกใช้การติดตั้ง Dynamics AX 2012 ด้วย SQL Server 2012 ฉันรู้ว่าเคอร์เซอร์ไม่ควรใช้อีกต่อไป แต่ AX กำลังใช้มันและเราไม่สามารถเปลี่ยนพฤติกรรมนี้ดังนั้นเราจึงต้องทำงานกับมัน วันนี้ฉันได้รับข้อความค้นหาที่แย่มากโดยมีผู้อ่านมากกว่า 53 ล้านคนและเวลาดำเนินการมากกว่า 20 นาที ฉันตรวจสอบข้อความค้นหานี้ผ่านเครื่องมือตรวจสอบของเรา SentryOne declare @p1 int set @p1=1073773227 declare @p2 int set @p2=180158805 declare @p5 int set @p5=16 declare @p6 int set @p6=1 declare @p7 int set @p7=2 exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 bigint,@P2 …

2
แผนแบบสอบถามส่วนใหญ่สร้างขึ้นใหม่ใน 4 ชั่วโมงที่ผ่านมา
ฉันมีปัญหากับประสิทธิภาพของฐานข้อมูล SQL Server ของฉัน ฉันได้พบเครื่องมือนี้sp_BlitzCache หลังจากรันคำสั่งฉันได้รับข้อความนี้: คุณมีแผนสร้าง 92.00% ใน 24 ชั่วโมงที่ผ่านมาและสร้างขึ้น 92.00% ใน 4 ชั่วโมงที่ผ่านมา ขณะที่ฉันระบุปัญหา (โดยใช้ SQL Server Profiler ฉันได้ตรวจสอบเหตุการณ์ที่เกิดขึ้นของ StmtRecompile) ฉันสามารถค้นหาข้อความค้นหาแบบเต็มเพียงไม่กี่คำที่สร้างขึ้นมาใหม่บ่อยครั้ง อย่างไรก็ตามข้อความค้นหาแบบเต็มจะแสดงเพียง 5% ของคำค้นหาทั้งหมด คุณมีข้อเสนอแนะอะไรบ้างที่อาจทำให้แผนพักผ่อนที่เหลืออยู่ 87% เป็นไปได้? ฉันมี SQL Server 2012 (รุ่น 11.0.6567.0) แก้ไข: ฉันเพิ่มเคาน์เตอร์วัดประสิทธิภาพแล้ว +---------------------------+--------------------------------+--------------+ | object_name | counter_name | cntr_value | +---------------------------+--------------------------------+--------------+ | SQLServer:Buffer Manager | …

3
แผนการดำเนินการไม่ได้ใช้ INDEX แต่ใช้การสแกนตาราง
ฉันรู้ว่าเมื่อใช้ดัชนีหรือการสแกนตาราง SQL Server จะใช้สถิติเพื่อดูว่าอันไหนดีกว่า ฉันมีตารางที่มี 20 ล้านแถว ฉันมีดัชนีใน (SnapshotKey, การวัด) และแบบสอบถามนี้: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group by Measure, SnapshotKey, MeasureBand แบบสอบถามส่งคืนแถว 500k ดังนั้นแบบสอบถามจึงเลือกเพียง 2.5% ของแถวของตาราง คำถามคือทำไม SQL Server ไม่ใช้ดัชนี nonclustered ฉันมีและใช้การสแกนตารางแทน? มีการอัพเดทสถิติ ดีที่จะพูดถึงว่าประสิทธิภาพของแบบสอบถามนั้นดี สแกนตาราง ดัชนีบังคับ โครงสร้างตาราง / ดัชนี CREATE TABLE [t1]( [SnapshotKey] [int] NOT …

1
เหตุใดฐานข้อมูล MSDB จึงเชื่อถือได้
การTRUSTWORTHYตั้งค่าอาจค่อนข้างอันตรายหากคุณไม่ระวังและยกเว้นในบางกรณีคำแนะนำคือให้ปิดไว้ อย่างไรก็ตามโดยค่าเริ่มต้นMSDBฐานข้อมูลได้TRUSTWORHTYตั้งค่าไว้ONตามค่าเริ่มต้น ฉันสงสัยว่าทำไม ฉันอ่านรายการนี้เป็นBOL แล้ว หมายเหตุโดยค่าเริ่มต้นการตั้งค่า TRUSTWORTHY ถูกตั้งค่าเป็น ON สำหรับฐานข้อมูล MSDB การเปลี่ยนแปลงการตั้งค่านี้จากค่าเริ่มต้นอาจส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดโดยคอมโพเนนต์ของ SQL Server ที่ใช้ฐานข้อมูล MSDB แต่ฉันอยากรู้เกี่ยวกับเฉพาะ ทำไมMSDBต้องTRUSTWORTHYเปิดใช้งานโดยเฉพาะ ฟังก์ชั่นใช้งานอะไร?

1
บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL ที่เริ่มการสิ้นสุดด้วยตนเอง
สำหรับเดือนที่ผ่านมาหนึ่งในเซิร์ฟเวอร์ของฉันกำลังประสบปัญหากับตัวแทนของเซิร์ฟเวอร์ SQL มันหยุดอัตโนมัติโดยมีข้อผิดพลาดด้านล่างซึ่งเกิดขึ้นแบบสุ่ม: ไฟล์เอาต์พุตเอเจนต์ Sql [097] ตรวจพบการรั่วไหลของหน่วยความจำ [204 ไบต์] ข้อยกเว้น 5 ตรวจพบที่บรรทัด 403 ของไฟล์ e: \ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp SQLServerAgent เริ่มต้นการยกเลิกด้วยตนเอง ฉัน googled ข้อผิดพลาดนี้ แต่ไม่ได้รับข้อมูลมากนัก ทั้ง SQL Server และ Agent ทำงานด้วยบัญชีโดเมนเดียวกัน อย่างไรก็ตามปัญหานี้เกิดขึ้นกับบริการตัวแทนการเซิร์ฟเวอร์ SQL เท่านั้น ฉันยังไม่สามารถดูบริการ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL …

2
ซีพียู Schedulers ออฟไลน์
ฉันลงชื่อเข้าใช้ระบบไคลเอนต์ใหม่และรัน sp_blitz เพื่อดูว่ามีอะไรสั่นไหว รายงานกลับมาว่า " CPU Schedulers Offline " ซึ่งเป็นตัวใหม่สำหรับฉัน คอร์ CPU บางตัวไม่สามารถเข้าถึง SQL Server ได้เนื่องจากปัญหาการปิดบังหรือความเกี่ยวข้องของสิทธิ์ใช้งาน ยุติธรรมพอฉันเรียกใช้แบบสอบถามพื้นฐาน SELECT DOS.is_online , DOS.status , DOS.* FROM sys.dm_os_schedulers AS DOS ORDER BY 1; รายงานกลับมาว่าฉันมี 8 ชุดให้มองเห็นแบบออฟไลน์ 43 เป็นออนไลน์ ตามความรู้ของฉันไม่มีใครที่ลูกค้ารายนี้จะตั้งค่าความสัมพันธ์ของ CPU ใด ๆ โดยเจตนา ฉันตัดสินใจที่จะดูว่าฉันสามารถถอดได้หรือไม่ เมื่อฉันดูที่หน้าต่างคุณสมบัติฉันเห็นโปรเซสเซอร์ 40 ตัวและไม่มีตัวใดที่ตั้งค่าให้มีความสัมพันธ์กัน ทำไมมี 40 รายการ 43 รายการใน dm_os_schedulers …

2
รายการข้อผิดพลาดการยกเลิกแบทช์ในเซิร์ฟเวอร์ SQL
ใน SQL Server ถ้า XACT_ABORT ปิดอยู่ข้อผิดพลาดบางอย่างจะยุติคำสั่งปัจจุบัน (ตัวอย่างเช่นการจัดหาจำนวนพารามิเตอร์ที่ไม่ถูกต้องให้กับกระบวนงานที่เก็บไว้ซึ่งใช้พารามิเตอร์บางตัว) และข้อผิดพลาดบางอย่างจะยกเลิกชุดทั้งหมด (ตัวอย่างเช่น ขั้นตอนที่ไม่ใช้พารามิเตอร์) [อ้างอิง]: http://www.sommarskog.se/error-handling-I.html#scope-abortion สิ่งที่ฉันอยากรู้คือว่ามีรายการที่ชัดเจนของข้อผิดพลาดที่มีการยกเลิกชุดและคนที่มีคำสั่งยกเลิก

1
สั่งซื้อโดยการเปรียบเทียบตัวอักษรและตัวเลขผสมกัน
เราจำเป็นต้องทำการรายงานบางอย่างเกี่ยวกับค่าที่มักจะรวมสตริงของตัวเลขและตัวอักษรที่ต้องเรียงลำดับ 'ตามธรรมชาติ' สิ่งที่ต้องการเช่น "P7B18" หรือ "P12B3" @ สายอักขระส่วนใหญ่จะเป็นลำดับของตัวอักษรจากนั้นจึงสลับตัวเลข จำนวนของกลุ่มเหล่านี้และความยาวของแต่ละกลุ่มอาจแตกต่างกันไป เราต้องการเรียงลำดับตัวเลขเหล่านี้ตามลำดับตัวเลข เห็นได้ชัดว่าถ้าฉันจัดการค่าสตริงเหล่านั้นโดยตรงด้วยORDER BY"P12B3" จะมาก่อน "P7B18" เนื่องจาก "P1" เก่ากว่า "P7" แต่ฉันต้องการย้อนกลับเพราะ "P7" อยู่ก่อน "P12" ฉันยังต้องการที่จะทำการเปรียบเทียบช่วงเช่น@bin < 'P13S6'หรือบางอย่างเช่น ฉันไม่ต้องจัดการกับจำนวนจุดลอยตัวหรือจำนวนลบ; สิ่งเหล่านี้จะเป็นจำนวนเต็มที่ไม่ติดลบที่เรากำลังทำอยู่ ความยาวสตริงและจำนวนของเซกเมนต์อาจเป็นไปได้เองโดยไม่ จำกัด ขอบเขต ในกรณีของเราปลอกสตริงนั้นไม่สำคัญแม้ว่าจะมีวิธีการในการเปรียบเทียบการเรียงตัว แต่คนอื่น ๆ อาจพบว่ามีประโยชน์ ส่วนที่น่าเกลียดที่สุดของทั้งหมดนี้คือฉันต้องการที่จะทำทั้งการสั่งซื้อและการกรองช่วงในWHEREข้อ ถ้าฉันทำสิ่งนี้ใน C # มันจะเป็นงานที่ค่อนข้างง่าย: ทำการแยกวิเคราะห์เพื่อแยกอัลฟาจากตัวเลขใช้ IComparable และคุณก็ทำได้โดยทั่วไป แน่นอนว่า SQL Server ไม่ได้เสนอฟังก์ชั่นที่คล้ายกันอย่างน้อยที่สุดเท่าที่ฉันทราบ ใครรู้เทคนิคที่ดีในการทำงานนี้หรือไม่? มีความสามารถเล็กน้อยเผยแพร่ในการสร้างประเภท CLR ที่กำหนดเองที่ใช้ …

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