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

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

2
ตัวแทน SQL จะอัพเดตค่า next_run_date / next_run_time อย่างไรและเมื่อไร?
ฉันทำงานกับโค้ดใน T-SQL เพื่อเพิ่มกำหนดการใหม่ให้กับงาน SQL Agent โดยใช้ sp_add_jobschedule proc ในฐานข้อมูล msdb เมื่อฉันเพิ่มกำหนดการใหม่ (โดยปกติแล้วจะเรียกใช้ครั้งเดียวในวันที่ / เวลาที่ระบุ) และดูค่าใน sysjobschedules และ sysschedules ทันทีฉันจะเห็นว่ามีการเพิ่มกำหนดการใหม่และเชื่อมโยงกับ job_id สำหรับตัวแทน SQL ของฉัน งาน. อย่างไรก็ตามค่าสำหรับ next_run_date และ next_run_time มี 0 ค่า เมื่อฉันกลับมาและดูพวกเขาอีกครั้งใน 2 หรือ 3 นาทีพวกเขายังคงแสดง 0 ในพวกเขา อย่างไรก็ตามเมื่อฉันกลับมาอีก 5 หรือ 10 นาทีต่อมาตอนนี้มันก็แสดงค่าวันที่และเวลาที่สอดคล้องกับการวิ่งตามกำหนดครั้งต่อไปได้อย่างถูกต้อง ดังนั้นคำถามของฉันคือ: ค่าเหล่านี้มีการอัปเดตบ่อยเพียงใด กระบวนการใดที่ปรับปรุงค่าเหล่านี้ ถ้าฉันจะเพิ่มตารางเวลาที่เคยพูดว่า 1 นาทีในอนาคตนั่นหมายความว่างานจะไม่ทำงานเนื่องจาก next_run_date …


3
การเก็บรักษาการจำลองแบบ Snapshot
ฉันได้ตั้งค่าการจำลองแบบ Snapshot บนเซิร์ฟเวอร์การผลิต SQL Server 2008 ของฉันและฉันเพิ่งสังเกตเห็นว่ามีสแนปชอตอยู่หลายปีก่อนในโฟลเดอร์สแน็ปช็อต ฉันจะเปลี่ยนการเก็บรักษาสำหรับสแนปชอตเหล่านี้ได้อย่างไร โดยเฉพาะฉันต้องการเก็บสแนปชอตเป็นเวลา 5 วัน นี่คือภาพหน้าจอของโฟลเดอร์ที่ฉันกำลังดู:

2
การอ้างอิงบริบทของเอเจนต์ SQL PowerShell
ที่งานใหม่ของฉันเรามีอินสแตนซ์ที่มีชื่อหลายรายการในแต่ละเซิร์ฟเวอร์ เช่น Server1 \ Dev Server1 \ DevIntegrated Server1 \ QA ฉันมีสคริปต์ SQL PowerShell ในงานที่เรียกไปยังระบบปฏิบัติการเรียกใช้Foo.exeแต่ต้องผ่านพารามิเตอร์บรรทัดคำสั่ง (สตริงการเชื่อมต่อ) งาน SQL Agent จะมีอยู่ในแต่ละอินสแตนซ์ด้วยขั้นตอนการพิมพ์ PowerShell ที่จำเป็นต้องรู้ว่าบริบทปัจจุบันคืออะไร ieการดำเนินการนี้เริ่มต้นบน DevIntegrated ฉันไม่ต้องการให้สคริปต์เริ่มต้นด้วย ... $thisInstance = "Dev" ... โดยเฉพาะอย่างยิ่งเมื่อฉันต้องแก้ไขว่าเมื่อเราย้ายไปยังสภาพแวดล้อม (เซิร์ฟเวอร์ใหม่และอินสแตนซ์ที่มีชื่อ) ในอีกไม่กี่เดือนข้างหน้า ถ้าฉันเริ่ม SQLPS ฉันสามารถกำหนดอินสแตนซ์ของฉันโดยการแบ่งส่วนและทำให้ผลลัพธ์ของ Get-Location หรือทำงาน (Invoke-Sqlcmd -Query "SELECT @@servername AS ServerName" -SuppressProviderContextWarning).ServerName เมื่อตัวแทนของ SQL เริ่มงานประเภท PowerShell จะเริ่มใน …

