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

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

2
เปิดใช้งานการติดตามเริ่มต้น แต่ไม่ทำงาน
เมื่อฉันสอบถามการกำหนดค่าของการติดตามเริ่มต้นมันจะเปิดใช้งาน: exec sp_configure 'default trace enabled'; --> name minimum maximum config_value run_value default trace enabled 0 1 1 1 แต่เมื่อฉันค้นหาsys.tracesพา ธ มันจะส่งคืน rowset ที่ว่างเปล่า: select * from sys.traces; สิ่งใดที่สามารถอธิบายได้ว่าไม่มีร่องรอยการเปิดใช้งาน

1
SqlPackage ไม่รับตัวแปรจากโปรไฟล์
ฉันต้องการอัพเกรดฐานข้อมูลโดยใช้. dacpac และ sqlpackage.exe นี่คือวิธีที่ฉันเรียกใช้ sqlpackage: SqlPackage.exe /Action:Publish /SourceFile:"my.dacpac" /Profile:"myprofile.publish.xml" ข้อผิดพลาดที่ฉันได้รับคือ: *ตัวแปร SqlCmd ต่อไปนี้ไม่ได้ถูกกำหนดไว้ในสคริปต์เป้าหมาย: foo ฉันตรวจสอบแล้วว่าไฟล์ myprofile.publish.xml มี var นั้น: <ItemGroup> <SqlCmdVariable Include="foo"> <Value>bc\local</Value> </SqlCmdVariable> ฉันยังตรวจสอบว่าโครงการที่สร้าง dacpac นั้นเผยแพร่ได้สำเร็จจากภายใน visual studio โดยใช้ myprofile.publish.xml มีอะไรอีกบ้างที่ฉันขาดหายไป? (ฉันใช้ SQL Server 2012)

