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

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


2
ฉันสามารถติดตั้ง SQL Server 2012 บนเครื่องที่มี 2008 R2 แล้วได้หรือไม่?
ฉันใช้ SQL Server 2008 R2 มาระยะหนึ่งแล้วมันใช้งานได้ดีมาก ตอนนี้ฉันต้องใช้ SQL Server 2012 จะมีผลกับฐานข้อมูลที่มีอยู่ของฉันหรือไม่ ความเสี่ยงในการติดตั้ง SQL Server 2012 บนเครื่องที่ SQL Server 2008 R2 มีความเสี่ยงมากแค่ไหน?

2
ต้องได้รับอนุญาตก่อนเพื่อดูไดอะแกรมฐานข้อมูล
ฉันเพิ่งตั้งค่า SSDT เพื่อให้นักพัฒนาของเราใช้ เราบังคับใช้การเปลี่ยนแปลงฐานข้อมูล dev ของเราทำผ่าน SSDT โดย จำกัด สิทธิ์ที่นักพัฒนาแต่ละคนมีเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ (db_datareader, db_datawriter) ภายใน SSDT เราเผยแพร่การเปลี่ยนแปลงของเราไปยังฐานข้อมูลโดยใช้สคริปต์การปรับใช้ซึ่งเชื่อมต่อโดยใช้การเข้าสู่ระบบด้วยสิทธิ์ระดับสูง คำถามของฉัน. เนื่องจากเราได้ใช้ความยาวนี้เพื่อล็อกฐานข้อมูล (เพื่อหยุดการเลื่อนสคีมา); มีวิธีใดบ้างที่นักพัฒนาสามารถดูไดอะแกรมในฐานข้อมูลนี้โดยไม่ต้องมีสิทธิ์ db_owner? ฉันรู้ว่านักพัฒนาซอฟต์แวร์แต่ละคนสามารถสร้างและดูไดอะแกรมของเขาหรือเธอได้ แต่ฉันต้องการให้พวกเขาสามารถดูไดอะแกรมทั้งหมดที่สร้างขึ้นโดยนักพัฒนาหลายคน ฉันไม่คิดว่ามันจะช่วยได้ แต่เรากำลังเรียกใช้ sql server 2012 ความช่วยเหลือใด ๆ จะได้รับอย่างมาก

5
แบบสอบถามโดยไม่ต้องระบุสคีมาของตาราง
ฉันนำเข้าตารางจาก SQL Server 2000 ไปยังฐานข้อมูล 2008 ของฉัน erpadmin.tablenameทุกตารางที่นำเข้าจะมีคำนำหน้าชื่อผู้ใช้ของฉันเช่น: ในคุณสมบัติตารางจะแสดงรายการ 'erpadmin' เป็น db schema เมื่อฉันเขียนแบบสอบถามตอนนี้ฉันต้องรวม 'erpadmin' ต่อหน้าชื่อตารางทั้งหมดซึ่งทำให้เกิดความสับสน ผลลัพธ์ปัจจุบัน: select * from erpadmin.tablename ผลลัพธ์ที่ต้องการ: select * from tablename

3
ฉันจะตรวจสอบว่ามีการ จำกัด ขนาด Express Edition ได้อย่างไร
ฉันสับสน. AFAIK SQL Server 2005 Express มีขีด จำกัด ของความจุ 4GB ฐานข้อมูล ข้อมูลขนาด อย่างไรก็ตามฉันมีผลลัพธ์ต่อไปนี้จากsp_spaceused: ฉันจะตรวจสอบว่า DB ของฉันมีขนาดเกินขีด จำกัด ได้อย่างไร? พื้นที่ที่ไม่ได้ปันส่วนเป็นจำนวนที่มากspace leftจนเกินขีด จำกัด หรือไม่? ฉันเหลือพื้นที่เท่าไหร่ ไม่index_sizeนับรวมในขีด จำกัด ?

5
การติดตั้ง SQL Server RAID 10 กับ RAID 5
ฉันใหม่เพื่อตั้งค่าเซิร์ฟเวอร์ SQL และ Vms บรรพบุรุษของฉันใช้ Raid 5 สำหรับ C Drive ซึ่งมีการติดตั้ง SQL และ RAID 10 สำหรับไฟล์ฐานข้อมูลและบันทึกฐานข้อมูล ฉันสงสัยว่ามันถูกต้องหรือควรใช้ RAID 5 สำหรับไฟล์ฐานข้อมูล SQL แทนหรือไม่ ความช่วยเหลือใด ๆ

3
สถิติของ SQL Server ถูกเก็บไว้ในฐานข้อมูลหรือบัฟเฟอร์พูลหรือไม่?
แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่

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

2
SQL Server หลังจากทริกเกอร์ INSERT
ฉันต้องการให้ทริกเกอร์นี้เริ่มทำงานหลังจากมีการแทรกข้อความmarriedในmarital_statusคอลัมน์นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ ALTER TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF (SELECT [marital_status] FROM inserted) = 'married' BEGIN INSERT INTO [dbo].[applicant_marriage_info]([dom]) VALUES('abc') END END