3
ERROR_STATE () ใน SQL Server คืออะไรและสามารถใช้งานได้อย่างไร?
ฉันอ่านว่าERROR_STATE()สามารถช่วยแยกแยะความแตกต่างระหว่างสถานะ / สถานที่ต่าง ๆ ในซอร์สโค้ดซึ่งเกิดข้อผิดพลาดประเภทเดียวกันได้ แต่มันไม่ชัดเจนสำหรับฉันว่ามันมีประโยชน์อย่างไร สถานะ MSDN: ERROR_STATE() ส่งคืนหมายเลขสถานะของข้อผิดพลาดที่ทำให้บล็อก CATCH ของโครงสร้าง TRY … CATCH ถูกเรียกใช้ สามารถนำไปใช้งานจริงได้อย่างไร? บางคนสามารถยกตัวอย่างให้ฉันคนที่ให้ไว้ในบทความอ้างอิงนี้ไม่ได้ช่วยอธิบายสิ่งต่าง ๆ ได้ดีสำหรับฉัน

4
กระบวนการ“ TASK MANAGER” กำลังเข้ายึดฐานข้อมูลโหมดผู้ใช้คนเดียว มันคืออะไร?
นี่เป็นคำถามที่ซ้ำกันที่ฉันถามในstackoverflowแต่ฉันได้รับคำแนะนำว่าคนที่นี่อาจมีความคิดที่ดีขึ้นว่าเกิดอะไรขึ้น ฉันมีปัญหาเป็นระยะ ๆ เมื่ออัพเกรด SQL Server ในโหมดผู้ใช้คนเดียวโดยใช้. NET SqlConnection แอปพลิเคชั่นอื่น ๆ บางอย่างจะล็อกเข้าสู่ฐานข้อมูลในขณะที่กำลังประมวลผลโค้ด SQL และเริ่มกระบวนการของฉัน SqlConnection จะไม่ถูกปิดหรือกำจัด แต่อย่างใด แต่แอปพลิเคชั่นอื่นบางตัวเชื่อมต่อกับฐานข้อมูลและทำให้การเชื่อมต่อของฉันหยุดชะงัก เมื่อฉันรัน sp_who ฉันจะเห็นว่ากระบวนการที่ควบคุมฐานข้อมูลคือ Command = "TASK MANAGER" ทุกคนสามารถบอกฉันได้ว่ากระบวนการนี้มีจุดประสงค์อะไรและในโลกจะเข้าสู่ฐานข้อมูลได้อย่างไรซึ่งอยู่ในโหมดผู้ใช้คนเดียวและมีการเชื่อมต่อที่ใช้งานอยู่?

1
ตัวเลือกการล็อคของฉันสำหรับคำสั่งผสานคืออะไร
ฉันมีขั้นตอนการจัดเก็บที่ดำเนินการคำสั่งMERGE ดูเหมือนว่าจะล็อกทั้งตารางตามค่าเริ่มต้นเมื่อดำเนินการผสาน ฉันกำลังเรียกขั้นตอนการจัดเก็บนี้ภายในธุรกรรมที่ฉันกำลังทำสิ่งอื่นอยู่ด้วยและฉันหวังว่ามันจะล็อคแถวที่ได้รับผลกระทบเท่านั้น ฉันลองคำใบ้MERGE INTO myTable WITH (READPAST)และดูเหมือนจะล็อคน้อยลง แต่มีคำเตือนในเอกสาร ms ที่บอกว่าสามารถแทรกคีย์ที่ซ้ำกันได้แม้จะข้ามคีย์หลัก นี่คือคีตารางของฉัน: CREATE TABLE StudentDetails ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(15) ) GO INSERT INTO StudentDetails VALUES(1,'WANG') INSERT INTO StudentDetails VALUES(2,'JOHNSON') GO CREATE TABLE StudentTotalMarks ( Id INT IDENTITY PRIMARY KEY, StudentID INTEGER REFERENCES StudentDetails, StudentMarks INTEGER ) GO …

