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

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

3
จะเปลี่ยนลำดับการยิงของ Triggers ได้อย่างไร?
จริงๆฉันไม่ค่อยใช้ทริกเกอร์ ดังนั้นฉันจึงพบปัญหาในครั้งแรก ฉันมีตารางจำนวนมากที่มีทริกเกอร์ (2 หรือมากกว่าสำหรับทุกตาราง) ฉันต้องการทราบและเปลี่ยนลำดับการเรียกทริกเกอร์สำหรับทุกตาราง เป็นไปได้หรือไม่ที่จะได้รับข้อมูลนี้? เพิ่ม: นี่คือบทความ enoght ที่ดีใน mssqltipsฉันได้พบ

1
ผลกระทบของการเปลี่ยนการตั้งค่าหน่วยความจำการสร้างดัชนีใน SQL Server คืออะไร
ฉันกำลังพยายามสร้างดัชนีบางตัวในฐานข้อมูล SQL Server 2008 แต่ได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ เกี่ยวกับข่าวสาร 8606 ระดับ 17 สถานะ 1 บรรทัด 1 การดำเนินการดัชนีนี้ต้องการหน่วยความจำ 1024 KB ต่อ DOP ความต้องการทั้งหมด 2048 KB สำหรับ DOP 2 นั้นมากกว่าค่า sp_configure ของชุด 704 KB สำหรับตัวเลือกการกำหนดค่าเซิร์ฟเวอร์ขั้นสูง "ดัชนีสร้างหน่วยความจำ (KB)" เพิ่มการตั้งค่านี้หรือลด DOP และเรียกใช้แบบสอบถามอีกครั้ง ขณะนี้การตั้งค่าหน่วยความจำการสร้างดัชนีถูกตั้งค่าเป็น 794KB และหน่วยความจำขั้นต่ำต่อแบบสอบถามตั้งเป็น 1024KB ผลกระทบของการเปลี่ยนแปลงค่าเหล่านี้คืออะไร? โดยเฉพาะอย่างยิ่งเกี่ยวกับประสิทธิภาพ ฉันควรเปลี่ยนพวกเขาสร้างดัชนีและเปลี่ยนกลับหรือฉันควรตั้งเป็น 0?

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

2
ไม่สามารถแปลงค่าได้เนื่องจากอาจสูญเสียข้อมูล [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ผมขอเริ่มด้วยการชี้แจงว่านี่ไม่ใช่คำถามซ้ำซ้อนหรืออาจเป็นซ้ำได้สำหรับเรื่องนั้น ฉันได้ลองใช้ทุกคำตอบกับทุกตัวแปรที่มีอยู่ของปัญหานี้แล้วใน StackOverflow และ DBA Stack Exchange โดยไม่มีโชค ฉันดิ้นรนกับปัญหานี้ในช่วงสองวันที่ผ่านมา (ทำงานกับมันประมาณ 7 ชั่วโมงต่อวัน) และแม้หลังจาก Googling ปัญหาก็ปรากฏว่าไม่มีใครมีปัญหาที่แตกต่างกันของปัญหาของฉัน ฉันพยายามทำอะไร ใน SSIS ฉันพยายามอ่านจากไฟล์ CSV และแทรกแถวจากแถวนั้นลงในฐานข้อมูล OLE DB สำหรับสิ่งนั้นฉันได้ทำการตั้งค่าที่ง่ายที่สุดเท่าที่เคยเห็นด้านล่าง Flat File Source - อ่านแถว CSV Derived Column - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) Data Conversion - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) OLE DB Destination …

2
นำ OUTPUT ของคำสั่ง UPDATE ไปยังตัวแปรโลคัล
ฉันต้องการทำสิ่งนี้: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc เป็นไปได้ไหม ฉันรู้ว่าฉันสามารถประกาศตัวแปรตารางท้องถิ่นและส่งออกตรงนั้น แต่ฉันอยากจะข้ามมันถ้าเป็นไปได้

