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

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

4
ตั้งค่าขนาดของไฟล์บันทึกด้วยตนเองหลังจากลดขนาด SQL Server 2008 R2
กำลังกลายเป็น DBA ที่ไม่ได้ตั้งใจในการทำงานที่พวกเขาในเวลานั้นและต้องการความช่วยเหลือในบางสิ่งบางอย่าง เรามีฐานข้อมูล 40GB ในโหมดการกู้คืนเต็มไม่มีการสำรองข้อมูลบันทึกการกำหนดค่าและไฟล์บันทึกขนาดใหญ่ 84GB แผนของฉันในการกอบกู้สถานการณ์นี้คือการเรียกใช้การสำรองข้อมูลบันทึกเต็มรูปแบบในฐานข้อมูลลดขนาดแฟ้มบันทึกและสร้างแผนการบำรุงรักษาเพื่อเรียกใช้การสำรองข้อมูลบันทึกทุกคืนด้วยการสำรองฐานข้อมูลเพื่อช่วยให้สามารถควบคุมได้ ปัญหาของฉันคือฉันไม่ต้องการให้ล็อกไฟล์ย่อขนาดลงและใช้จ่ายในเช้าวันแรกของวันจันทร์ที่เติบโตอย่างต่อเนื่อง ฉันมีการประมาณการคร่าวๆว่าไฟล์ควรเป็นอย่างไร (ประมาณ 20% ของฐานข้อมูล) และต้องการตั้งค่านี้จาก get-go เพื่อให้แน่ใจว่ามีพื้นที่ต่อเนื่องมากที่สุด นี่เป็นเพียงกรณีของการเปลี่ยน "ขนาดเริ่มต้น" ภายใต้คุณสมบัติของฐานข้อมูล -> ไฟล์หรือไม่ ฉันเดาเช่นกันว่าฐานข้อมูลจะต้องออฟไลน์เพื่อให้เกิดสิ่งนี้? ขอบคุณล่วงหน้า

1
การจัดการข้อยกเว้นในขั้นตอนการจัดเก็บที่เรียกว่าการใช้บล็อกแทรก-exec
ฉันมีขั้นตอนการจัดเก็บที่เรียกว่าในบล็อคแทรก-exec: insert into @t exec('test') ฉันจะจัดการกับข้อยกเว้นที่สร้างขึ้นในขั้นตอนการจัดเก็บและยังคงดำเนินการต่อได้อย่างไร รหัสต่อไปนี้แสดงให้เห็นถึงปัญหา สิ่งที่ฉันต้องการจะทำคือคืน 0 หรือ -1 ขึ้นอยู่กับความสำเร็จหรือความล้มเหลวของการexec()โทรภายใน: alter procedure test -- or create as begin try declare @retval int; -- This code assumes that PrintMax exists already so this generates an error exec('create procedure PrintMax as begin print ''hello world'' end;') set @retval = 0; …

4
ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ sql ในโหมดผู้ใช้คนเดียว
ฉันได้เริ่มต้นของฉันSQL Server 2008 sqlcst02\inst01ในSingle User Modeโดยการผนวกไปยังจุดสิ้นสุดของพารามิเตอร์การเริ่มต้นระบบเช่นนี้;-m SQL Server Configuration Managerฉันได้หยุดSQL Server Agentสำหรับinst01อินสแตนซ์ บัญชีของฉันเป็นสมาชิกคนหนึ่งของDomain Admin groupฉันและฉันได้พยายามที่จะเข้าสู่ระบบการใช้sqlcmd -S sqlcst02\inst01และให้ได้รับข้อผิดพลาดที่ให้บริการอยู่ในSingle User Modeและมีเพียงหนึ่งผู้ดูแลระบบสามารถเข้าสู่ระบบ. ฉันพยายามเพิ่ม;-m"sqlcmd"พารามิเตอร์การเริ่มต้นที่จะ จำกัด การเชื่อมต่อไปเพียงsqlcmdแต่ฉันได้รับ ผลลัพธ์เดียวกัน ฉันได้ลองนี้เข้าสู่ระบบในฐานะบัญชีของตัวเองและเข้าสู่ระบบในฐานะบัญชีผู้ดูแลท้องถิ่น ฉันเริ่มพร้อมท์คำสั่งด้วยตนเองและในฐานะผู้ดูแล แต่ฉันได้รับผลลัพธ์เดียวกัน ฉันได้พยายามเชื่อมต่อใช้ในADMIN:sqlcst02\inst01 SSMSไม่มีโชค. ฉันพยายามรีเซ็ตsaรหัสผ่านเนื่องจากไม่มีผู้ดูแลระบบคนก่อนหน้านี้เหลือข้อมูลนี้ไว้ นี่มันน่าคลั่ง ฉันเคยทำสิ่งนี้มาก่อนในเครื่องอื่น ๆ ที่ไม่มีปัญหา