1
ROW_NUMBER () OVER (พาร์ทิชันโดย B, A ORDER BY C) ไม่ได้ใช้ดัชนีใน (A, B, C)
พิจารณาทั้งสองฟังก์ชั่น: ROW_NUMBER() OVER (PARTITION BY A,B ORDER BY C) ROW_NUMBER() OVER (PARTITION BY B,A ORDER BY C) เท่าที่ฉันเข้าใจพวกเขาให้ผลลัพธ์ที่เหมือนกันทุกประการ ในคำอื่น ๆ ลำดับที่คุณแสดงรายการคอลัมน์ในPARTITION BYข้อไม่สำคัญ หากมีดัชนีอยู่(A,B,C)ฉันคาดว่าเครื่องมือเพิ่มประสิทธิภาพจะใช้ดัชนีนี้ในทั้งสองรุ่น แต่น่าประหลาดใจที่ผู้เพิ่มประสิทธิภาพตัดสินใจทำการจัดเรียงที่ชัดเจนเป็นพิเศษในชุดที่สอง ฉันเคยเห็นมันใน SQL Server 2008 Standard และ SQL Server 2014 Express นี่เป็นสคริปต์เต็มรูปแบบที่ฉันใช้ในการทำซ้ำ พยายามใน Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 20 กุมภาพันธ์ 2014 20:04:26 ลิขสิทธิ์ (c) Microsoft …

2
วิธีที่ดีที่สุดในการรีเฟรชเพียงไม่กี่ตารางในฐานข้อมูลทดสอบจากการผลิตคืออะไร
ฉันมีฐานข้อมูลการผลิตขนาดใหญ่มากและฐานข้อมูลสภาพแวดล้อมการทดสอบขนาดใหญ่มากใน SQL Server 2008R2 ฐานข้อมูลทั้งสองมีโครงสร้างตารางที่คล้ายกัน แต่ผู้ใช้ / การเข้าสู่ระบบ / สิทธิ์ / บทบาทที่แตกต่างกัน ฉันต้องการรีเฟรชเพียงไม่กี่ตารางในฐานข้อมูลการทดสอบเป็นระยะ ๆ จากการผลิตประมาณเดือนละครั้ง วิธีปัจจุบันที่ฉันวางแผนจะทำคือ ใช้ยูทิลิตี้ BCP เพื่อทำการส่งออกตารางที่ฉันต้องการจากการผลิต คัดลอกไฟล์ส่งออก bcp ไปยังเซิร์ฟเวอร์ทดสอบ ปิดการใช้งานดัชนีและข้อ จำกัด ในตารางทั้งหมดที่ฉันรีเฟรชในการทดสอบ ตัดทอนตารางฐานข้อมูลทดสอบ โหลดข้อมูลกลับเข้าไปในตารางฐานข้อมูลทดสอบโดยใช้ BCP สร้างดัชนีใหม่และเปิดใช้งานข้อ จำกัด ในการทดสอบอีกครั้ง ทั้งหมดนี้ดูเหมือนจะซับซ้อนเกินไปสำหรับงานเล็ก ๆ น้อย ๆ ดูเหมือนว่าจะสร้างการทำซ้ำจำนวนมาก (ใน t-log) มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่? อีกวิธีที่ฉันคิดว่าทำเช่นนี้คือการคืนค่าการสำรองข้อมูลจากการผลิตสู่สภาพแวดล้อมการทดสอบ - แต่ปัญหาที่ฉันมีคือการสำรองข้อมูลเต็มรูปแบบจะมีขนาดค่อนข้างใหญ่และฉันไม่ต้องการให้ทุกตารางทำการรีเฟรช - และผู้ใช้และความปลอดภัยในฐานข้อมูลการผลิตแตกต่างจากการทดสอบ ที่จะถูกเขียนทับโดยการตั้งค่าความปลอดภัยในฐานข้อมูลการผลิตถ้าฉันคืนค่าฐานข้อมูลทั้งหมด