3
จัดกลุ่มระเบียนตามช่วงเวลา
ฉันมีตารางที่มีสคีมาดังต่อไปนี้และฉันต้องการกำหนดคิวรีที่สามารถจัดกลุ่มข้อมูลตามช่วงเวลา ( เช่นเรคคอร์ดต่อนาที ) จากนั้นให้ผลรวมของการเปลี่ยนแปลง SnapShotValue ตั้งแต่กลุ่มก่อนหน้า ในปัจจุบัน SnapShotValue เพิ่มขึ้นเรื่อย ๆ ดังนั้นฉันจึงต้องการเพียงผลรวมของความแตกต่าง ใครสามารถช่วยกับแบบสอบถาม SQL Server T-SQL ที่อาจทำเช่นนี้? ฉันเปิดให้เปลี่ยนสคีมา แต่นี่คือสิ่งที่ฉันมีอยู่ในปัจจุบัน schema CaptureTime (datetime) SnapShotValue (int) ข้อมูลตัวอย่าง 1 Jan 2012 00:00:00, 100 1 Jan 2012 00:00:30, 125 1 Jan 2012 00:01:00, 200 1 Jan 2012 00:01:30, 300 1 Jan 2012 00:02:15, 400 …

4
คำสั่ง SELECT จากระยะไกลช้าเนื่องจาก“ เวลาในการประมวลผลลูกค้า” ที่ยาวนาน แต่รวดเร็วในพื้นที่
ในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์ที่ใช้งานจริงของเรา (SQL Server 2008, เครื่องจักรที่ทรงพลังมาก), คำสั่ง SELECT นี้ใช้เวลา2 วินาที , กระจายกลับทุกช่อง (รวมข้อมูล 4 MB) SELECT TOP (30000) * FROM person WITH(NOLOCK); จากการใด ๆอื่น ๆกล่องบนเครือข่ายเดียวกัน (การเชื่อมต่อใช้การตรวจสอบ SQL หรือ Windows Authentication) แบบสอบถามเดียวกันจะใช้เวลา1 นาที 8 วินาที ฉันกำลังทดสอบด้วยคำสั่งง่ายๆนี้เพื่อแสดงให้เห็นว่าไม่ใช่ปัญหาการจัดทำดัชนีหรือปัญหาเกี่ยวกับแบบสอบถาม (เรามีปัญหาด้านประสิทธิภาพด้วยข้อความค้นหาทั้งหมดในขณะนี้ ... ) แถวมาเป็นกลุ่มและไม่ใช่ทั้งหมดในคราวเดียว ฉันได้แถวแรกทันทีจากนั้นรอประมาณ 1 นาทีเพื่อให้แถวเข้ามา นี่คือสถิติลูกค้าของแบบสอบถามเมื่อมีการเรียกใช้จากกล่องระยะไกล: Query Profile Statistics Number of INSERT, DELETE and …

5
ประสิทธิภาพการทำงานที่โหดร้ายเข้าร่วมตาราง INSERTED และ DELETED ในทริกเกอร์
ฉันได้รับทริกเกอร์ UPDATE ในตารางที่เฝ้าดูคอลัมน์ที่เฉพาะเจาะจงเปลี่ยนจากค่าหนึ่งไปเป็นค่าอื่น ๆ เมื่อสิ่งนี้เกิดขึ้นมันจะอัพเดทข้อมูลที่เกี่ยวข้องในตารางอื่นผ่านคำสั่ง UPDATE เดียว สิ่งแรกที่ทริกเกอร์ทำการตรวจสอบเพื่อดูว่าแถวที่อัพเดตมีค่าของคอลัมน์นี้เปลี่ยนจากค่าที่เป็นปัญหาหรือไม่ มันจะรวมเข้ากับ INSERTED เพื่อลบและเปรียบเทียบค่าในคอลัมน์นั้น หากไม่มีสิ่งใดที่มีคุณสมบัติมันจะออกไปก่อนกำหนดดังนั้นคำสั่ง UPDATE จะไม่ทำงาน IF NOT EXISTS ( SELECT TOP 1 i.CUSTNMBR FROM INSERTED i INNER JOIN DELETED d ON i.CUSTNMBR = d.CUSTNMBR WHERE d.CUSTCLAS = 'Misc' AND i.CUSTCLAS != 'Misc' ) RETURN ในกรณีนี้ CUSTNMBR เป็นคีย์หลักของตารางต้นแบบ หากฉันอัปเดตจำนวนมากในตารางนี้ (พูด, 5,000+ แถว) …