2
บันทึกการจัดส่ง - คืนค่ามาตรฐานด้วย - บน SQL Server 2012 ทำให้การแบ่ง
เราใช้บันทึกการจัดส่งและRESTORE WITH STANDBYใน SQL Server 2012 เพื่อคืนค่าฐานข้อมูลในโหมดอ่านอย่างเดียวเพื่อการรายงาน อย่างไรก็ตามการตั้งค่าการจัดส่งบันทึกยังคงทำลายหลังจากทำการคืนค่าการสำรองข้อมูลแฟ้มบันทึกหนึ่งหรือสองรายการ บันทึกการจัดส่งสินค้าจะหยุดเมื่อมันทำงานเป็นRESTORE WITH STANDBY; RESTORE WITH NORECOVERYไม่ทำให้เกิดปัญหาใด ๆ สัญชาตญาณเดียวของฉันเกี่ยวกับเรื่องนี้คือฐานข้อมูลหลักไม่ได้เป็นแบบไดนามิก ดังนั้นเมื่อไม่มีการทำธุรกรรมสิ่งนี้ทำให้เกิดปัญหากับRESTOREกระบวนการใช่ไหม ความคิดใด ๆ การแก้ไขที่รู้จักกัน? ฉันให้มันทำงานสองสามวันโดยใช้งานปกติที่อัปเดตอย่างหนักในสองตาราง เมื่องานหยุดการเรียกใช้การตั้งค่าการจัดส่งบันทึกอย่างรวดเร็วล้มเหลวไม่สามารถประมวลผลไฟล์. trn ฉันรีเซ็ตการจัดส่งบันทึกและพยายามดูว่ามันจะยังคงทำงานต่อไปโดยทำการอัปเดตเล็กน้อยโดยเปลี่ยนค่าของหนึ่งคอลัมน์ของหนึ่งระเบียนในตารางหรือใครก็ตามที่ยังคงล้มเหลวอยู่ ขอบคุณสำหรับคำตอบของคุณ PS: ข้อความที่ตัดตอนมาจากบันทึกของเรา 02/25/2013 13: 00, 00, LSRestore_DBDB01-A_BulldogDB, กำลังดำเนินการ, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, บันทึกการจัดส่งบันทึกขั้นตอนการทำงาน, 2013-02-25 13: 00: 12.31 *** ข้อผิดพลาด: ไม่สามารถใช้ไฟล์สำรองข้อมูลบันทึก '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB …

1
การกำหนดค่าแพ็คเกจ SSIS 2008 ถูกละเว้น
ด้วยการเปลี่ยนแปลงการกำหนดค่าแพคเกจในปี 2008 เทียบกับปี 2005 เมื่อฉันระบุ / ConfigFile something.dtsConfig บนบรรทัดคำสั่งตัวแปรที่กำหนดในแพ็คเกจจะเก็บค่าเวลาการออกแบบแทนการใช้การตั้งค่าจากไฟล์กำหนดค่า ฉันค่อนข้างแน่ใจว่าฉันเข้าใจวิธีการใช้ไฟล์ปรับแต่งภายนอกเพื่อใช้งานได้เลย ฉันได้อ่านบทความที่บอกว่ามีเพียงการกำหนดค่าในขณะออกแบบเท่านั้นที่จะเขียนทับการโหลดไฟล์ภายนอก นี่หมายความว่าฉันสามารถเปลี่ยนตัวแปรเป็นสตริงว่างได้แล้วพวกมันจะถูกเขียนทับหรือไม่? ฉันไม่สามารถลบตัวแปรอย่างสมบูรณ์! แล้วจำนวนเต็มล่ะ? ฉันเคยเห็นบทความที่กล่าวถึงการปิดโดยใช้การกำหนดค่าแพคเกจในแพคเกจ ฉันสามารถใช้ SSIS Package Editor หรือตัวแก้ไข XML เพื่อเปลี่ยนพา ธ ของไฟล์การกำหนดค่าในแพ็คเกจและจากนั้นจะใช้การตั้งค่าของไฟล์นั้น "ครั้งสุดท้าย" (โดยไม่คำนึงถึงตัวเลือกภายนอก / ConfigFile) แต่ฉันไม่ต้องการ การเปลี่ยนแพ็คเกจ ฉันต้องการแพ็คเกจหนึ่งที่มี Test.dtsConfig และ Production.dtsConfig และสามารถสลับไปมาได้โดยไม่ต้องเปลี่ยนแพคเกจ อะไรคือวิธีที่แนะนำให้ทำตอนนี้?

