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

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

5
สิทธิ์ใดที่จำเป็นสำหรับการตัดทอนตาราง
ฉันมีบัญชี SQL ที่มีสิทธิ์ต่อไปนี้ในฐานข้อมูล: db_executorบทบาทที่คุณเห็นบัญชีนี้เป็นสมาชิกของถูกสร้างขึ้นโดยสคริปต์นี้: CREATE ROLE [db_executor] AUTHORIZATION [dbo] GO GRANT EXECUTE TO [db_executor] GO เมื่อผมทำงานselect, update, insertหรือdeleteบนโต๊ะทำงานดี เมื่อฉันลองtruncateโต๊ะมันทำให้ฉันเกิดข้อผิดพลาดนี้: ไม่พบวัตถุ "TableName" เนื่องจากไม่มีอยู่หรือคุณไม่มีสิทธิ์ใช้งาน บัญชีนี้ได้รับอนุญาตอะไรหายไป?

3
วิธีที่ดีที่สุดในการรักษาขนาดล็อกไฟล์ SQL
ฉันค่อนข้างจะเป็น DBA ใหม่และฉันกำลังจัดการอินสแตนซ์ SQL Server 2012 ที่มีจำนวนกิจกรรมพอสมควร ฉันกำลังทำงานในโหมดการกู้คืนเต็มเพราะเราต้องการการกู้คืนเวลา ตอนนี้ฉันกำลังสำรองข้อมูลทั้งหมดของฐานข้อมูลและบันทึกทุกวันเวลาตีห้า ไฟล์บันทึกบางไฟล์มีขนาดสูงถึง 300GB และแม้หลังจากทำการสำรองข้อมูลไฟล์ก็จะไม่ลดขนาดลง ฉันสามารถทำให้พวกเขาลดขนาดได้โดยใช้สิ่งที่คล้ายกับ: BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn'; DBCC ShrinkFile([db1_log], 0); BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn'; DBCC ShrinkFile([db1_log], 0); BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn'; DBCC ShrinkFile([db1_log], 0); เมื่อฉันตรวจสอบ LSN ของไฟล์สำรองข้อมูลฉันเห็นสิ่งที่ชอบ: RESTORE headeronly FROM DISK …

4
การเปรียบเทียบค่า NULL ด้วยตนเองในตาราง
ฉันมักจะสับสนเกี่ยวกับพฤติกรรม t-sql ลึกลับบางอย่างเช่นต่อไปนี้ -- Create table t and insert values. use tempdb CREATE TABLE dbo.t (a INT NULL); -- insert 3 values INSERT INTO dbo.t values (NULL),(0),(1); GO set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null go -- expect 3 …

2
กรอกข้อมูลวันที่ที่หายไปด้วยค่าข้อมูลจากวันที่ที่เติมก่อนหน้าสำหรับกลุ่ม
รูปภาพตั๋วโต๊ะช่วยเหลือที่รับถ่ายโอนระหว่างแผนกต่างๆ เราต้องการทราบว่าแผนกคืออะไรในตอนท้ายของวันสำหรับตั๋วแต่ละใบสำหรับแต่ละวันที่เปิดตั๋ว ตารางประกอบด้วยแผนกสุดท้ายสำหรับแต่ละตั๋วสำหรับแต่ละวันที่เปิดซึ่งมีการเปลี่ยนแปลงในแผนก (รวมถึงแถวสำหรับวันที่เปิดตั๋วในตอนแรกและวันที่ปิด) ตารางข้อมูลมีลักษณะดังนี้: CREATE TABLE TicketAssigment ( TicketId INT NOT NULL, AssignedDate DATE NOT NULL, DepartmentId INT NOT NULL); สิ่งที่ฉันต้องการคือการกรอกวันที่ที่ขาดหายไปสำหรับ TicketId แต่ละอันโดยใช้ DepartmentId จากแถว TicketAssigment หน้าที่แล้วเรียงลำดับตามวันที่ หากฉันมี TicketAssigment แถวเช่นนี้: 1, '1/1/2016', 123 -- Opened 1, '1,4,2016', 456 -- Transferred and closed 2, '1/1/2016', 25 -- Opened 2, '1/2/2016', …

