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

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

1
sys.sql_logins.is_policy_checked หมายความว่ามีการตรวจสอบนโยบายหรือไม่
เมื่อฉันมองในผมเห็นคอลัมน์ที่เรียกว่าsys.sql_logins is_policy_checkedฉันสามารถเชื่อถือได้ว่านโยบายรหัสผ่านของฉันได้รับการตรวจสอบสำหรับการเข้าสู่ระบบทั้งหมดที่ค่าคอลัมน์นี้คือ1อะไร?

2
การแสดงข้อมูลเหตุการณ์ที่ขยายของเซิร์ฟเวอร์ SQL
เมื่อเร็ว ๆ นี้ฉันได้สำรวจโดยใช้ Extended Events ใน SQL Server เพื่อช่วยฉันเปรียบเทียบและเพิ่มประสิทธิภาพการค้นหาต่างๆ จนถึงตอนนี้เพื่อดูข้อมูลเหตุการณ์ที่ฉันใช้คุณลักษณะ "ดูข้อมูลสด" ใน SSMS ปัญหาที่ฉันพบคือปรากฏว่าฟีเจอร์ Live Events ใช้บัฟเฟอร์ภายในซึ่งหมายความว่าบางครั้งฉันต้องเรียกใช้แบบสอบถามหลายครั้งเพื่อรับข้อมูลเพื่อแสดงในหน้าต่าง ฉันจึงมีคำถามสองส่วนที่จะถาม: มีวิธีใดที่จะหลีกเลี่ยงความล่าช้านี้ในการรับเหตุการณ์ที่จะแสดงในฟีดสดหรือไม่? (ฉันกำลังทำสิ่งนี้ในฐานข้อมูลท้องถิ่นดังนั้นประสิทธิภาพจึงไม่เป็นปัญหา) ฟีดข้อมูลสดเป็นวิธีที่ดีที่สุดในการแสดงภาพข้อมูลกิจกรรมเพิ่มเติมหรือไม่ มีเครื่องมืออื่นใน SSMS หรือไม่ที่ปรับให้เข้ากับกรณีการใช้งานของฉันได้ดีขึ้น? UPDATE ตามที่ร้องขอนี่คือเซสชัน: CREATE EVENT SESSION [Simple Query Benchmarking] ON SERVER ADD EVENT sqlserver.sql_batch_completed(SET collect_batch_text=(1) ACTION(sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.sql_text) WHERE ([package0].[equal_boolean]([sqlserver].[is_system],(0)) AND [package0].[greater_than_uint64]([duration],(1000)))) ADD TARGET package0.ring_buffer WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=1 SECONDS,MAX_EVENT_SIZE=0 …