1
สาเหตุของปัญหานี้กับ CONVERT () คืออะไร
พิจารณาสองข้อความต่อไปนี้: PRINT CONVERT(NUMERIC(38, 0), 0x0100000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x0100010001, 0); ทั้งสองงบกลับ-1; ไม่ถูกต้องเนื่องจากค่าไบนารีที่สองเป็นทศนิยม 65,536 สูงกว่าค่าแรกใช่หรือไม่ แน่นอนสิ่งนี้ไม่สามารถเกิดขึ้นได้เนื่องจากการตัดทอนเงียบ ถ้าฉันเรียกใช้คำสั่งต่อไปนี้: PRINT CONVERT(NUMERIC(38, 0), 0x00000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x00010001, 0); ฉันพบข้อผิดพลาดต่อไปนี้: Msg 8114, Level 16, State 5, Line 1 Error converting data type varbinary to numeric. ฉันจะวินิจฉัยสิ่งที่เกิดขึ้นที่นี่ได้อย่างไร ฉันใช้สิ่งนี้ใน SQL Server 2012, v11.0.5058 ผลลัพธ์จะเหมือนกันใน …

2
ประสิทธิภาพของคีย์หลักคอมโพสิตเป็นคีย์ต่างประเทศ
ฉันมีตารางที่มีคีย์หลักคอมโพสิต (ประกอบด้วย 4 คอลัมน์) ซึ่งใช้เพื่อให้แน่ใจว่าไม่มีรายการที่ซ้ำกันถูกป้อนลงในตาราง ตอนนี้ฉันต้องการโต๊ะใหม่ซึ่งจะต้องอ้างอิงคีย์ในตารางนี้เป็นคีย์ต่างประเทศ คำถามของฉันคือวิธีใดที่มีประสิทธิภาพมากกว่าสำหรับความเร็วการค้นหา: 1) ฉันจะสร้างตารางใหม่รวมทั้งคอลัมน์ทั้ง 4 และอ้างอิงพวกเขาทั้งหมดในคีย์ต่างประเทศ หรือ 2) ฉันจะสร้างคอลัมน์ข้อมูลประจำตัวใหม่ในตารางคีย์หลักและใช้เป็นคีย์ต่างประเทศในตารางใหม่หรือไม่ ฐานข้อมูลนี้คาดว่าจะเก็บข้อมูลจำนวนมากดังนั้นฉันได้สร้างมันขึ้นมาจนถึงตอนนี้ด้วยมุมมองที่จะลดจำนวนข้อมูลที่เก็บไว้ในแต่ละตาราง ด้วยสิ่งนี้ในใจตัวเลือก 2 จะเป็นวิธีที่ดีที่สุดเนื่องจากฉันจะบันทึก 2 คอลัมน์และคอลัมน์วันที่สำหรับทุกแถว แต่ฉันต้องการหลีกเลี่ยงการเพิ่มเวลาการค้นหาหากไม่จำเป็น

1
หากการทำธุรกรรม "มุ่งมั่น" จะถูกบันทึกไว้อย่างแน่นอนหรือไม่?
หากการทำธุรกรรมที่จะมุ่งมั่นที่จะประสบความสำเร็จผมสามารถแล้วเป็น 100% แน่ใจว่าจะได้รับการเขียนไปยังฐานข้อมูลและไฟล์บันทึก? ฉันมั่นใจได้อย่างไรว่าข้อมูลถูกบันทึกไว้? วันนี้ล็อกไฟล์ของเราถึงขีด จำกัด ของไดรฟ์และเราได้รับข้อผิดพลาดมากมาย นอกจากนี้บริการอื่น ๆ บางอย่างล้มเหลว เราเพิ่มดิสก์และรีสตาร์ทเซิร์ฟเวอร์ ในระหว่างการเริ่มต้นเซิร์ฟเวอร์ทำการ "กู้คืนฐานข้อมูล" - ฉันจะแน่ใจได้หรือไม่ว่าทุกอย่างโอเคอีกครั้ง?

