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

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

2
การทำธุรกรรมในขั้นตอนการจัดเก็บ
ฉันต้องการดำเนินการ UPDATE และ INSERT ในธุรกรรมเดียว รหัสนั้นทำงานได้ดีในตัวของมันเอง แต่ฉันต้องการที่จะสามารถเรียกมันได้อย่างง่ายดายและผ่านพารามิเตอร์ที่ต้องการ เมื่อฉันพยายามทำธุรกรรมนี้ในขั้นตอนการจัดเก็บฉันพบข้อผิดพลาดทางไวยากรณ์มากมาย ฉันจะแค็ปซูลโค้ดต่อไปนี้เพื่อให้สามารถเรียกได้อย่างง่ายดาย? BEGIN TRANSACTION AssignUserToTicket GO DECLARE @updateAuthor varchar(100) DECLARE @assignedUser varchar(100) DECLARE @ticketID bigint SET @updateAuthor = 'user1' SET @assignedUser = 'user2' SET @ticketID = 123456 UPDATE tblTicket SET ticketAssignedUserSamAccountName = @assignedUser WHERE (ticketID = @ticketID); INSERT INTO [dbo].[tblTicketUpdate] ([ticketID] ,[updateDetail] ,[updateDateTime] …

2
แคตตาล็อกข้อความแบบเต็มพร้อมการเปลี่ยนแปลงจะติดตาม: AUTO จะอัปเดตโดยอัตโนมัติหรือไม่หากการติดตามการเปลี่ยนแปลงสำหรับตารางนั้นไม่ได้เปิดใช้งานหรือไม่
ฉันมีตารางฐานข้อมูลนี้ที่ควรเก็บดัชนีข้อความแบบล่าสุด อย่างไรก็ตามฉันไม่เห็นว่าเกิดขึ้นเลย (ไม่มีข้อผิดพลาดในบันทึกเพราะบันทึกล่าสุดที่ฉันเห็นคือเมื่อฉันเรียกมันด้วยตนเอง) นี่คือสิ่งที่ฉันเห็น ... แต่บนโต๊ะตัวเอง ... นี่อาจเป็นสาเหตุที่ไม่เกิดขึ้นโดยอัตโนมัติหรือไม่

2
การจัดการโซนเวลาใน data mart / คลังสินค้า
เราเริ่มออกแบบหน่วยการสร้างดาต้ามาร์ต / คลังสินค้าและเราต้องสามารถรองรับโซนเวลาทั้งหมด (ลูกค้าของเรามาจากทั่วทุกมุมโลก) จากการอ่านการสนทนาออนไลน์ (และในหนังสือ) ดูเหมือนว่าวิธีแก้ปัญหาทั่วไปจะมีมิติวันที่และเวลาแยกจากกันรวมถึงการประทับเวลาในตารางข้อเท็จจริง อย่างไรก็ตามคำถามที่ฉันมีเวลาตอบยากคือขนาดและวันที่และเวลาที่ดีสำหรับฉันจริง ๆ แล้วพิจารณาความต้องการโซนเวลาแบบไดนามิกของฉันได้อย่างไร มิติเวลาทำให้รู้สึกมากกว่าเล็กน้อย แต่ฉันมีเวลายากกับมิติวันที่ แนวทางการออกแบบทั่วไปสำหรับส่วนข้อมูลวันที่มักจะมีคุณสมบัติเช่นชื่อวันวันในสัปดาห์ชื่อเดือน ฯลฯ ปัญหาที่ฉันมีอยู่ทั้งหมดคือ 23.00 น. ในวันอังคารที่ 31 ธันวาคม 2013 ใน UTC คือวันพุธ , 1 มกราคม 2014 ในโซนเวลาทั้งหมดที่อยู่หลัง UTC + 2 ดังนั้นถ้าฉันจะต้องทำการแปลงโซนเวลาเหล่านี้ทั้งหมดในทุก ๆ แบบสอบถาม (และรายงาน) แล้วประเด็นของการมีและการจัดเก็บคุณสมบัติเหล่านี้ที่ฉันอาจจะไม่เคยใช้ (ดูเหมือน) คืออะไร? บางคนแนะนำให้มีแถวความจริงสำหรับแต่ละเขตเวลา แต่ดูเหมือนว่าไร้สาระสำหรับฉัน เราต้องสามารถเก็บบันทึกได้หลายล้านรายการในแต่ละเดือน คนอื่น ๆ แนะนำให้มีตารางบริดจ์โซนเวลาซึ่งแม้ว่าจะมีเหตุผลบางอย่าง แต่ก็ดูเหมือนว่าจะมีความซับซ้อนและการรวมพิเศษเพื่อให้บรรลุสิ่งที่ลูกค้าและแอพของฉันควรจะสามารถหาได้จากวันที่ (การรายงานจะใช้เว็บเป็นหลัก ที่ซึ่งมีไลบรารีจำนวนมากมายเพื่อช่วยในการแปลงแสดงและจัดรูปแบบวันที่) สิ่งเดียวที่ฉันคิดได้คือความง่ายและประสิทธิภาพของการจัดกลุ่มตามวันที่และเวลา แต่วิธีที่แย่คือการจัดกลุ่มตามวันที่ …

8
SqlLocalDB ไม่สามารถเริ่มต้นด้วยบัญชี Windows ของฉัน
ฉันเป็นผู้ดูแลระบบและเพียงเรียกใช้คำสั่ง: sqllocaldb start v11.0 ผลลัพธ์: Start of LocalDB instance "v11.0" failed because of the following error: Error occurred during LocalDB instance startup: SQL Server process failed to sta rt. บันทึกตัวแสดงเหตุการณ์รหัสเหตุการณ์: 528 การเรียก Windows API WaitForMultipleObjects ส่งคืนรหัสข้อผิดพลาด: 575 ข้อความแสดงข้อผิดพลาดของระบบ Windows คือ: {ข้อผิดพลาดของแอปพลิเคชัน} แอปพลิเคชันไม่สามารถเริ่มการทำงานได้อย่างถูกต้อง (0x% lx) คลิกตกลงเพื่อปิดแอปพลิเคชัน รายงานที่บรรทัด: 3621 ฉันลองบัญชีอื่น (ผู้ใช้และผู้ดูแลระบบ) ไม่มีปัญหากับพวกเขา …

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 เป็นไปได้ไหม ฉันรู้ว่าฉันสามารถประกาศตัวแปรตารางท้องถิ่นและส่งออกตรงนั้น แต่ฉันอยากจะข้ามมันถ้าเป็นไปได้

4
ลำดับของคอลัมน์ในดัชนี columnstore สำคัญหรือไม่
ฉันมีตารางที่มี ~ 200 ล้านแถวและอีก 15 คอลัมน์ในนั้น ฉันวางแผนที่จะสร้างCOLUMNSTOREดัชนีบนโต๊ะของฉัน จะมีการเปลี่ยนแปลงใด ๆ เกี่ยวกับประสิทธิภาพขึ้นอยู่กับลำดับของคอลัมน์ที่ฉันใช้ในดัชนี columnstore หรือไม่ ถ้าใช่ตรรกะอะไรที่อยู่เบื้องหลัง

4
แสดงรายการงานตารางเวลาและชุดข้อมูลการเรียกใช้ที่กำหนดเวลาไว้ถัดไป
แสดงรายการงานตารางเวลาและชุดข้อมูลการเรียกใช้ที่กำหนดเวลาไว้ถัดไป ฉันกำลังพยายามแสดงรายการงานตารางเวลาและกำหนดการเรียกใช้ชุดข้อมูลต่อไป อย่างไรก็ตามฉันดูเหมือนจะไม่ประสบความสำเร็จ sysjobactivity มี next_scheduled_run_date ซึ่งเป็นสิ่งที่ฉันต้องการ แต่ฉันไม่สามารถคิดออกเพื่อเชื่อมต่อกับทั้งงานและกำหนดการ หากมีวิธีอื่นนอกเหนือจากผ่านsysjobactivityโปรดแนะนำฉันไปที่นั่น SELECT sj.name AS jobName , ss.name AS scheduleName , sja.next_scheduled_run_date FROM msdb.dbo.sysjobs sj INNER JOIN msdb.dbo.sysjobactivity sja ON sja.job_id = sj.job_id INNER JOIN msdb.dbo.sysjobschedules sjs ON sjs.job_id = sja.job_id INNER JOIN msdb.dbo.sysschedules ss ON ss.schedule_id = sjs.schedule_id WHERE (sj.name LIKE 'xray%') …

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

2
MAXDOP = 1, คำแนะนำการสืบค้นและเกณฑ์ค่าใช้จ่ายสำหรับความเท่าเทียม
หากมีการMAXDOPตั้งค่าอินสแตนซ์ที่ 1 และคำแนะนำแบบสอบถามถูกใช้เพื่ออนุญาตให้แบบสอบถามเฉพาะขนานกันเป็นเกณฑ์ต้นทุนสำหรับค่า Parallelism ที่ SQL ยังคงใช้เพื่อตัดสินใจว่าจริงหรือไม่ขนานกันหรือไม่ ฉันไม่สามารถขุดข้อมูลเฉพาะนี้ได้แม้ว่าลิงก์นี้แสดงให้เห็นว่า CTFP จะถูกเพิกเฉยถ้าMAXDOPเป็น 1 สิ่งนี้สมเหตุสมผลโดยไม่มีคำแนะนำแบบสอบถามเนื่องจากไม่มีการร้องขอโดยไม่คำนึงถึงต้นทุนจะขนานกันเมื่อMAXDOPเป็น 1 ใครช่วยให้ฉันรู้ว่าพฤติกรรมที่คาดหวังของคำขอทั้งสองนี้จะเป็นอย่างไร ตัวอย่างที่ 1: Instance Maxdop: 1 CTFP: 50 Query hint: Maxdop=2 Query cost: 30 ตัวอย่างที่ 2: Instance Maxdop: 1 CTFP: 50 Query hint: Maxdop=2 Query cost: 70

5
วิธีการมีมากกว่า 100 รายการในคำสั่ง case เป็นตัวแปร
ฉันเขียนคำสั่ง case ด้วยตัวเลือกมากกว่า 100 ตัวเลือกซึ่งฉันใช้คำสั่งเดียวกันใน 4 แห่งในการค้นหาแบบง่าย แบบสอบถามเดียวกันสองครั้งที่มีการรวมกันระหว่างพวกเขา แต่ยังมีการนับและดังนั้นกลุ่มโดยยังมีคำสั่งกรณี นี่คือการติดฉลากชื่อ บริษัท บางรายการที่มีการสะกดคำที่แตกต่างกันสำหรับ บริษัท เดียวกันต่างกัน ฉันพยายามประกาศตัวแปรเป็น VarChar (MAX) declare @CaseForAccountConsolidation varchar(max) SET @CaseForAccountConsolidation = 'CASE WHEN ac.accountName like ''AIR NEW Z%'' THEN ''AIR NEW ZEALAND'' WHEN ac.accountName LIKE ''AIR BP%'' THEN ''AIR BP'' WHEN ac.accountName LIKE ''ADDICTION ADVICE%'' THEN ''ADDICTION ADVICE'' …

3
เป็นไปได้หรือไม่ที่จะเลือก RAISERROR หรือ THROW ขึ้นอยู่กับรุ่นของ SQL Server
นี่คือรหัสของฉันตอนนี้: BEGIN TRY INSERT INTO TABLE (F1,F2,F3) VALUES ('1','2','3') END TRY BEGIN CATCH ;THROW END CATCH ใช้งานได้ดีเว้นแต่ว่ามันจะทำงานบนเครื่องที่มี SQL 2008 ฉันต้องการให้ CATCH block ทำการตรวจสอบกับเวอร์ชันของ SQL และเรียกใช้ THROW ถ้ามันเท่ากับหรือสูงกว่าถึง 2012 และ RAISERROR ถ้าเป็น 2008 ฉันจะทำงานต่อไป ข้อผิดพลาดทางไวยากรณ์และฉันสงสัยว่ามันเป็นไปได้ แม้แต่สิ่งที่เรียบง่ายเช่นนี้ก็ไม่ได้ผลสำหรับฉัน BEGIN CATCH IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW END CATCH คำแนะนำใด ๆ ที่ชื่นชม

1
ตรวจสอบข้อ จำกัด ในการบังคับใช้ ###. ###. #### จับคู่รูปแบบ
ฉันต้องการตรวจสอบข้อ จำกัด ที่บังคับใช้รูปแบบ regex นี้สำหรับรหัสหลายส่วน: ^\d{3}\.\d{3}\.\d{4}$ ... สามตัวเลข, จุด, สามตัวเลข, จุด, สี่ตัวเลข ฉันต้องสร้างฟังก์ชัน CLR เพื่อบังคับใช้การจับคู่รูปแบบหรือไม่และสามารถอ้างอิงฟังก์ชัน CLR ใน DDL ได้หรือไม่ มีวิธีในการบังคับใช้รูปแบบในอีกทางหนึ่งโดยใช้LIKEหรือไม่

4
จำนวนตัวแปรท้องถิ่นที่สามารถมีส่วนร่วมในการดำเนินงานของตลาดหลักทรัพย์สูงสุดคือเท่าไร
ฉันมีขั้นตอนการจัดเก็บที่มีตรรกะทางธุรกิจ ข้างในนั้นฉันมีตัวแปรประมาณ 1609 (อย่าถามฉันว่าทำไมนี่คือวิธีการทำงานของเครื่องยนต์) ฉันพยายามSETตัวแปรหนึ่งตัวต่อค่าที่เชื่อมโยงกันของตัวแปรอื่นทั้งหมด เป็นผลในระหว่างการสร้างฉันได้รับข้อผิดพลาด: ข่าวสารเกี่ยวกับ 8631, ระดับ 17, สถานะ 1, กระบวนงาน XXX, บรรทัด YYY ข้อผิดพลาดภายใน: ถึงขีด จำกัด สแต็กเซิร์ฟเวอร์แล้ว โปรดค้นหาการซ้อนที่อาจเกิดขึ้นในแบบสอบถามของคุณและพยายามทำให้มันง่ายขึ้น ฉันพบว่าข้อผิดพลาดเกิดจากจำนวนตัวแปรที่ฉันต้องใช้ในการSETดำเนินการ ฉันสามารถทำงานที่มอบหมายโดยแยกออกเป็นสองส่วน คำถามของฉันมีข้อ จำกัด บางประการในเรื่องนี้หรือไม่? ฉันตรวจสอบแล้ว แต่ไม่พบสิ่งใด เราตรวจสอบข้อผิดพลาดที่อธิบายในKBนี้ แต่นี่ไม่ใช่กรณีของเรา เราไม่ใช้CASEการแสดงออกใด ๆภายในรหัสของเรา เราใช้ตัวแปรชั่วคราวนั้นเพื่อเตรียมรายการค่าที่ต้องถูกแทนที่โดยใช้ฟังก์ชัน CLR เราอัปเดต SQL Server เป็น SP3 CU6 (รุ่นล่าสุด) แต่เรายังคงพบข้อผิดพลาด

1
SQL Server จัดเก็บการตั้งชื่อกระบวนงาน
[16_TestStoredProc]เราได้เริ่มต้นการตั้งชื่อวิธีการจัดเก็บของเราเป็น มีความหมายใด ๆ ที่ตั้งชื่อขั้นตอนการจัดเก็บเช่นนี้หรือไม่? ฉันจะไม่อธิบายว่าทำไมเราจึงทำเช่นนี้ ไม่ใช่ว่าฉันมีปัญหากับเรื่องนี้ แต่จะมีความหมายใด ๆ

1
งานไม่ทำงานตามกำหนดเวลา
ดังนั้นฉันจึงมีงานตัวแทน SQL พื้นฐานที่รันสคริปต์ Robocopy เพื่อย้ายไฟล์ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง Job เป็นชุดพื้นฐานที่ค่อนข้างสวย ด้วยตารางพื้นฐานที่สวย และมันก็ยังไม่ได้วิ่ง ฉันไม่ได้หมายถึงการวิ่งให้สำเร็จ มีเหตุผลใด ๆ ที่เป็นเช่นนี้หรือไม่? สำหรับข้อมูลเพิ่มเติมฉันจะเขียนสคริปต์งานเช่นกัน USE [msdb] GO /****** Object: Job [MoveMantisFilesToArchive] Script Date: 12/23/2015 10:21:52 AM ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 12/23/2015 10:21:52 AM ******/ IF NOT EXISTS …

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