2
ผลลัพธ์ที่ไม่คาดคิดพร้อมตัวเลขสุ่มและประเภทการเข้าร่วม
ฉันมีสคริปต์ง่าย ๆ ที่ได้รับตัวเลขสุ่มสี่ตัว (1 ถึง 4) จากนั้นก็กลับมารวมกันเพื่อรับหมายเลข database_id ที่ตรงกัน เมื่อฉันรันสคริปต์ด้วย LEFT JOIN ฉันจะได้สี่แถวกลับมาทุกครั้ง (ผลลัพธ์ที่คาดหวัง) อย่างไรก็ตามเมื่อฉันเรียกใช้ด้วยการเข้าร่วมภายในฉันได้รับจำนวนแถวที่แตกต่างกัน - บางครั้งสองครั้งบางครั้งแปด เหตุผลไม่ควรมีความแตกต่างเพราะฉันรู้ว่าแถวที่มี database_ids 1-4 อยู่ในฐานข้อมูล และเนื่องจากเราเลือกจากตารางตัวเลขสุ่มที่มีสี่แถว (ซึ่งต่างจากการเข้าร่วมกับตาราง) จึงไม่ควรมีการส่งคืนเกินสี่แถว สิ่งนี้เกิดขึ้นทั้งใน SQL Server 2012 และ 2014 อะไรคือสาเหตุที่ทำให้ INNER JOIN ส่งกลับจำนวนแถวที่แตกต่างกัน /* Works as expected -- always four rows */ SELECT rando.RandomNumber, d.database_id FROM (SELECT 1 + …
16 sql-server  t-sql 

3
เวลาแฝงของเครือข่ายที่เพิ่มขึ้นจะทำให้ตารางล็อคใน MS SQL Server หรือไม่
ถ้าฉันโทรไปยังฐานข้อมูล SQL Server เพียงครั้งเดียวผ่านเครือข่ายเวลาแฝงที่สูงตารางจะล็อกเกิดขึ้นเนื่องจากเวลาแฝงนั้นหรือไม่ สมมติว่าฉันสืบค้นตาราง A สำหรับระเบียนบางรายการและ SQL Server ต้องส่งคืนข้อมูลนั้นผ่านเครือข่ายที่ช้า - จะมีการล็อกการอ่านบนตาราง A ในขณะที่เซิร์ฟเวอร์ส่งการตอบสนองผ่านเครือข่ายหรือ SQL Server ปล่อยการล็อกก่อนส่ง การตอบสนอง? นอกจากนี้คำตอบจะแตกต่างกันไปตามขนาดของการตอบสนองหรือไม่? ถ้ามันต้องคืน KB สองสามเทียบกับหลายร้อย MB นั่นจะสร้างความแตกต่างได้หรือไม่? การสร้างธุรกรรมที่ชัดเจนการเรียกใช้คิวรีและการปิดธุรกรรมจะทำให้ตารางล็อคเนื่องจากเห็นได้ชัดว่าระยะเวลาของธุรกรรมมีความสัมพันธ์กับเวลาแฝงของฉัน

5
รอการจัดการการกู้คืนโปรแกรมฐานข้อมูลล้มเหลว ตรวจสอบบันทึกข้อผิดพลาด SQL Server สำหรับสาเหตุที่เป็นไปได้ [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันลองติดตั้ง SQL2008R2 - SQL2012 - sql2014 2014-07-17 16:31:16.00 spid14s Error: 17190, Severity: 16, State: 1. 2014-07-17 16:31:16.00 spid14s Initializing the FallBack certificate failed with error code: 1, state: 20, error number: 0. 2014-07-17 16:31:16.00 spid14s Unable to initialize SSL encryption because a valid …

1
ASYNC_NETWORK_IO รอพิมพ์อะไรที่กังวลหรือไม่
ในการดูรายการของโพรซีเดอร์ที่เก็บไว้ซึ่งใช้เวลาในการประมวลผลนานจะมีความโดดเด่นที่ทำให้เกิดการรอคอยมากที่สุด อย่างไรก็ตามการรอนั้นส่วนใหญ่ (81%) เป็น ASYNC_NETWORK_IO และฉันรู้ว่าทำไม: กระบวนการที่เก็บไว้จะถ่ายโอนข้อมูลประมาณ 400 MB ในเอกสารอธิบายว่าสาเหตุของ ASYNC_NETWORK_IO คือไคลเอ็นต์ไม่สามารถตามกระแสข้อมูลได้และนั่นอาจเป็นจริง ฉันไม่แน่ใจว่าจะทำให้ลูกค้าติดตามได้อย่างไรเพราะมันคือการเรียกโพรซีเดอร์ที่เก็บไว้ผ่าน ADO.NET และเพียงแค่ประมวลผลชุดข้อมูล เมื่อได้รับข้อมูลนี้ฉันควรกังวลเกี่ยวกับประเภทรอ ASYNC_NETWORK_IO สำหรับกระบวนการนี้หรือไม่? จริง ๆ แล้วมันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่ ข้อมูลเพิ่มเติม: ฉันใช้ Service Pack 2 ของ SQL Server 2005 แอปไคลเอ็นต์อยู่ในกล่องเดียวกับ SQL Server (ฉันรู้ว่าฉันรู้ ... แต่ฉันไม่สามารถทำอะไรกับมันได้)

1
เหตุใดแบบสอบถามย่อยจึงใช้การขนานและการเข้าร่วมไม่ได้
เหตุใดเซิร์ฟเวอร์ SQL จึงใช้ความขนานเมื่อเรียกใช้แบบสอบถามนี้ซึ่งใช้แบบสอบถามย่อย แต่ไม่ใช้เมื่อเข้าร่วม เวอร์ชันการเข้าร่วมจะทำงานเป็นอนุกรมและใช้เวลาดำเนินการนานกว่าประมาณ 30 เท่า เข้าร่วมเวอร์ชัน: ~ 30 วินาที เวอร์ชันย่อยของแบบสอบถาม: <1 วินาที แก้ไข: แผนแบบสอบถามเวอร์ชัน Xml: เข้าร่วมเวอร์ชัน รุ่น SUBQUERY

4
ข้อผิดพลาดของ SQL Server 2008 R2: 15023 ผู้ใช้กลุ่มหรือบทบาทมีอยู่แล้ว
ฉันมีฐานข้อมูลทดสอบที่ฉันมีปัญหาเกี่ยวกับการอนุญาต ฉันไม่สามารถเข้าถึงฐานข้อมูลการรายงานและเอกสารความช่วยเหลือของแอปพลิเคชันบอกว่าต้องทำสิ่งต่อไปนี้: Resolution: 1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases. 2. Expand the security folder. 3. Select logins and right click on the <username> user and choose properties. 4. Click the User Mapping tab 5.Make sure the …

2
SQL Server 2012 คืนค่าการสำรองข้อมูลเป็นชื่อฐานข้อมูลใหม่
ฉันดูเหมือนจะจำได้ว่าในปี 2008 คุณสามารถคืนค่าสำเนาสำรองเป็นสำเนาใหม่ของฐานข้อมูลได้โดยการเปลี่ยนชื่อในช่อง "ฐานข้อมูลปลายทาง" จากตัวช่วยสร้างการคืนค่า มันจะสร้างฐานข้อมูลใหม่ซึ่งเป็นสำเนาของฐานข้อมูลต้นฉบับที่ถูกกู้คืนไปยังจุดที่คุณต้องการ ฉันยังไม่ได้ใช้ชีวิตเพื่อหาวิธีที่จะทำให้ SQL 2012 ทำสิ่งนี้ได้ ตอนนี้ฉันเข้าใจแล้ว (ขอบคุณ Aaron Bertrand) ที่สิ่งนี้ไม่ได้เปลี่ยนไปจริง ๆ และในปี 2012 นั้นทำให้ฉันชัดเจนมากขึ้นว่ากลยุทธ์นี้เป็นความคิดที่ไม่ดีตั้งแต่แรก! ดังนั้นสิ่งที่ฉันต้องทำคือ: สร้างฐานข้อมูลใหม่ 'MyDB_Copy' จากฐานข้อมูลที่มีอยู่ 'MyDB' โดยใช้ไฟล์สำรอง เรามีการสำรองข้อมูลเต็มรูปแบบทุกคืน (.bak) และ TLog ทุก ๆ 15 นาที (.trn) ฉันไม่ต้องการให้ 'MyDB' ที่มีอยู่ได้รับผลกระทบ / สัมผัสเลยเพราะมันเป็น "สด" หลังจาก MyDB_Copy ถูกสร้างขึ้นจากไฟล์สำรองข้อมูลเต็มรูปแบบหลักฉันต้องคืนค่าข้อมูลสำรอง TLog สองสามโหลเพื่อให้ได้เวลาที่แน่นอน

4
วิธีหยุดการประมวลผลสคริปต์ SQL
ฉันกำลังทำงานกับสคริปต์ sql และฉันต้องการหยุดสคริปต์ต่อไปหากเงื่อนไขบางอย่างไม่เป็นที่พอใจ เมื่อฉันเป็น Google ฉันพบว่า RaisError ที่มีระดับความรุนแรง 20 ระดับจะยุติการใช้งาน แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถใช้ตัวเลือกนั้น โปรดบอกฉันว่ามีทางเลือกอะไรบ้างที่จะหยุดการประมวลผลสคริปต์ SQL

1
SQL Server nvarchar (สูงสุด) vs nvarchar (n) มีผลต่อประสิทธิภาพ
นี่คือ SQL Server 2008 R2 SP2 ฉันมี 2 ตาราง ทั้งสองมีความเหมือนกัน (ข้อมูลและการจัดทำดัชนี) ยกเว้นตารางแรกมีคอลัมน์ VALUE เป็นและครั้งที่สองมีคอลัมน์เดียวกับnvarchar(max) nvarchar(800)คอลัมน์นี้รวมอยู่ในดัชนีที่ไม่ทำคลัสเตอร์ ฉันยังสร้างดัชนีคลัสเตอร์บนตารางทั้งสอง ฉันได้สร้างดัชนีอีกครั้ง ความยาวสตริงสูงสุดในคอลัมน์นี้คือ 650 ถ้าฉันเรียกใช้แบบสอบถามเดียวกันกับทั้งสองnvarchar(800)ตารางจะเร็วขึ้นอย่างต่อเนื่องหลาย ๆ ครั้งเร็วเป็นสองเท่า แน่นอนว่าดูเหมือนจะเอาชนะวัตถุประสงค์ของ "varchar" ตารางประกอบด้วย 800,000+ แถว แบบสอบถามควรดูประมาณ 110,000 แถว (ซึ่งเป็นสิ่งที่แผนประมาณการ) ตามสถิติของ io จะไม่มีลูกเทนนิสอ่านดังนั้นทุกอย่างดูเหมือนจะอยู่ในแถว แผนการดำเนินการเหมือนกันยกเว้นมีความแตกต่างเล็กน้อยในเปอร์เซ็นต์ต้นทุนระหว่างสองตารางและขนาดแถวโดยประมาณนั้นใหญ่กว่าด้วยnvarchar(max)(91 ไบต์เทียบกับ 63 ไบต์) จำนวนการอ่านก็ค่อนข้างเหมือนกัน ทำไมถึงแตกต่าง ===== Schema ====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT …

3
รีเซ็ตค่าตัวตน
ฉันมีตารางที่มีคอลัมน์ประจำตัว ในขณะที่กำลังพัฒนาฉันจะลบแถวเป็นครั้งคราวและเพิ่มอีกครั้ง แต่ค่าตัวตนต่าง ๆ เพิ่มขึ้นเรื่อย ๆ และไม่ได้เริ่มต้นจาก 1 เมื่อฉันเพิ่มพวกเขาอีกครั้ง ตอนนี้รหัสของฉันไปจาก 68 -> 92 และนี่ทำให้รหัสของฉันล่ม ฉันจะรีเซ็ตค่าตัวตนได้อย่างไร

7
เกิดข้อผิดพลาด 3154 ขณะกู้คืนข้อมูลสำรองโดยใช้ WITH REPLACE
ฉันติดตั้ง SQL 2012 ด้วย SP1 บนคอมพิวเตอร์ของฉันแล้ว test.bakฉันทำสำรองของฐานข้อมูล ฉันมีฐานข้อมูลที่มีชื่อtest2ซึ่งเป็นฐานข้อมูลเดียวกัน แต่ข้อมูลเปลี่ยนไป ฉันต้องการกู้คืนtest.bakผ่านtest2ฐานข้อมูล ฉันมักจะได้รับข้อผิดพลาด: ข้อผิดพลาด 3154: ชุดการสำรองข้อมูลจะมีการสำรองข้อมูลของฐานข้อมูลอื่นนอกเหนือจากฐานข้อมูลที่มีอยู่ ฉันเหนื่อย: ฉันถูก cliked test2 -> Restore database -> From device ฉันเลือกtest.bakและตรวจสอบWith Replaceแต่ฉันได้รับข้อผิดพลาด จากนั้นฉันก็พยายามคลิกขวา test2 -> Restore file and filegroups ฉันเลือกtest.bakและตรวจสอบWith Replaceแต่ฉันได้รับข้อผิดพลาด ฉันสามารถลบฐานข้อมูลเก่าของฉันแล้วคืนค่าการสำรองข้อมูลของฉันด้วยชื่อที่ถูกต้อง แต่เมื่อฉันใช้ SQL 2008 ฉันไม่มีปัญหาในการกู้คืนฐานข้อมูลที่มีอยู่ ดูเหมือนว่าตั้งแต่ฉันใช้ SQL2012 ฉันได้รับข้อผิดพลาดนี้มากมาย!

2
วิธีหลีกเลี่ยงการใช้ตัวแปรในส่วนคำสั่ง WHERE
ได้รับขั้นตอนการจัดเก็บ (ง่าย) เช่นนี้: CREATE PROCEDURE WeeklyProc(@endDate DATE) AS BEGIN DECLARE @startDate DATE = DATEADD(DAY, -6, @endDate) SELECT -- Stuff FROM Sale WHERE SaleDate BETWEEN @startDate AND @endDate END หากSaleตารางมีขนาดใหญ่SELECTอาจใช้เวลาดำเนินการนานเนื่องจากเครื่องมือเพิ่มประสิทธิภาพไม่สามารถปรับให้เหมาะสมเนื่องจากตัวแปรท้องถิ่น เราทดสอบการใช้ชิ้นSELECTส่วนด้วยตัวแปรจากนั้นจึงกำหนดวันที่ฮาร์ดโค้ดและเวลาดำเนินการเริ่มจาก ~ 9 นาทีถึง ~ 1 วินาที เรามีขั้นตอนการจัดเก็บจำนวนมากที่ค้นหาตามช่วงวันที่ "คงที่" (สัปดาห์, เดือน, 8 สัปดาห์เป็นต้น) ดังนั้นพารามิเตอร์อินพุตเป็นเพียง @endDate และ @startDate จะถูกคำนวณภายในขั้นตอน คำถามคือวิธีปฏิบัติที่ดีที่สุดในการหลีกเลี่ยงตัวแปรในส่วนคำสั่ง WHERE เพื่อที่จะไม่ประนีประนอมกับเครื่องมือเพิ่มประสิทธิภาพคืออะไร? …

2
การปิด WAITFOR ที่ไม่ จำกัด เพิ่มขนาดไฟล์บันทึกหรือไม่
ในแอปรุ่นล่าสุดของฉันฉันเพิ่มคำสั่งที่บอกให้รอเมื่อมีบางสิ่งเข้ามาในคิว Service Broker: WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue) DBA บอกฉันว่าตั้งแต่การเพิ่มขนาดบันทึกได้ผ่านหลังคา สิ่งนี้ถูกต้องไหม หรือฉันควรจะมองหาที่อื่น?

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