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

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


2
ROW_NUMBER () โดยไม่มี PARTITION BY ยังคงสร้างตัวทำซ้ำของเซกเมนต์
ฉันกำลังเขียนเกี่ยวกับโพสต์บล็อกที่กำลังจะมาถึงของฉันเกี่ยวกับการจัดอันดับและฟังก์ชั่นหน้าต่างรวมโดยเฉพาะการวนซ้ำของโครงการเซกเมนต์และลำดับ วิธีที่ฉันเข้าใจว่าเซ็กเมนต์ระบุแถวในสตรีมที่ประกอบด้วยจุดสิ้นสุด / จุดเริ่มต้นของกลุ่มดังนั้นเคียวรีต่อไปนี้: SELECT ROW_NUMBER() OVER (PARTITION BY someGroup ORDER BY someOrder) จะใช้เซกเมนต์เพื่อบอกว่าแถวอยู่ในกลุ่มที่แตกต่างจากแถวก่อนหน้าหรือไม่ ตัววนซ้ำ Project Sequence จะทำการคำนวณจำนวนแถวตามจริงโดยขึ้นอยู่กับเอาต์พุตของเอาต์พุตของตัววนซ้ำของเซกเมนต์ แต่เคียวรีต่อไปนี้ซึ่งใช้ตรรกะนั้นไม่ควรรวมเซกเมนต์เนื่องจากไม่มีนิพจน์พาร์ติชัน SELECT ROW_NUMBER() OVER (ORDER BY someGroup, someOrder) อย่างไรก็ตามเมื่อฉันลองสมมติฐานนี้แบบสอบถามทั้งสองนี้ใช้ตัวดำเนินการของส่วน ข้อแตกต่างคือแบบสอบถามที่สองไม่จำเป็นต้องมีGroupByในส่วน นั่นไม่ได้ช่วยลดความจำเป็นในการแบ่งกลุ่มในตอนแรกใช่หรือไม่ ตัวอย่าง CREATE TABLE dbo.someTable ( someGroup int NOT NULL, someOrder int NOT NULL, someValue numeric(8, 2) NOT NULL, PRIMARY KEY CLUSTERED …

3
การส่งข้อมูลเกี่ยวกับผู้ที่ลบระเบียนไปยังทริกเกอร์ลบ
ในการตั้งค่าหลักฐานการตรวจสอบฉันไม่มีปัญหาในการติดตามว่าใครกำลังอัปเดตหรือแทรกระเบียนในตารางอย่างไรก็ตามการติดตามผู้ที่ลบระเบียนดูเหมือนว่าจะมีปัญหามากกว่า ฉันสามารถติดตามส่วนแทรก / อัพเดตได้โดยใส่ในส่วนแทรก / อัปเดตฟิลด์ "UpdatedBy" นี้จะช่วยให้เรียก INSERT / UPDATE ให้มีการเข้าถึงช่อง "UpdatedBy" inserted.UpdatedByผ่านทาง อย่างไรก็ตามด้วยการลบทริกเกอร์ไม่มีข้อมูลถูกแทรก / ปรับปรุง มีวิธีการส่งผ่านข้อมูลไปยังทริกเกอร์การลบเพื่อที่จะได้รู้ว่าใครเป็นผู้ลบบันทึกหรือไม่? นี่คือทริกเกอร์การแทรก / อัปเดต ALTER TRIGGER [dbo].[trg_MyTable_InsertUpdate] ON [dbo].[MyTable] FOR INSERT, UPDATE AS INSERT INTO AuditTable (IdOfRecordedAffected, UserWhoMadeChanges) VALUES (inserted.ID, inserted.LastUpdatedBy) FROM inserted ใช้ SQL Server 2012

1
เหตุใด sys.columns และ INFORMATION_SCHEMA.COLUMNS จึงแสดงคอลัมน์จำนวนแตกต่างกัน
ฉันพยายามสองวิธีในการแสดงคอลัมน์ที่มีชื่อเฉพาะ: INFORMATION_SCHEMA.COLUMNS SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME='SUPPLIER_NAME'; SYS.COLUMNS SELECT * FROM SYS.COLUMNS WHERE NAME='SUPPLIER_NAME' เหตุใดแบบสอบถามจึงแสดงผลลัพธ์ต่างกัน
11 sql-server 

1
Sch-M WAIT บล็อก Sch-S ใน SQL Server 2014 แต่ไม่ใช่ SQL Server 2008 R2?
เราเพิ่งโอนย้ายอินสแตนซ์การผลิตของเราจาก SQL 2008 R2 ไปเป็นเซิร์ฟเวอร์ SQL 2014 ใหม่ล่าสุด นี่เป็นสถานการณ์ที่น่าสนใจที่เราค้นพบกับการใช้บริการของเรา พิจารณาฐานข้อมูลที่มีBroker Enabled = trueด้วยและMyService MyQueueการจัดการข้อความพิษถูกปิดใช้งานในคิวนี้ มีการสนทนาอย่างน้อย 2 ครั้งที่มีข้อความในคิว ในหนึ่งกระบวนการ (SPID 100) ดำเนินการ: BEGIN TRANSACTION; DECLARE @conversation_group_id UNIQUEIDENTIFIER; RECEIVE TOP (1) @conversation_group_id = conversation_handle FROM MyQueue; โปรดทราบว่าเราปล่อยให้ธุรกรรมเปิดอยู่ ลองนึกภาพว่ามันเป็นโปรแกรม. NET ที่กำลังรอทรัพยากรภายนอกอยู่นาน ผ่านทางsys.dm_tran_locksเราเห็นว่า SPID นี้ได้รับการล็อคทรงเครื่องบนคิว | type | resource_id | mode | status | …

1
SQL Server 2014 Express ด้วย Advanced Services รองรับการค้นหาข้อความทั้งหมดหรือไม่
ฉันติดตั้ง SQL Server 2014 Express edition ด้วยบริการขั้นสูงแล้ว ฉันหวังว่าจะลองใช้คุณสมบัติการค้นหาข้อความแบบเต็ม ฉันอ่านที่นี่ว่าการค้นหาข้อความแบบเต็มได้รับการสนับสนุนโดยฉบับด่วนปี 2014 แต่หลังจากติดตั้งและพยายามสร้างดัชนีข้อความแบบเต็มฉันได้รับข้อผิดพลาดที่ระบุว่าดัชนีข้อความแบบเต็มไม่สนับสนุนในเซิร์ฟเวอร์ sql เวอร์ชันนี้ ดัชนีข้อความแบบเต็มได้รับการสนับสนุนจริงหรือไม่? มีโอกาสที่ฉันจะติดตั้งเวอร์ชันที่ไม่ถูกต้อง (ไม่ใช่บริการขั้นสูง) หรือไม่ ฉันถอนการติดตั้งและติดตั้งใหม่สองครั้งเพื่อให้แน่ใจ แต่ปัญหาเดียวกันทั้งสองครั้ง ฉันมั่นใจว่าฉันติดตั้งโดยใช้เครื่องมือติดตั้งบริการขั้นสูง ฉันใช้ Windows 7, 64 บิต

1
ลำดับกำลังใช้ซ้ำ
ฉันมีลำดับที่สร้างหมายเลขการติดตามสำหรับวัตถุในระบบของฉัน มันใช้งานได้ดีมาระยะหนึ่งแล้ว สัปดาห์ที่แล้วเราสังเกตเห็นว่ามันเริ่มที่จะใช้ค่าอีกครั้ง สิ่งที่น่าจะเกิดขึ้นก็คือในช่วงเย็นที่ต่างกันมันจะย้อนกลับไปสู่ค่าที่เคยมีเมื่อวันก่อน จากนั้นจะสร้างค่าต่อไปจากจุดนั้น ตัวอย่างเช่นฉันจะได้อะไรแบบนี้ 10112 10113 10114 10115 10116 10117 10118 10113 10114 10115 10116 ... ดูเหมือนว่าจะไม่มีรูปแบบใด ๆ เกิดขึ้นระยะเวลาระหว่างการใช้งานครั้งแรกกับการใช้ครั้งที่สอง (น้อยที่สุดเท่าที่ 10 นาทีหรือหลายชั่วโมง) หรือมีการย้อนกลับกี่ครั้ง ฉันคิดเกี่ยวกับการใช้งานการติดตาม (และยังอาจ) แต่ฉันไม่คิดว่าวัตถุลำดับจะถูกแก้ไขโดยตรง เหตุผลที่ฉันเชื่อว่านี่คือวันที่แก้ไขนั้นมีอายุหลายวันและชี้ไปที่เวลาที่เราชนค่าด้วยตนเองเพื่อลองและกำจัดรายการที่ซ้ำกัน (และปัญหาเกิดขึ้นหลายครั้งตั้งแต่นั้นมา) ไม่มีใครมีความคิดในสิ่งที่อาจทำให้เกิดการย้อนกลับลำดับและนำค่ากลับมาใช้ในแต่ละคืน? ปรับปรุง: เพื่อตอบคำถามสองสามข้อในความคิดเห็น: @@Version: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 19 ตุลาคม 2555 13:38:57 น สร้างสคริปต์: CREATE SEQUENCE …

1
การหยุดชะงักในการลบคำชี้แจง
ฉันได้รับการหยุดชะงักเมื่อ SQL Server Job ทำงาน การหยุดชะงักเกิดขึ้นกับคำสั่ง DELETE ง่าย ๆ ฉันคิดว่าจะต้องมีคิวรี SELECT / UPDATE ที่ทำงานอยู่เพื่อให้เกิดการหยุดชะงักหรือไม่ แต่ดูเหมือนว่าจะเป็นการหยุดชะงัก / DELETE ... สิ่งที่ฉันกำลังมองหาคือสาเหตุที่ฉันได้รับการหยุดชะงักของ DELETE / DELETE มันคือ (ความรู้ของฉัน) ผ่านในพารามิเตอร์ที่แตกต่างกัน ความคิดใด ๆ ขอบคุณ deadlock-list 2014-05-20 07:30:09.66 spid25s deadlock victim=process409048 2014-05-20 07:30:09.66 spid25s process-list 2014-05-20 07:30:09.66 spid25s process id=process409048 taskpriority=0 logused=0 waitresource=PAGE: 12:1:7127294 waittime=4352 ownerId=629860973 transactionname=DELETE …

1
การกู้คืนการสำรองข้อมูลส่วนต่างจะสร้างไฟล์บันทึก DEFUNCT หรือไม่
นี่คือปัญหาของฉัน ฉันกำลังพยายามย้ายฐานข้อมูลไปยังเซิร์ฟเวอร์ใหม่ผ่านการกู้คืนแบบเต็มจากนั้นตัดด้วยการสำรองข้อมูล / คืนค่าด่วน ฉันสามารถทำการกู้คืนแบบเต็มโดยไม่มีปัญหา แต่เมื่อกู้คืนการสำรองข้อมูลส่วนต่างฉันจะได้รับคำเตือนต่อไปนี้: ข่าวสารเกี่ยวกับ 3127, ระดับ 16, สถานะ 1, บรรทัด 1 ไฟล์ 'Database_Log2' ของฐานข้อมูลที่ถูกกู้คืน 'DatabaseName' กำลังถูกปล่อยให้อยู่ในสถานะหมดอายุเนื่องจากฐานข้อมูลใช้รูปแบบการกู้คืนอย่างง่ายและไฟล์ถูกทำเครื่องหมายสำหรับการเข้าถึงเพื่ออ่าน - เขียน ดังนั้นสามารถกู้คืนไฟล์แบบอ่านอย่างเดียวเท่านั้นโดยการกู้คืนทีละน้อย ฐานข้อมูลกู้คืนและพิจารณาออนไลน์ แต่การดำเนินการสำรองข้อมูลล้มเหลวเนื่องจากไฟล์ DEFUNCT นี้มีข้อผิดพลาดดังต่อไปนี้: ข่าวสารเกี่ยวกับ 3636, ระดับ 16, สถานะ 2, บรรทัด 1 เกิดข้อผิดพลาดขณะประมวลผลข้อมูลเมตา 'BackupMetadata' สำหรับฐานข้อมูล id 10 ไฟล์ id 6. ข่าวสารเกี่ยวกับ 3046, ระดับ 16, สถานะ 2, บรรทัด 1 …

2
ขั้นตอนงาน SQL ทำงานเป็นบัญชี sql ที่แตกต่างกัน
ฉันอยากรู้วิธีตั้งค่าขั้นตอนงาน SQL เพื่อดำเนินการเป็นบัญชีเข้าสู่ระบบ SQL อื่น ดูเหมือนว่าฉันจะต้องตั้งค่าบัญชีพร็อกซีใหม่ซึ่งต้องใช้ข้อมูลรับรองที่มีอยู่ เมื่อฉันสร้างข้อมูลรับรองตัวเลือกเดียวของฉันคือการใช้ข้อมูลรับรองเข้าสู่ระบบ Windows งานที่ฉันพยายามเรียกใช้อยู่ด้านล่าง มีคำสั่งเพิ่มเติมอื่น ๆ แต่เมื่อฉันตั้งค่าขั้นตอนงานให้ทำงานเป็นล็อกอิน SQL มันล้มเหลว insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; เมื่อสิ่งนี้ถูกเรียกใช้ผ่าน SQL Job Step มันจะล้มเหลว Executed as user: an_admin_account. …

1
การประมาณความต้องการ IO สำหรับการใช้งาน Bursty
เรามีแอพพลิเคชั่นที่สืบค้นฐานข้อมูล SQL เป็นระยะตลอดทั้งวัน มีกิจกรรมเป็นช่วงเวลาที่ศูนย์หรือกิจกรรมเบา ๆ สลับกับคำขอแต่ละรายการสำหรับข้อมูลจำนวนมาก เมื่อคำขอเหล่านั้นเข้ามามีวัตถุประสงค์หลักคือการส่งข้อมูลอย่างรวดเร็วและวัตถุประสงค์รองคือการดำเนินการที่คุ้มค่า เนื่องจากลักษณะของแอปพลิเคชันจึงไม่น่าเป็นไปได้ที่ข้อมูล / ดัชนีจะถูกแคชใน RAM จากการค้นหาก่อนหน้า (ผู้ใช้ที่ต่างกันซึ่งทำงานกับส่วนต่าง ๆ ของข้อมูล) สำหรับระบบที่มีประสบการณ์การใช้งานค่อนข้างคงที่ฉันเคยได้ยินกฏเกณฑ์ง่าย ๆ ในการสังเกตความยาวคิวของดิสก์และเก็บหมายเลขนั้นไว้ค่อนข้างน้อย สิ่งนี้จะทำงานเป็นพิเศษใน AWS โดยที่ฉันได้เห็นกฎของหัวแม่มือว่าความยาวคิวดิสก์ 1 ต่อ 100 IOPS นั้นสมเหตุสมผล ฉันจะประเมินข้อกำหนดของ IO สำหรับระบบดังกล่าวได้อย่างไร ความยาวคิวของดิสก์เป็นตัวบ่งชี้ที่เชื่อถือได้เมื่อต้องจัดการกับข้อความค้นหาแต่ละรายการหรือไม่ มีตัวชี้วัดอื่นที่ฉันควรพิจารณาหรือไม่

2
การเพิ่มดัชนีในคอลัมน์บิตช้าลงอย่างมีนัยสำคัญหรือไม่?
ฉันมีตารางที่มีประมาณ 1 ล้านถึง 5 ล้านบันทึก ส่วนเล็ก ๆ ของระเบียนนั้นมีหนึ่งในคอลัมน์บิตตั้งค่าเป็น 'TRUE' จำเป็นต้องค้นหาระเบียนนั้นอย่างรวดเร็ว ฉันคิดว่าดัชนีสามารถเพิ่มความเร็วในการค้นหาในคอลัมน์นี้ แต่ฉันกลัว INSERT ดังนั้นคำถามของฉัน ฐานข้อมูลทำงานเหมือนคลังข้อมูลดังนั้นจึงมี SELECT จำนวนมากและขนาดเล็ก (สูงสุด 10-20 ต่อวัน) แต่มี INSERT ที่ค่อนข้างใหญ่ (มากถึง 200,000 ระเบียนในคราวเดียว) ฉันกลัวว่าจะนำเข้าฐานข้อมูลนานขึ้น

3
วิธีการส่งออกข้อมูลที่เกี่ยวข้องกับความปลอดภัยทั้งหมดจากฐานข้อมูล SQL Server
อย่างที่คุณทราบกันดีว่า SQL Server ไม่ได้นำเสนอโซลูชันแบบทันทีเพื่อส่งออกข้อความเกี่ยวกับความปลอดภัยทั้งหมดที่ประกาศไว้สำหรับแต่ละองค์ประกอบในฐานข้อมูล (ทั้งที่ระดับฐานข้อมูลและระดับวัตถุ) ฉันกำลังพูดถึงความสามารถในการหาข้อมูลนี้ ผู้ใช้ทั้งหมด บทบาททั้งหมดที่ผู้ใช้กำหนด สิทธิ์ทั้งหมดในระดับฐานข้อมูล (เช่นฟังก์ชันสร้าง GRANT) สิทธิ์ทั้งหมดในระดับวัตถุ (เช่น GRANT SELECT ON OBJECT :: xxx) คุณอาจคิดว่า SQL Server ต้องมีสิ่งนี้ แต่ตัวช่วยสร้างการส่งออกเซิร์ฟเวอร์ SQL หรือสคริปต์ต่าง ๆ ที่สร้างขึ้นจากการคลิกขวาที่วัตถุจะจับข้อมูลนี้ ฉันได้เห็น“ วิธีแก้ปัญหาที่เป็นไปได้” ทางออนไลน์มากมายโดยใช้สคริปต์ที่ไม่ได้รับการดูแลซึ่งผู้คนโพสต์ไว้อย่างสง่างาม แต่เนื่องจากฉันต้องมั่นใจ 100% ว่าข้อมูลความปลอดภัยทั้งหมดถูกบันทึกไว้ ฉันมีตัวเลือกในการใช้สิ่งเหล่านี้เป็นจุดเริ่มต้นในการเขียนบางสิ่งบางอย่างด้วยตัวเอง แต่ฉันเกลียดที่จะต้องคิดค้นวงล้อใหม่สำหรับความต้องการที่คุณคิดว่าหลายคนอาจมี มีใครบางคนที่ให้บริการเครื่องมือ (ไม่ว่าจะเป็นส่วนหนึ่งของผลิตภัณฑ์ SQL Server หรือเครื่องมือของบุคคลที่สาม) ที่สามารถให้ข้อมูลนี้กับคุณได้อย่างน่าเชื่อถือใช่ไหม หรืออย่างน้อยจะมีสคริปต์สนับสนุนชุมชนที่คนส่วนใหญ่เห็นด้วย "จะทำงาน" หรือไม่? ขอบคุณ!

3
db_owner ไม่สามารถปล่อยฐานข้อมูล - ข้อผิดพลาด 615, SQL Server
ฉันมีฐานข้อมูล SQL Server 2012 ที่ทำงานบน amazon EC2 ฉันได้สร้างผู้ใช้เพื่อให้สามารถสร้างแก้ไขและวางฐานข้อมูลได้ ฉันให้ผู้ใช้ใหม่ด้วยdbcreatorบทบาทเซิร์ฟเวอร์ ผู้ใช้ของฉันสามารถเชื่อมต่อจากระยะไกลและรันcreate database foo;คำสั่งได้สำเร็จ แต่เมื่อผู้ใช้พยายามวางฐานข้อมูลอีกครั้งด้วยdrop database foo;คำสั่งล้มเหลวด้วยข้อผิดพลาดดังต่อไปนี้: Warning: Fatal error 615 occurred at Feb 1 2014 5:15PM. Note the error and time, and contact your system administrator. ErrorCode: 21 แม้ว่าฐานข้อมูลที่เลือกคือmaster(ดังนั้นฉันไม่คิดว่ามันเป็นเพราะมีการใช้งาน) และคำสั่งสำเร็จเมื่อฉันเรียกใช้อีกครั้งในฐานะผู้ใช้ที่เป็นผู้ดูแลระบบ ฉันตรวจสอบฐานข้อมูลที่สร้างขึ้นใหม่และผู้ใช้ของฉันได้รับมอบหมายdb_ownerบทบาทในฐานข้อมูลตามที่ฉันคาดไว้ดังนั้นความเข้าใจของฉันคือสิ่งนี้ควรเป็นสิทธิ์ที่เพียงพอสำหรับผู้ใช้นั้นเพื่อให้สามารถวางฐานข้อมูลที่เพิ่งสร้างขึ้นได้ ตามที่http://technet.microsoft.com/en-us/library/ms178613.aspxบทบาท db_owner ควรมีสิทธิ์เพียงพอ "ต้องการสิทธิ์การควบคุมบนฐานข้อมูลหรือแก้ไขสิทธิ์ฐานข้อมูลใด ๆ หรือการเป็นสมาชิกในบทบาทฐานข้อมูลคงที่ db_owner" ฉันค้นหาข้อผิดพลาด 615 และพบว่า …

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

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