1
การแปลงประเภทในการแสดงออกอาจส่งผลกระทบต่อ "CardinalityEstimate" ในตัวเลือกแผนแบบสอบถาม?
ฉันรักษาฐานข้อมูลเก็บถาวรที่เก็บข้อมูลประวัติในมุมมองที่แบ่งพาร์ติชัน คอลัมน์แบ่งเป็นวันที่และเวลา แต่ละตารางใต้มุมมองจะเก็บข้อมูลหนึ่งเดือน เรา จำกัด กิจกรรมในแต่ละตารางด้วยข้อ จำกัด การตรวจสอบในคอลัมน์วันที่และเวลา สิ่งนี้อนุญาตให้เครื่องมือเพิ่มประสิทธิภาพ จำกัด ตารางที่ค้นหาการสืบค้นที่กรองในคอลัมน์วันที่และเวลาของเหตุการณ์ ชื่อของข้อ จำกัด การตรวจสอบถูกสร้างขึ้นโดย SQL Server ดังนั้นจึงยากที่จะรู้ว่าสิ่งที่พวกเขาทำโดยดูที่ชื่อของพวกเขา ฉันต้องการชื่อข้อ จำกัด ที่จะมีรูปแบบ 'CK_TableName_Partition' ฉันสามารถสร้างสคริปต์การเปลี่ยนชื่อโดยใช้แบบสอบถามนี้และคัดลอกข้อมูลจากคอลัมน์ sql_text WHERE clause ตรงกับการตรวจสอบข้อ จำกัด ที่ชื่อดูเหมือนว่าถูกสร้างขึ้นโดย SQL Server: SELECT checks.name AS check_name, tabs.name AS table_name, skemas.name AS schema_name, cols.name AS column_name, N' EXECUTE sys.sp_rename @objname = N''' + …

4
ช่องว่างและเกาะ: โซลูชันไคลเอ็นต์เทียบกับข้อความค้นหา T-SQL
โซลูชัน T-SQL สำหรับช่องว่างและหมู่เกาะสามารถทำงานได้เร็วกว่าโซลูชัน C # ที่ทำงานบนไคลเอนต์หรือไม่ หากต้องการเจาะจงให้เราให้ข้อมูลการทดสอบบางอย่าง: CREATE TABLE dbo.Numbers ( n INT NOT NULL PRIMARY KEY ) ; GO INSERT INTO dbo.Numbers ( n ) VALUES ( 1 ) ; GO DECLARE @i INT ; SET @i = 0 ; WHILE @i < 21 BEGIN INSERT INTO dbo.Numbers ( …

1
มีตัวเลือกที่ดีกว่า Union All สำหรับการเลือกหลายตัวจากแถวเดียวกันหรือไม่
ตัวอย่างสคีมา: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) มีวิธีรับผลลัพธ์ที่ปรากฏเช่น: ID | OptionID | OptionName | OptionLName ฉันพยายามทำสิ่งนี้ให้สำเร็จโดยใช้ UNION ALL แต่นี่หมายถึงการข้ามแถวเดียวกัน 3 ครั้งในตัวอย่างของฉันในปัญหาจริงของฉันฉันต้องทำ …

2
การแบ่งพาร์ติชันบนกลุ่มไฟล์เดียว
ฉันมีตารางที่มีขนาดใหญ่มากในฐานข้อมูลของฉัน แต่ข้อมูลจำนวนมากนี้เป็น "เก่า" เนื่องจากสถานการณ์ที่อยู่นอกเหนือการควบคุมของฉันฉันไม่ได้รับอนุญาตให้ลบข้อมูล "เก่า" นี้ ข้อ จำกัด อื่น ๆ คือฉันไม่สามารถแก้ไขฐานข้อมูลหมายถึงเพิ่มกลุ่มไฟล์ลงในนั้น ทุกอย่างอยู่ในPRIMARYกลุ่มไฟล์ ฉันคิดว่าจะแบ่งพาร์ติชันตารางเหล่านี้ออกเป็นพาร์ติชั่นบางตัวเช่น "ใหม่", "เก่า", "เก็บถาวร" และที่คล้ายกัน ฉันมีคอลัมน์ "สถานะ" ที่ฉันต้องการใช้เพื่อจุดประสงค์นี้ จากสถานการณ์และข้อ จำกัด ที่อธิบายไว้ฉันสงสัยว่าการแบ่งพาร์ติชันเหมาะสมหรือไม่ กล่าวอีกนัยหนึ่งถ้าตารางของฉันถูกแบ่งพาร์ติชั่นด้วยวิธีนี้ แต่ทุกพาร์ติชั่นอยู่ในกลุ่มไฟล์เดียวกัน SQL Server จะฉลาดพอที่จะหาพื้นที่พิเศษในไฟล์ต้นแบบที่ข้อมูล "ใหม่" ของฉันอยู่และไม่ได้สัมผัส พื้นที่ที่มีข้อมูล "เก่า" หรือไม่ ถ้าจะให้แตกต่างกันถ้าสมมุติว่า 80% ของข้อมูลของฉันคือ "เก่า" SQL Server มีกลไกในการหลีกเลี่ยงการเข้าถึงไฟล์ต้นแบบ 100% หรือไม่และเข้าถึงได้เพียง 20% ซึ่งมีข้อมูล "ใหม่" (ซึ่งแน่นอนว่าฉันระบุคอลัมน์การแบ่งพาร์ติชันในส่วนWHEREคำสั่ง) ฉันเดาว่าจะตอบคำถามนี้ใครจะต้องเข้าใจว่าการแบ่งพาร์ติชั่นนั้นดำเนินการภายในอย่างไร ฉันขอขอบคุณพอยน์เตอร์ใด ๆ

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