1
SQL Server 2000 ถึง 2008 ถึง 2012
เรากำลังโยกย้ายจาก SQL Server 2000 ถึง 2008 ในขณะนี้ เราทำการเปลี่ยนแปลงโค้ดสคริปต์เนื่องจากมีการเปลี่ยนแปลงมากมายตั้งแต่ปีพ. ศ. 2543 ถึง 2551 ขณะทำการเปลี่ยนแปลงสิ่งที่ฉันต้องการรู้คือ - มีอะไรที่ฉันสามารถทำได้ตอนนี้เพื่อให้เข้ากันได้กับปี 2012 ที่ ในเวลาเดียวกัน อย่างน้อยการเปลี่ยนแปลงเหล่านั้นที่เข้ากันได้ย้อนหลังจาก 2012 ถึง 2008 และอื่น ๆ เหตุผลที่ฉันต้องการทำเช่นนี้คือการลดความพยายามใด ๆ ในอนาคต (3 ถึงสี่ปีต่อจากนี้) เมื่อเราตัดสินใจย้ายจาก 2008 เป็น 2012 อะไรที่ ทั้งหมดที่ฉันสามารถทำได้หรือจำเป็นต้องรู้

1
การปรับให้เหมาะสมของแบบสอบถาม: ช่วงเวลา
ในหลักฉันมีช่วงเวลาสองชนิด: presence time และ absence time absence time อาจเป็นประเภทที่แตกต่างกัน (เช่นตัวแบ่งการขาดวันพิเศษและอื่น ๆ ) และช่วงเวลาอาจทับซ้อนและ / หรือตัดกัน มันเป็นความไม่แน่นอนว่ามีเพียงการรวมกันเป็นไปได้ของช่วงเวลาที่มีอยู่ในข้อมูลดิบเช่น การทับซ้อนช่วงเวลาการแสดงตนไม่สมเหตุสมผล แต่อาจมีอยู่ ฉันพยายามระบุช่วงเวลาการแสดงตนที่เกิดขึ้นในหลาย ๆ ทางในตอนนี้สำหรับฉันความสะดวกสบายที่ดีที่สุดน่าจะเป็น follwing ;with "timestamps" as ( select "id" = row_number() over ( order by "empId", "timestamp", "opening", "type" ) , "empId" , "timestamp" , "type" , "opening" from ( select …

3
วิธีแมปเซิร์ฟเวอร์อื่นผ่าน SQL Server Management Studio
ฉันพยายามแมปเซิร์ฟเวอร์อื่นโดยให้คำสั่ง EXEC xp_cmdshell 'NET USE H:\\568.256.8.358\backup_147 1234abc /USER:cranew /PERSISTENT:yes' ฉันพบข้อผิดพลาดกับสิ่งนี้: ไม่พบเส้นทางเครือข่าย แต่ฉันสามารถแมปเซิร์ฟเวอร์อื่นด้วยตนเองได้ โปรดช่วยฉันในการเรียงลำดับ

1
ความแตกต่างระหว่าง EXECUTE AS USER และ EXECUTE AS LOGIN ที่ทำให้อันที่สองทำงานโดยไม่คาดหมายคืออะไร
เมื่อเร็ว ๆ นี้ฉันใช้ EXECUTE AS LOGIN เพื่อตรวจสอบว่าบางคนสามารถหรือไม่สามารถใช้ฟังก์ชันตารางในฐานข้อมูลของเรา การทดสอบแสดงให้เห็นว่าเขาทำได้ แต่เขารายงานความล้มเหลวซ้ำ ๆ บุคคลนั้นใช้ชื่อเข้าสู่ระบบ 'WEB' เพื่อเชื่อมต่อกับฐานข้อมูลและมีผู้ใช้ 'เว็บ' ในฐานข้อมูลที่เกี่ยวข้องกับชื่อเข้าสู่ระบบ 'เว็บ' ดังนั้นฉันจึงลองใช้สคริปต์ต่อไปนี้: -- part 1 EXECUTE AS USER = 'WEB' GO SELECT USER_NAME() AS 'user_name' ,SUSER_NAME() AS 'suser_name' ,SUSER_SNAME() AS 'suser_sname' ,SYSTEM_USER AS 'system_user' GO REVERT GO และ -- part 2 EXECUTE AS LOGIN = …

3
ข้อ จำกัด อย่างหนักสำหรับการรวมบทความการจำลองแบบนับรวมกันไหม
พื้นหลังเล็กน้อย เราพัฒนาแอพที่ใช้การจำลองแบบผสาน ขณะนี้เรากำลังเผยแพร่บทความประมาณ 212 บทความและทุกอย่างเรียบร้อยดีเนื่องจากดูเหมือนว่าจะอยู่ในขอบเขตการ จำกัด จำนวนบทความที่ 256 (การใช้ SQL Standard 2005 ที่เซิร์ฟเวอร์และ 2005 Express ที่ระดับสมาชิก) เราอยู่ในขั้นตอนการพัฒนาเวอร์ชั่นใหม่โดยมีฐานข้อมูลใหม่ที่สร้างขึ้นจากพื้นฐานซึ่งจะมีความต้องการระบบขั้นต่ำของฝั่งเซิร์ฟเวอร์ SQL 2008 R2 Standard และ Express 2008 R2 ที่ปลายไคลเอนต์ซึ่งดูเหมือนว่าจะมี จำกัด การนับ 256 เดียวกันสำหรับบทความที่เผยแพร่ (ใช่เราจะสนับสนุนปี 2012 ด้วยเช่นกัน) คำถามมาในที่เราได้ทดสอบเผยแพร่บทความมากกว่า 400 รายการในเวอร์ชันใหม่และการทดสอบทุกอย่างใช้งานได้ (การสร้างผับการสร้างสแนปชอตและการสมัครสมาชิกและการจำลองแบบเอง) มีใครเกินขีด จำกัด การนับก่อนหน้านี้หรือไม่และนี่เป็นเพียงข้อ จำกัด ที่แนะนำอย่างนุ่มนวลหรือไม่ เราไม่เห็นข้อผิดพลาดใด ๆ ทั้งในระหว่างการสร้างสิ่งพิมพ์หรือการสร้างสมาชิก ตามบทความนี้: http://msdn.microsoft.com/en-us/library/ms143432%28v=sql.105%29 ฉันรอการโทรกลับจาก Microsoft แต่ฉันต้องการทราบว่ามีใครเห็นสิ่งนี้มาก่อนใน …

1
วิธีสร้างทริกเกอร์ที่อัปเดตฟิลด์วันที่และฟิลด์เวลาเมื่อแก้ไขแถว
ฉันสร้างตารางtesttableภายในฐานข้อมูลtestbaseที่มีโครงสร้างต่อไปนี้: product_no (int, not null) product_name (varchar(30), not null) price (money, null) expire_date (date, null) expire_time (time(7), null) อย่างไรก็ตามฉันจะเขียนทริกเกอร์อย่างไรเพื่อให้อัปเดตแถวเฉพาะที่มีการแก้ไข (หรืออัปเดตด้วยข้อมูลใหม่) และบันทึกวันที่แก้ไขลงในexpire_dateฟิลด์และเวลาแก้ไขในexpire_timeฟิลด์ (หรือถ้าเป็นไปได้?)

3
มีวิธีทดสอบว่า DELETE จะล้มเหลวเนื่องจากข้อ จำกัด หรือไม่
ฉันต้องการที่จะคาดการณ์ว่าจะมีการลบ DELETE หรือไม่โดยไม่ทำการลบ ตัวเลือกของฉันสำหรับการทำสิ่งนี้มีอะไรบ้าง มีวิธีง่ายๆในการทำ "dry run" ของ DELETE หรือไม่?

4
ตรวจสอบว่า 2 ตาราง (บนเซิร์ฟเวอร์ที่แตกต่างกัน) มีข้อมูลที่แน่นอนเหมือนกัน
ดังนั้นดูเหมือนว่า บริษัท ที่โฮสต์ SQL Server ของเรามีปัญหากับการจำลองแบบจากเซิร์ฟเวอร์การผลิตไปยังเซิร์ฟเวอร์การสำรองข้อมูล ... ฉันเชื่อว่าบางส่วนของตารางได้ถูกจำลองอย่างถูกต้องแม้ว่า การจำลองแบบเสร็จสิ้นทุกวัน (หลังจากชั่วโมง) มีวิธีที่ฉันสามารถเปรียบเทียบ 2 ของตารางเดียวกัน 1 จากสำรอง vs 1 จากเซิร์ฟเวอร์การผลิตเพื่อดูว่าการจำลองแบบคืนที่ผ่านมาทำงานหรือไม่ วิธีเดียวที่ฉันสามารถค้นหาได้คือเรียกใช้แบบสอบถามต่อไปนี้บนเซิร์ฟเวอร์ทั้งสองและดูว่าผลลัพธ์ที่ตรงกับ "อาจ" หมายความว่าถึง 2 ตารางมีข้อมูลเดียวกันหรือไม่ SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM ( SELECT * FROM table_to_compare ) t1 ใช้รหัสข้างต้นดูเหมือนว่าตารางทำซ้ำได้สำเร็จเนื่องจากค่า checksum เหมือนกัน แต่ฉันไม่แน่ใจว่าวิธีนี้น่าเชื่อถือเพียงใด ไม่มีใครรู้วิธีที่ดีกว่าในการตรวจสอบนี้หรือถ้าเป็นวิธีที่ดี? ฉันใช้ SQL Server 2008 บนคอมพิวเตอร์ที่ใช้ Windows Server 2008 ขอบคุณ

5
ฟังก์ชัน SQL ตารางที่มีค่าเพื่อแยกคอลัมน์บนเครื่องหมายจุลภาค
ฉันเขียน Table Valued Function ใน Microsoft SQL Server 2008 เพื่อใช้คอลัมน์คั่นด้วยเครื่องหมายจุลภาคในฐานข้อมูลเพื่อแยกแถวที่แยกออกสำหรับแต่ละค่า เช่น: "หนึ่งสองสามสี่" จะส่งคืนตารางใหม่โดยมีเพียงหนึ่งคอลัมน์ที่มีค่าต่อไปนี้: one two three four รหัสนี้มีข้อผิดพลาดเกิดขึ้นกับคุณหรือเปล่า? เมื่อฉันทดสอบด้วย SELECT * FROM utvf_Split('one,two,three,four',',') มันวิ่งไปตลอดกาลและจะไม่ส่งคืนสิ่งใดเลย นี่เป็นสิ่งที่ทำให้ท้อใจโดยเฉพาะอย่างยิ่งเนื่องจากไม่มีฟังก์ชั่นแยกในเซิร์ฟเวอร์ MSSQL (ทำไมเพราะอะไร?!) และฟังก์ชั่นที่คล้ายกันทั้งหมดที่ฉันพบบนเว็บเป็นถังขยะแน่นอนหรือไม่เกี่ยวข้องกับสิ่งที่ฉันพยายามทำ . นี่คือฟังก์ชั่น: USE *myDBname* GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR) RETURNS @SplitValues …

2
ดัชนีใช้หน่วยความจำหรือไม่
ฉันเพิ่งเริ่มเรียนรู้เกี่ยวกับการใช้หน่วยความจำบน SQL Server เมื่อใช้แบบสอบถามในคำตอบของคำถามSQL Server 2008 R2 "Ghost Memory" ฉันค้นพบว่าฐานข้อมูลเดียวใช้พื้นที่แบ่งส่วนของสิงโตในบัฟเฟอร์พูล ดูเพิ่มเติมการใช้sys.allocation_unitsและsys.indexesฉันยืนยันว่าน่าจะเกิดจากการใช้ดัชนีจำนวนมากในฐานข้อมูล ดัชนีส่วนใหญ่เป็นกลุ่ม นักพัฒนาฐานข้อมูลรายอื่นเชื่อว่าเรากำลังประสบปัญหาหน่วยความจำบนเซิร์ฟเวอร์ - ข้อความค้นหาเริ่มต้นทำงานได้นานเนื่องจากไม่มีหน่วยความจำที่พร้อมใช้งาน คำถามของฉันคือ - การใช้ดัชนีเหล่านี้และการมีอยู่ของพวกเขาในบัฟเฟอร์พูลทำให้มีหน่วยความจำว่างสำหรับกระบวนการอื่นหรือไม่?

3
ประสิทธิภาพ TSQL - เข้าร่วมกับมูลค่าระหว่างต่ำสุดและสูงสุด
ฉันมีสองตารางที่ฉันเก็บ: ช่วง IP - ตารางการค้นหาประเทศ รายการคำขอมาจาก IP ที่ต่างกัน IP ถูกเก็บไว้เป็นbigints เพื่อปรับปรุงประสิทธิภาพการค้นหา นี่คือโครงสร้างของตาราง: create table [dbo].[ip2country]( [begin_ip] [varchar](15) NOT NULL, [end_ip] [varchar](15) NOT NULL, [begin_num] [bigint] NOT NULL, [end_num] [bigint] NOT NULL, [IDCountry] [int] NULL, constraint [PK_ip2country] PRIMARY KEY CLUSTERED ( [begin_num] ASC, [end_num] ASC ) ) create table Request( Id …

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

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