1
IO_STALL คำถามและความเข้าใจ
ฉันกำลังรวบรวม IO_STALLS จาก sys.dm_io_virtual_file_stats ทุก ๆ 5 นาทีจากนั้นทำเดลต้าเพื่อดูว่าไฟล์ใดบ้างที่ได้รับผลกระทบมากที่สุดจาก IO ในระยะเวลาหนึ่ง 5 นาทีฉันจะได้เดลต้าของ 5826331 ms ซึ่งเป็น 97 นาที ฉันสับสนเล็กน้อยในเรื่องนี้นี่เป็นการบอกว่าการผ่าตัดเริ่มต้นแล้ว 97 นาทีที่แล้วเพิ่งจะเสร็จที่จุดนั้นและด้วยเหตุนี้จึงบันทึกเวลารอคอยหรือไม่ ขอบคุณ เพิ่มรหัสตามที่ร้องขอ: /* USE [SysDBA] GO */ /****** Object: Table [dbo].[DISKIOPS] Script Date: 04/07/2013 11:40:15 ******/ /* DROP TABLE [dbo].[DISKIOPS] GO */ --Create the table /****** Object: Table [dbo].[DISKIOPS] Script …

3
การจัดการกับช่วงข้อมูลเฉพาะตัวสำหรับการจำลองแบบของทรานแซคชัน
ฉันสังเกตเห็นว่าเมื่อคุณตั้งค่าการจำลองแบบของทรานแซคชัน SQL Server จะตั้งค่าการจัดการช่วงข้อมูลประจำตัวเป็นคู่มือ สิ่งนี้หมายความว่าในฐานข้อมูลการสมัครสมาชิกของฉันเมื่อฉันพยายามที่จะแทรกระเบียนใหม่ลงในตารางที่มี PK เป็นคอลัมน์ข้อมูลประจำตัวมันจะทำให้ฉันมีข้อผิดพลาดและบอกว่ามันพยายามแทรก PK ของ "1", "2 "," 3 "ฯลฯ นี่เป็นเพราะค่าข้อมูลประจำตัวปัจจุบันสำหรับคอลัมน์ข้อมูลประจำตัวทั้งหมดของผู้สมัครสมาชิกจะได้รับการรีเซ็ตเป็นค่าเริ่มต้น (ปกติ 1) แทนที่จะอยู่ในสิ่งที่เป็นอยู่ของผู้เผยแพร่ ฉันเข้าใจว่าทำไม SQL Server ถึงทำเช่นนี้คุณควรปล่อยให้ตารางสมาชิกเป็นแบบอ่านอย่างเดียว อย่างไรก็ตามสถานการณ์ของฉันเป็นเรื่องแปลกนอกรีต - ฉันอัปเดตสมาชิกของฉันเป็นระยะ ๆ ผ่านการจำลองแบบทำการสำรองข้อมูลทันทีของฐานข้อมูลนั้นจากนั้นฉันต้องการทำการอัปเดตบางอย่างสำหรับผู้สมัครสมาชิกที่จะไม่ถูกผลักกลับไปยังผู้เผยแพร่ เมื่อฉันไปอัปเดตผู้สมัครสมาชิกอีกครั้งฉันจะคืนค่าฐานข้อมูลจากการสำรองข้อมูลก่อนหน้าและดึงการอัปเดตล่าสุด เนื่องจากฉันต้องการอัพเดตผู้สมัครสมาชิกระหว่างการอัพเดตเหล่านี้ ('deltas ชั่วคราว' ถ้าคุณต้องการ) ฉันต้องการคอลัมน์ข้อมูลประจำตัวในการทำงานและไม่รีเซ็ตเป็น 1 เมื่อทำซ้ำ ฉันพยายามเปิดการจัดการช่วงข้อมูลเฉพาะตัวอัตโนมัติเมื่อตั้งค่าสิ่งพิมพ์ของฉัน แต่นั่นทำให้ฉันเกิดข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเพิ่มตารางลงในสิ่งพิมพ์: ข่าวสารเกี่ยวกับ 21231, ระดับ 16, สถานะ 1, กระบวนงาน sp_MSrepl_addarticle, บรรทัด 2243 การสนับสนุนช่วงข้อมูลเฉพาะตัวอัตโนมัติมีประโยชน์สำหรับสิ่งพิมพ์ที่อนุญาตให้มีการอัพเดตผู้สมัครสมาชิกเท่านั้น มีวิธีใดบ้างที่ฉันสามารถแก้ไขปัญหานี้ได้ ฉันต้องการนำเสนอการจำลองแบบนี้ไปยัง …

2
ฟังก์ชั่นแฮงค์กับการดำเนินการกรณีที่ไม่มี
ฉันสร้างฟังก์ชั่นที่ยอมรับวันที่เริ่มต้นและสิ้นสุดโดยมีวันที่สิ้นสุดเป็นตัวเลือก จากนั้นฉันเขียนCASEตัวกรองเพื่อใช้วันที่เริ่มต้นหากไม่มีวันที่สิ้นสุด CASE WHEN @dateEnd IS NULL THEN @dateStart ELSE @dateEnd END เมื่อฉันเรียกใช้ฟังก์ชันสำหรับเดือนล่าสุดของข้อมูล: SELECT * FROM theFunction ('2013-06-01', NULL) ... แบบสอบถามหยุดทำงาน ถ้าฉันระบุวันที่สิ้นสุด: SELECT * FROM theFunction ('2013-06-01', '2013-06-01') ... ผลลัพธ์จะถูกส่งคืนตามปกติ ฉันเอารหัสออกจากฟังก์ชั่นและวิ่งได้ดีในหน้าต่างแบบสอบถาม ฉันไม่สามารถทำซ้ำปัญหาซอทั้ง แบบสอบถามที่ชอบ: SELECT * FROM theFunction ('2013-04-01', '2013-06-01') ... ยังใช้งานได้ดี มีอะไรในแบบสอบถาม (ด้านล่าง) ที่อาจทำให้ฟังก์ชันหยุดทำงานเมื่อมีการNULLส่งผ่านสำหรับวันที่สิ้นสุดหรือไม่ ซอ Fiddle แผนการดำเนินการสำหรับSELECT * FROM theFunction …

1
DBCC Shrinkfile ลักษณะการทำงานที่แปลก
ฉันพยายามเรียกใช้ dbcc shrinkfile ในหน่วยความจำ 1GB เทียบกับฐานข้อมูลที่ 95% ของข้อมูลถูกเก็บถาวรและลบ ฉันเลื่อนไฟล์ 235GB โดยที่ 9GB เป็นข้อมูล / ดัชนี ฉันต้องการลดขนาดลงเหลือ 50GB ฉันรู้ว่าไฟล์ฐานข้อมูลที่ลดขนาดไม่ดีก็ทำให้เกิดการแตกหัก ฯลฯ เป็นส่วนหนึ่งของการล้างข้อมูล / หดตัวเรายังมีสคริปต์ idnex สร้างใหม่ เมื่อฉันรันสคริปต์ dbcc shrinkfile กับฐานข้อมูลบนเวิร์กสเตชันของฉันเอง (quad core, RAM 12GB, ไดรฟ์ SATA 2 เท่า) การลดขนาดใช้เวลาประมาณ 8-10 นาที เมื่อรันโค้ดที่เหมือนกันกับสำเนาที่เหมือนกันของการล้างข้อมูลที่ทำการโพสต์ฐานข้อมูลใน envrionment การทดสอบของเรา (80+ คอร์, 128GB RAM, SSD SAN) ใช้เวลา 70 …

3
การบำรุงรักษาบันทึกธุรกรรมเมื่อเปลี่ยนเป็นการกู้คืนแบบง่าย
พื้นหลัง: ฉันเพิ่งสืบทอดเซิร์ฟเวอร์ SQL มากกว่า 50+ พร้อมฐานข้อมูล 450+ การสำรองข้อมูลทุกคืนมีขนาดประมาณ 8TB และไม่จำเป็นต้องบอกว่าเราใช้พื้นที่ดิสก์มากกว่าที่เราต้องการ ฐานข้อมูลทั้งหมดถูกตั้งค่าเป็นการกู้คืนแบบเต็มและล็อกธุรกรรมไม่เคยถูกสำรอง ฉันได้ผ่าน SQL Server ทั้งหมดและระบุลำดับความสำคัญต่ำที่ต้องสำรองข้อมูลทุกคืนและยอมรับว่าข้อมูลสูญหายได้ทุกวัน คำถาม: ฉันเปลี่ยนฐานข้อมูลที่มีลำดับความสำคัญต่ำมาเป็นSIMPLEโหมดการกู้คืนจากจำนวนFULLมาก บันทึกธุรกรรมที่มีอยู่จะถูกตัดทอนหรือไม่ (เมื่อสร้างจุดตรวจ)? บันทึกธุรกรรมบางรายการที่มีอยู่คือ 50-100GB อะไรคือวิธีที่ดีที่สุดในการพิจารณาสิ่งที่ฉันควรย่อให้เป็นเพื่อวัตถุประสงค์ในการก้าวไปข้างหน้า เห็นได้ชัดว่าฉันไม่ต้องการให้พวกเขามีขนาดใหญ่ หรือพวกเขาจะหดตัวเมื่อเวลาผ่านไป (ฉันไม่คิดว่าพวกเขาจะ)?

3
PK เป็น ROWGUIDCOL หรือใช้คอลัมน์ rowguid แยกต่างหาก
มีการถกเถียงกันยาว ๆ ที่นี่ดังนั้นฉันอยากได้ยินความคิดเห็นอื่น ๆ ฉันมีตารางจำนวนมากที่มี PK เอกลักษณ์เฉพาะกลุ่ม ไม่ว่าจะเป็นความคิดที่ดีนอกขอบเขตที่นี่ (และจะไม่เปลี่ยนแปลงตลอดเวลาในไม่ช้า) ตอนนี้ฐานข้อมูลจะต้องถูกเผยแพร่และ DEV กำลังสนับสนุนการใช้คอลัมน์ rowguid แยกต่างหากแทนที่จะทำเครื่องหมาย PK ที่มีอยู่เป็น ROWGUIDCOL โดยพื้นฐานแล้วพวกเขาบอกว่าแอปพลิเคชันไม่ควรนำสิ่งที่ใช้ในการจำลองแบบโดเมนมาใช้เท่านั้น (เป็นเพียง "สิ่ง DBA" สำหรับพวกเขา) จากมุมมองด้านประสิทธิภาพฉันไม่เห็นเหตุผลว่าทำไมฉันควรเพิ่มคอลัมน์ใหม่เพื่อทำสิ่งที่ฉันสามารถทำได้ด้วยคอลัมน์ที่มีอยู่ นอกจากนี้เนื่องจากเป็นเพียง "ข้อมูล DBA" ทำไมไม่ให้ DBA เลือก ฉันเข้าใจประเด็นของ DEV แล้ว แต่ฉันก็ยังไม่เห็นด้วย คิด? แก้ไข:ฉันแค่ต้องการเพิ่มว่าฉันอยู่ในชนกลุ่มน้อยในการอภิปรายนี้และ DEVs ตั้งคำถามของฉันคือคนที่ฉันเคารพและเชื่อถือ นี่คือเหตุผลที่ฉันหันไปถามความคิดเห็น ฉันอาจจะพลาดบางสิ่งบางอย่างและอาจเข้าใจผิดจุดของพวกเขา

4
คืนค่าเกินขีด จำกัด สิทธิ์การใช้งาน 10240 MB ต่อฐานข้อมูล สิ่งที่ฉันต้องการจริงๆคือโครงสร้าง DB
ฉันได้รับไฟล์. bak จากลูกค้าที่ฉันต้องการกู้คืน แต่การคืนค่าเกินขีด จำกัด ลิขสิทธิ์ของ SQL Server 2008 R2 10240 MB ต่อฐานข้อมูล สิ่งที่ฉันต้องการจริงๆคือโครงสร้าง DB มีวิธีในการคืนค่าหรือสำหรับฉันเพียงแค่คืนค่าโครงสร้างหรือไม่

2
ค้นหาแถวพาเรนต์ที่มีชุดของแถวลูกที่เหมือนกัน
สมมติว่าฉันมีโครงสร้างเช่นนี้: ตารางสูตรอาหาร RecipeID Name Description ตาราง RecipeIngredients RecipeID IngredientID Quantity UOM กุญแจสำคัญในการมีRecipeIngredients(RecipeID, IngredientID) วิธีที่ดีในการค้นหาสูตรอาหารที่ซ้ำกันคืออะไร สูตรที่ซ้ำกันหมายถึงการมีชุดส่วนผสมและปริมาณที่แน่นอนเหมือนกันสำหรับแต่ละส่วนผสม ฉันคิดว่าFOR XML PATHจะใช้เพื่อรวมส่วนผสมต่างๆไว้ในคอลัมน์เดียว ฉันยังไม่ได้สำรวจอย่างเต็มที่ แต่ควรจะทำงานถ้าฉันแน่ใจว่าส่วนผสม / UOMs / ปริมาณนั้นเรียงตามลำดับเดียวกันและมีตัวคั่นที่เหมาะสม มีแนวทางที่ดีกว่านี้ไหม? มีสูตร 48K และแถวส่วนผสม 200K

1
ฉันสามารถลดขนาดไฟล์บันทึกธุรกรรมบนฐานข้อมูลมิเรอร์ได้หรือไม่
นี่เป็นคำถามที่ตามมาสำหรับคำถามก่อนหน้าเกี่ยวกับสาเหตุที่ฉันไม่สามารถย่อขนาดไฟล์บันทึกในฐานข้อมูลหลัก เพื่อให้เรื่องสั้นสั้นลงฉันตั้งค่าการทำมิเรอร์ฐานข้อมูล แต่ลืมตรวจสอบให้แน่ใจว่างานที่สำรองข้อมูลบันทึกธุรกรรมกำลังทำงานอีกครั้งและบันทึกธุรกรรมเพิ่มขึ้นเกือบ 60GB เนื่องจากการทำมิเรอร์ถูกตั้งค่าการเพิ่มขนาดนี้ซ้ำกับเซิร์ฟเวอร์มิร์เรอร์และในที่สุดก็ใช้พื้นที่ดิสก์ทั้งหมดและทำให้ฐานข้อมูลมิเรอร์ไม่สามารถใช้งานได้ ต่อคำถามนี้เกี่ยวกับการบำรุงรักษาล็อกธุรกรรมบนฐานข้อมูลกระจกคุณจะไม่สามารถกลับขึ้นไปบันทึกบนกระจก แต่เมื่อถามเฉพาะในการแสดงความคิดเห็นเกี่ยวกับวิธีการลดขนาดแฟ้มบันทึกรกในฐานข้อมูลกระจกมีความคิดเห็นที่ถูกทิ้งไว้ที่ วิธีหนึ่งในการทำเช่นนี้คือการเฟลโอเวอร์ไปยังฐานข้อมูลที่มิเรอร์และทำการย่อขนาด ทดสอบอย่างละเอียดในสภาพแวดล้อมที่ไม่ใช่การผลิตเพื่อให้แน่ใจว่ามีพฤติกรรมที่คุณต้องการ / คาดหวัง สิ่งนี้ดูเหมือนจะแนะนำว่าอาจมีวิธีอื่นในการย่อขนาดไฟล์บันทึกบนมิเรอร์และวิธีนี้อาจไม่ปลอดภัยที่จะทำบนเซิร์ฟเวอร์ที่ใช้งานจริง มีวิธีการอย่างปลอดภัยหดแฟ้มบันทึกธุรกรรมบนมิเรอร์ฐานข้อมูลหรือไม่

3
SSIS บังคับให้เปลี่ยนสตริงแหล่ง excel เพื่อลอย
มีคอลัมน์ใน Excel ที่ควรจะเป็นข้อความ แต่ SSIS เห็นข้อความที่เป็นตัวเลขอยู่ที่นั่นและทำให้เป็นทศนิยมสองเท่าที่มีความแม่นยำโดยอัตโนมัติ [DT_R8] ฉันสามารถเปลี่ยนได้ด้วยตนเองในคอลัมน์ภายนอกและเอาท์พุทของสาขาเอาท์พุท แต่เอาท์พุทข้อผิดพลาดเพียงปฏิเสธที่จะให้ฉันเปลี่ยนคอลัมน์ที่เกี่ยวข้อง Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)". Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on …

2
วิธีการติดตามแบบสอบถาม SQL ที่ crashing SQL Server
เรามีเซิร์ฟเวอร์ฐานข้อมูล SQL Server 2008 (เกิดขึ้นกับการทำงานภายใต้ MS Failover Clustering แต่ฉันไม่คิดว่าเกี่ยวข้องกับที่นี่) แอปพลิเคชันของเรารัน Hibernate สำหรับการเข้าถึงฐานข้อมูลและเนื่องจากเราอัปเกรดเมื่อเร็ว ๆ นี้จาก v3.1 เป็น 3.6 เราพบ SQL Server หยุดทำงานเป็นประจำ (ทุก ๆ 24-48 ชั่วโมง แต่บางครั้งก็บ่อยกว่า) ปัญหาเฉพาะในคำถามน่าจะเกี่ยวข้องกับหน่วยความจำ ก่อนที่เซิร์ฟเวอร์จะล่ม (และจากนั้นรีสตาร์ทอัตโนมัติโดยตัวจัดการคลัสเตอร์ล้มเหลวที่ดูเหมือนว่า) เราได้รับข้อผิดพลาดเหล่านี้: Error: 701, Severity: 17, State: 130. There is insufficient system memory in resource pool 'internal' to run this query. ข้อความ …

3
แค็ตตาล็อก SQL Server 2012 ไปสู่ ​​sysjobhistory - วิธีเข้าร่วมใด ๆ
ฉันใช้ทรัพยากรหมดและไม่สามารถหาวิธีป้องกันการเข้าร่วมตาราง ssisdb.catalog กับงานที่เรียกใช้ พยายามเขียน sprocs ที่กำหนดเองเพื่อตรวจสอบเวลาดำเนินการและแถวของฉันที่เขียนจากตารางแคตตาล็อกและมันจะเป็นประโยชน์อย่างมากที่จะสามารถเชื่อมโยงพวกเขาเข้าด้วยกันกับงานที่เรียก ฉันพยายามที่จะดูว่ามีตารางใด ๆ ที่สามารถใช้เพื่อเข้าร่วมตาราง catalog.executions เพื่อ msdb.sysjobhistory ฉันต้องเกี่ยวข้องกับงานที่เรียกว่าแพคเกจ SSIS แล้วใช้ข้อมูลในการดำเนินการสำหรับการวิเคราะห์ของฉัน

3
SQL Server Sandbox
ฉันกำลังพยายามตั้งค่า sandbox สำหรับผู้พัฒนารายงานของเราเพื่อทำงานในแผนปัจจุบันของฉันคือ "รีเซ็ต" ฐานข้อมูลทุกเย็น แต่ฉันไม่แน่ใจว่าจะทำอย่างไร สิ่งที่ฉันหมายถึงโดยการตั้งค่าใหม่คือฉันต้องการวางตารางผู้ใช้มุมมองกระบวนงานที่เก็บไว้และอื่น ๆ จากทั้งหมดยกเว้นฐานข้อมูลเดียวบนเซิร์ฟเวอร์ ฉันคิดว่าอีกทางเลือกหนึ่งคือการปล่อยและสร้างฐานข้อมูลอีกครั้ง แต่ฉันค่อนข้างแน่ใจว่านั่นหมายถึงการเข้าถึงกลุ่มโฆษณา / คนที่เหมาะสมทั้งหมดอีกครั้ง ฉันไม่รู้จริงๆว่าอะไรจะเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ดังนั้นฉันหวังว่าพวกคุณบางคนจะสามารถให้ความคิด / คำแนะนำที่ดีได้ ขอบคุณ เพื่อความชัดเจนเราเป็นหลักต้องการที่จะทำเช่นนี้กับฐานข้อมูลของเรา: http://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57 ความแตกต่างเพียงอย่างเดียวคือเราไม่ต้องการสร้างผู้ใช้ของเราใหม่ทุกวัน รุ่น: SQL Server 2008 Edition: ผู้พัฒนาและองค์กร

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