1
ดัชนีแบบคลัสเตอร์ไม่ได้ใช้ในคำสั่งลบ
ฉันมีตาราง SQL Server ที่กำหนดดังนี้ CREATE TABLE [dbo].[Production_Detail] ( [Id] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [dbo].[Production_Detail_Seq]), [Meta_Data_ID] INT NOT NULL , [Production_Detail_Time] DATETIME NOT NULL, [Production_Detail_Time_Local] DATETIME NOT NULL, [Production_Detail_Value] FLOAT NULL, [IntegratedDM] BIT NOT NULL DEFAULT 0, [DailyIntegratedDM] BIT NOT NULL DEFAULT 0, [InsertedDate] DateTime NOT NULL, [ModifiedDate] …

3
total_elapsed_time ใน DMV sys.dm_exec_requests ไม่ถูกต้องสมบูรณ์หรือไม่
ฉันกำลังเรียกใช้ SQL Server 2012 และพยายามรวบรวมแบบสอบถามเพื่อตรวจสอบการใช้ DMV อย่างไรก็ตามเมื่อดูที่total_elapsed_timeฟิลด์ในsys.dm_exec_requestsDMV ตัวเลขจะดูออกไป นี่คือตัวอย่าง: SELECT session_id, RunTime = CURRENT_TIMESTAMP, start_time, total_elapsed_time FROM sys.dm_exec_requests WHERE session_id = 284; session_id RunTime start_time total_elapsed_time 284 2016-04-07 16:14:03.690 2016-04-07 16:08:14.587 1419976 จากการคำนวณของฉัน * เวลาที่ผ่านไปควรอยู่ที่ประมาณ 349,103 - ไม่ใช่ 1,419,976 ที่ปิดโดยเกิน 4 ปัจจัย * จากความแตกต่างเป็นมิลลิวินาทีระหว่างเวลาปัจจุบันและstart_timeคือ SELECT DATEDIFF(MILLISECOND, '2016-04-07T16:08:14.587', '2016-04-07T16:14:03.690'); นี่คือข้อมูลเซิร์ฟเวอร์: SELECT …

2
ความหลากหลายในเวลาแทรกจำนวนมาก
ดังนั้นฉันจึงมีกระบวนการแทรกจำนวนมากเพื่อนำข้อมูลจากตารางการแสดงละครของเราและย้ายไปยังดาต้ามาร์ตของเรา กระบวนการนี้เป็นงานการไหลของข้อมูลอย่างง่ายพร้อมการตั้งค่าเริ่มต้นสำหรับ "แถวต่อชุด" และตัวเลือกคือ "tablock" และ "ไม่มีข้อ จำกัด ในการตรวจสอบ" โต๊ะค่อนข้างใหญ่ 587,162,986 ที่มีขนาดข้อมูล 201GB และ 49GB ของพื้นที่ดัชนี ดัชนีคลัสเตอร์สำหรับตารางคือ CREATE CLUSTERED INDEX ImageData ON dbo.ImageData ( DOC_ID ASC, ACCT_NUM ASC, MasterID ASC ) และคีย์หลักคือ: ALTER TABLE dbo.ImageData ADD CONSTRAINT ImageData PRIMARY KEY NONCLUSTERED ( ImageID ASC, DT_CRTE_DOC ASC ) ตอนนี้เราพบปัญหาที่BULK INSERTSSIS ทำงานช้าอย่างไม่น่าเชื่อ …