4
รับ id ของงานหรือชื่องานจากภายในการดำเนินงาน
ฉันมีฐานข้อมูลกลางที่ฉันเขียนผลลัพธ์งานบนเซิร์ฟเวอร์ทั้งหมดของฉันกลับไป ฉันส่งพารามิเตอร์ 3 ตัวผ่าน powershell ในงาน SQL กลับไปที่ sp บนเซิร์ฟเวอร์กลางที่ตรวจสอบว่างานควรจะทำงานในเวลานั้น ฯลฯ ข้อมูลจะถูกเปิดเผยผ่าน SSRS เพื่อให้เราเห็นงานล้มเหลว / งานที่ต้องทำงานนาน / & งานที่ไม่ได้ทำงาน แต่ควรมี (หรือถ้ามีคนยุ่งกับตาราง) ในการทำเช่นนี้ฉันมี 2 ขั้นตอนงานในแต่ละงานบนเซิร์ฟเวอร์ทุกเครื่องและฉันต้องการลดสคริปต์ลงเหลือเพียง 1 ขั้นตอนในแต่ละงาน .. อาจเป็นไปได้ที่จะโทรหาจากเครือข่ายที่ใช้ร่วมกัน .. แต่ปัญหาของฉันคือหนึ่งในสามพารามิเตอร์ที่ฉันผ่าน ฉันต้องการรับ jobid ที่กำลังเรียกใช้หรือชื่องานจากภายในงานที่กำลังดำเนินการดังนั้นฉันไม่ต้อง hardcode พารามิเตอร์ name 3 พารามิเตอร์ที่ฉันผ่านคือ jobid สถานะ (สำเร็จ / ล้มเหลว), errormsg สคริปต์ powershell ที่ฉันเขียนนั้นค่อนข้างตรงไปตรงมา เรียกใช้-sqlcmd -ServerInstance "MYRemoteSYSTEM" …

2
แบบสอบถาม SQL เข้าร่วมเพื่อแสดงแถวที่ไม่มีแถวในหนึ่งตาราง
ฉันกำลังพยายามทำให้การรายงานบางอย่างเสร็จสิ้นเพื่อบันทึกเวลาของพนักงาน เรามีสองตารางสำหรับคำถามนี้โดยเฉพาะ พนักงานมีการระบุไว้ในMembersตารางและในแต่ละวันพวกเขาป้อนรายการเวลาของงานที่พวกเขาทำและถูกเก็บไว้ในTime_Entryตาราง ตัวอย่างการตั้งค่าด้วย SQL Fiddle: http://sqlfiddle.com/#!3/e3806/7 ผลลัพธ์ที่ฉันจะให้เป็นตารางซึ่งแสดงให้เห็นทั้งหมดMembersในรายการคอลัมน์และจากนั้นจะแสดงชั่วโมงรวมของพวกเขาสำหรับวันที่สอบถามในคอลัมน์อื่น ๆ ปัญหาดูเหมือนว่าถ้าไม่มีแถวในTime_Entryตารางสำหรับสมาชิกเฉพาะตอนนี้มีแถวสำหรับสมาชิกนั้น ฉันได้ลองประเภทการเข้าร่วมหลายประเภท (ซ้าย, ขวา, ด้านใน, ด้านนอก, ด้านนอกเต็ม, ฯลฯ ) แต่ดูเหมือนว่าจะไม่มีสิ่งใดที่ฉันต้องการซึ่งจะเป็น (ตามตัวอย่างล่าสุดในซอฟแวร์ SQL Fiddle): /*** Desired End Result ***/ Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL ADavis | 0 | 11-10-2013 | 0 | 0 BTronton | 0 | 11-10-2013 …

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