3
การอัปเดตตารางที่มีการบันทึกนับล้านรายการมันใช้เวลา 4 วัน
ขณะนี้ฉันกำลังอัปเดตตารางที่มีเรคคอร์ดนับล้านระเบียนอยู่ในช่วง 4 วันและคิวรียังดำเนินการอยู่ ฉันตรวจสอบกิจกรรมการตรวจสอบแสดงว่าแบบสอบถามกำลังทำงานอยู่ ในบันทึกเหตุการณ์ไม่มีข้อผิดพลาดเลย ประสิทธิภาพที่ชาญฉลาด: Tempdb ในดิสก์ A (พื้นที่ว่าง 850 gb) ไฟล์ฐานข้อมูลในดิสก์ B (พื้นที่ว่าง 750 gb) RAM 16 GB กรุณาแนะนำฉันฉันควรทำอย่างไร? แบบสอบถาม UPDATE dbo.table1 SET costPercentage = ISNULL(t2.PaymentIndex, 1.0), t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00), Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00) FROM dbo.table2 t2 WHERE LEFT(dbo.test1.procodet, …

3
วิธีการรีเฟรชกลุ่มความปลอดภัย AD บนการอนุญาต SQL Server
ฉันใช้ SQL Server 2008 บน Small Business Server 2003 ลูกค้าใช้ WinXP ฉันเพิ่มผู้ใช้ไปยัง Active Directory Security Group; เหตุใดผู้ใช้นี้ไม่สามารถเข้าถึงฐานข้อมูลได้ทันที ดูเหมือนว่ามีความล่าช้าก่อนที่ผู้ใช้จะรู้จักใน SQL Server ฉันใช้ AD Security Groups สำหรับการอนุญาตอย่างชัดแจ้งเพื่อที่ฉันไม่จำเป็นต้องเพิ่มผู้ใช้รายบุคคลใน SQL Server อย่างมีประสิทธิภาพฉันไม่จำเป็นต้องทำอะไรนอกจากเพิ่มผู้ใช้ในกลุ่มความปลอดภัย AD เพื่อให้สิทธิ์การเข้าถึง แต่ด้วยเหตุผลบางอย่างเซิร์ฟเวอร์ sql ไม่รู้จักการเพิ่มในทันที ฉันเคยเห็นนี่มาหลายครั้งแล้ว ฉันเพิ่มผู้ใช้ในกลุ่ม แต่ผู้ใช้นั้นไม่สามารถเข้าถึงข้อมูลได้จนกว่าจะถึงวันถัดไป ดูเหมือนว่าจะไม่สืบค้น Active Directory แบบเรียลไทม์ คุณช่วยยืนยันได้มั้ย ฉันต้องทำอย่างไรเพื่อให้เซิร์ฟเวอร์ SQL "รีเฟรช" รายชื่อผู้ใช้จาก Active Directory

2
วิธีการวางฐานข้อมูลในโหมด Single_User
ฉันจะวางฐานข้อมูลที่แสดงDatabaseName (Single User)เป็นชื่อได้อย่างไร เมื่อฉันพยายามลบฉันได้รับข้อผิดพลาดต่อไปนี้: การแก้ไขล้มเหลวสำหรับฐานข้อมูล 'DatabaseName' (Microsoft.SqlServer.Smo) คำสั่งเปลี่ยนแปลงฐานข้อมูลล้มเหลว (Microsoft SQL Server ข้อผิดพลาด: 5064) ฉันพยายามที่จะดำเนินการALTERด้านล่างและยังมีปัญหาเดียวกัน ALTER DATABASE [DatabaseName] SET MULTI_USER WITH NO_WAIT

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