1
เหตุใด SQL Server จึงปฏิเสธที่จะอัปเดตสถิติเหล่านี้เป็นอย่างอื่นนอกจากสแกนแบบเต็ม
ฉันสังเกตเห็นการดำเนินการสถิติการอัปเดตอัตโนมัติ (20 นาที +) ที่ค่อนข้างใช้เวลานานในการสร้างคลังข้อมูลรายวัน ตารางที่เกี่ยวข้องคือ CREATE TABLE [dbo].[factWebAnalytics]( [WebAnalyticsId] [bigint] IDENTITY(1,1) NOT NULL, [MarketKey] [int] NOT NULL CONSTRAINT [DF_factWebAnalytics_MarketKey] DEFAULT ((-1)), /*Other columns removed*/ CONSTRAINT [PK_factWebAnalytics] PRIMARY KEY CLUSTERED ( [MarketKey] ASC, [WebAnalyticsId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = …

3
Backup internals - จะเกิดอะไรขึ้นเมื่องานสำรองทำงานในแง่ของการล็อคและค่าใช้จ่ายด้านประสิทธิภาพใน SQL Server
สำหรับ MySQL ฉันรู้ว่าฐานข้อมูลได้รับการสำรองข้อมูลแบบตารางต่อตารางในคำสั่ง SQL ผลลัพธ์นี้ในการล็อคและถ้าคุณอัปเดตคอลัมน์ในขณะที่สำรองข้อมูลคุณอาจพบปัญหาความสมบูรณ์ เพื่อความเข้าใจของฉันนี้ไม่ได้ใช้สำหรับ Microsoft SQL Server แต่ SQL Server จัดการกับสิ่งนี้ได้อย่างไร มีการตรึงภายในเพื่อให้ db สอดคล้องกันหรือไม่? นอกจากนี้ฉันได้ยินมาว่าการสำรองข้อมูลเป็นเธรดเดี่ยวซึ่งหมายความว่าใช้คอร์เดียวเท่านั้นโดยสมมติว่าคุณสำรองข้อมูลเป็นไฟล์เดียว นอกจากนี้สมมติว่าคุณมีเครื่องมัลติคอร์เช่น 16 คอร์หรืออย่างน้อยก็สำคัญมากกว่าหนึ่ง จากประสบการณ์ส่วนตัวของฉันฉันไม่เคยมีปัญหาเมื่อทำการสำรองข้อมูลไม่ล็อคหรือปัญหาค่าใช้จ่าย แต่ประสบการณ์ของฉันมี จำกัด นั่นเป็นเหตุผลที่ฉันแนะนำเสมอให้เปิดการบีบอัดข้อมูลสำรองในคุณสมบัติเซิร์ฟเวอร์ ดังนั้นจะเกิดอะไรขึ้นเมื่องานสำรองทำงาน และยังมีความแตกต่างอย่างมีนัยสำคัญสำหรับรุ่นที่แตกต่างกันอย่างไร เช่น 2008,2012 และ 2014 (ไม่ใช่ใบอนุญาต)

1
การกู้คืนฐานข้อมูล SQL Server 2012 ในสภาพพร้อมใช้งานสูง
ฉันมีฐานข้อมูลที่อยู่ในโหมดความพร้อมใช้งานสูงตลอดเวลาที่ซิงโครไนซ์กับฐานข้อมูลอื่นในอินสแตนซ์อื่น ฉันจะคืนค่าจาก.bakไฟล์ไปยังฐานข้อมูลหลักโดยใช้T-SQLอย่างไร ฉันยังใหม่กับความพร้อมใช้งานสูงและฉันได้รับคำแนะนำว่าฉันจำเป็นต้องลบฐานข้อมูลออกจากความพร้อมใช้งานสูงก่อนที่ฉันจะสามารถกู้คืนได้ ฉันหวังว่าฉันจะสามารถกู้คืนตรงไปยังหลักในขณะที่AlwaysOnยังคงเปิดใช้งานและมันจะซิงค์อัตโนมัติกับรอง

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

2
การติดตั้ง SQL Server 2012 Express ล้มเหลวด้วยข้อผิดพลาด“ ไม่พบหมายเลขอ้างอิงการเริ่มต้นโปรแกรมฐานข้อมูล”
ฉันพยายามติดตั้ง SQL Server Express 2012 ด้วย x64 x64 บน Windows 7 SP1 x64 เครื่องนี้เคยติดตั้ง SQL Server Express 2012 มาก่อน อินสแตนซ์นี้ได้รับการอัพเกรดเป็น SQL Server 2012 Standard ซึ่งได้ถูกถอนการติดตั้งไปแล้ว ต่อไปนี้เป็นตัวเลือกที่เลือกระหว่างการติดตั้ง: รวมการอัปเดตผลิตภัณฑ์ SQL Server ในการติดตั้ง - 2 เกี่ยวข้องกับ KB 2793634 ติดตั้งคุณสมบัติทั้งหมดไปยังไดเรกทอรีเริ่มต้น SQLEXPRESS อินสแตนซ์ที่มีชื่อในไดเร็กทอรีรูทอินสแตนซ์ดีฟอลต์ บัญชีบริการเริ่มต้น: โปรแกรมฐานข้อมูลเซิร์ฟเวอร์ SQL -> NT Service \ MSSQL $ SQLEXPRESS การกำหนดค่าเครื่องมือฐานข้อมูลเริ่มต้น การติดตั้งล้มเหลวโดยมีข้อผิดพลาดดังต่อไปนี้: …

1
คอลัมน์ sys.partition.rows มีความแม่นยำเพียงใด
มุมมองระบบsys.partitionsมีคอลัมน์ "แถว" ที่เป็นจำนวนแถวทั้งหมดในพาร์ติชันที่กำหนด สำหรับตารางที่ไม่ได้แบ่งพาร์ติชัน (หรือมีพาร์ติชันเดียวขึ้นอยู่กับวิธีที่คุณดู) คอลัมน์นี้ให้จำนวนแถวในตาราง SELECT COUNT(1) FROM TableNameฉันอยากรู้วิธีที่ถูกต้องคือคอลัมน์นี้และถ้าผมสามารถใช้มันแทน ฉันได้ทำการทดลองที่สร้างตารางและเพิ่มสองสามพันแถวลบสองสามร้อยเพิ่มอีกสองสามพัน ฯลฯ และจำนวนนั้นตายเสมอ อย่างไรก็ตามฉันมีตารางหนึ่งตารางที่มีประมาณ 700 ล้านแถวและดัชนีหลายรายการ แถวในsys.partitionsสำหรับดัชนีคลัสเตอร์นั้นตายไปแล้วอีกครั้งอย่างไรก็ตามดัชนีอื่น ๆ แสดงความแตกต่างเล็กน้อย (+ -20k) ไม่มีใครรู้วิธีคำนวณแถวนี้และถ้ามันถูกต้องตามที่ปรากฏ?

3
SQL Server ตัดค่า varchar โดยอัตโนมัติในการเปรียบเทียบเท่ากัน แต่ไม่เหมือนกับการเปรียบเทียบ
ฉันเจอพฤติกรรมที่น่าสนใจใน SQL Server (สังเกตในปี 2005 และ 2012) วันนี้ที่ฉันหวังว่าจะมีคนอธิบาย เคียวรีที่ทำการเปรียบเทียบโดยใช้=ในเขตข้อมูล NVARCHAR จะละเว้นพื้นที่ต่อท้ายในสตริง (หรือตัดค่าอัตโนมัติก่อนการเปรียบเทียบ) แต่แบบสอบถามเดียวกันโดยใช้ตัวlikeดำเนินการไม่ได้เพิกเฉยพื้นที่ การจัดเรียงที่ใช้คือ Latin1_General_CI_AS ในปี 2012 พิจารณาซอ Fiddle นี้: http://sqlfiddle.com/#!6/72262/4 โปรดสังเกตว่าตัวlikeดำเนินการไม่ส่งคืนผลลัพธ์สำหรับสตริงช่องว่างต่อท้าย แต่ตัว=ดำเนินการทำ ทำไมนี้ คะแนนโบนัส: ฉันไม่สามารถทำซ้ำสิ่งนี้ในเขตข้อมูล VARCHAR ฉันคิดว่าพื้นที่จะได้รับการจัดการในลักษณะเดียวกันในทั้งสองประเภทข้อมูล - จริงหรือไม่

1
ใช้มาตรฐาน SQL Server 2012 ด้วย Bitlocker
เรากำลังพยายามใช้ Bitlocker เพื่อรักษาความปลอดภัยฐานข้อมูล SQL Server 2012 เราไม่มีปัญหาใด ๆ ในการทำให้ bitlocker ทำงาน ... ปัญหาที่เรามีคือเมื่อไดรฟ์ถูกล็อค SQL Server จะไม่สามารถอ่านข้อมูลได้อีกต่อไป เรายินดีที่จะใช้ TDE อย่างชัดเจน แต่เนื่องจาก จำกัด รุ่น Enterprise จึงไม่ต้องไป เราเปิดใช้งาน TPM บนเซิร์ฟเวอร์แล้ว นี่เป็นโดเมน Windows และเราใช้การรับรองความถูกต้องของ Windows ... แต่เมื่อไดรฟ์ได้รับการเข้ารหัสเราจะไม่สามารถเข้าถึงฐานข้อมูลด้วยอะไรก็ได้ ฉันหายไปนี่อะไร

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