2
เปลี่ยนคอลัมน์ NULL อย่างรวดเร็วเป็น NOT NULL
ฉันมีตารางที่มีแถวเป็นล้านแถวและคอลัมน์ที่อนุญาตให้มีค่า NULL อย่างไรก็ตามในขณะนี้ไม่มีแถวที่มีค่า NULL สำหรับคอลัมน์นั้น (ฉันสามารถตรวจสอบได้อย่างรวดเร็วด้วยแบบสอบถาม) อย่างไรก็ตามเมื่อฉันรันคำสั่ง ALTER TABLE MyTable ALTER COLUMN MyColumn BIGINT NOT NULL; แบบสอบถามใช้เวลาพูดค่อนข้างตลอดไป ใช้เวลาประมาณ 10 ถึง 20 นาทีซึ่งนานกว่าสองเท่าของการเพิ่มข้อ จำกัด การตรวจสอบ มีวิธีอัปเดตข้อมูลเมตาของตารางสำหรับคอลัมน์นั้นทันทีโดยเฉพาะเมื่อฉันรู้ว่าไม่มีแถวใดที่มีค่า NULL สำหรับคอลัมน์นั้น

2
ทำไม io_stall_writes_ms สูงกว่ามากสำหรับ tempdb
เรามีไฟล์ข้อมูลผู้ใช้และระบบในดิสก์ไดรฟ์เดียวกัน (io_stall_write_ms / (1.0 + num_of_writes)) ต่ำกว่า 2 สำหรับไฟล์ผู้ใช้ แต่ไฟล์ tempdb มักจะมีมากกว่า 400 ฉันเห็นว่าในบางเซิร์ฟเวอร์และฉันอยากรู้ว่าถ้ามีเหตุผลที่ใช้เวลานานในการเขียนไปยัง tempdb กว่าไฟล์ข้อมูลฐานข้อมูลปกติ SELECT DISTINCT UPPER(LEFT(mf.physical_name, 1)) AS Directory, ( io_stall_write_ms / ( 1.0 + num_of_writes ) ) as result, io_stall_write_ms, num_of_writes, fs.database_id, fs.[file_id] FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS fs INNER JOIN sys.master_files AS mf ON fs.database_id = …

2
ฐานข้อมูล SQL Server พร้อมที่จะรับแบบสอบถามเมื่อใด
ในไฟล์บันทึกข้อผิดพลาด SQL Server ฉันพบบรรทัดต่อไปนี้: 2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'. 2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'. 2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'. 2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'. ถ้าฉันตรวจสอบสถานะของฐานข้อมูล XYZ ก่อนหน้านี้มันกำลังONLINEใช้คำสั่งต่อไปนี้: SELECT state_desc FROM sys.databases WHERE name='XYZ' ... แต่เมื่อฉันพยายามเชื่อมต่อกับฐานข้อมูลนี้โดยใช้แอปพลิเคชัน C # จะไม่สามารถเชื่อมต่อกับฐานข้อมูลได้ ข้อผิดพลาดคือ: การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'asd' สาเหตุ: …

1
SQLServer Upgrade Advisor 2014 หยุดทำงาน
ฉันพยายามเรียกใช้ SQL Server Upgrade Advisor 2014 กับเซิร์ฟเวอร์ SQL Server 2008 ทุกอย่างดูดีเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ 2008 และฉันสามารถเลือกฐานข้อมูลที่ฉันต้องการวิเคราะห์ แต่เมื่อเปิดตัวมันจะทำงานตลอดไปโดยไม่ทำอะไรเลย (อยู่ที่ขั้นตอนการวิเคราะห์กฎ: 0/112 ) เกิดอะไรขึ้นและฉันจะแก้ไขได้อย่างไร ทั้ง SQL Server 2008 และ 2014 เป็นรุ่น Express และติดตั้งบนแล็ปท็อปของฉัน น่าเสียดายนี่เป็นวิธีเดียวที่ฉันพบว่าเรียกใช้ Upgrade Advisor (มีข้อ จำกัด มากเกินไปที่จะเรียกใช้บนฐานข้อมูล prod / dev จริง) อินสแตนซ์ SQL 2008 อยู่กับ SP3 เป็นสิ่งจำเป็น Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 …

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