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

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

2
การรับ“ สิทธิ์ SELECT ถูกปฏิเสธบนวัตถุ” แม้ว่าจะได้รับอนุญาตแล้วก็ตาม
ฉันเป็นโปรแกรมเมอร์ไม่ใช่ dba ... ฉันรู้ว่าเพียงพอที่จะเป็นอันตราย ฉันได้รับมรดกฐานข้อมูลด้วยผู้ใช้ดั้งเดิมที่เป็น db_owner สำหรับฐานข้อมูล เราไม่สามารถปรับการอนุญาตของผู้ใช้นี้สำหรับตาราง schema ที่มีอยู่ ฯลฯ ด้วยเหตุผลทางธุรกิจ แต่มีการสร้างตารางใหม่บางตารางขึ้นและฉันต้องการให้ผู้ใช้นี้มีสิทธิ์เข้าถึง SELECT เหล่านั้นเท่านั้น มีการตั้งค่าการอนุญาตสำหรับผู้ใช้นี้สำหรับตารางเหล่านี้เพื่อให้ทุกอย่างถูกปฏิเสธยกเว้น SELECT ซึ่งตั้งค่าเป็น GRANT แต่เมื่อผู้ใช้นี้ (dbadmin) พยายามทำการเลือกบนหนึ่งในตารางเหล่านี้ (AccountingAudit) ข้อผิดพลาดนี้เกิดขึ้น: The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'. ฉันใช้ SQL นี้เพื่อลองดูว่ามีการตั้งค่าการอนุญาตสำหรับตาราง / ผู้ใช้นี้: select object_name(major_id) as object, user_name(grantee_principal_id) as grantee, user_name(grantor_principal_id) …


1
สร้างวิธีเรียงสับเปลี่ยนและชุดค่าผสมสำหรับคอลัมน์ชื่อ
ฉันมีข้อมูลตัวอย่างต่อไปนี้สำหรับการเรียงสับเปลี่ยนและการรวมกัน create table tbltest ( name varchar(50), addres varchar(100) ); insert into tbltest values('Sam Mak John','Street 1 HNo 101 USA'); insert into tbltest values('Donatella Nobatti','HNo 101 UK'); insert into tbltest values('Sam Buca','Main Road B Block UAE'); insert into tbltest values('Juan Soponatime','Hight Street CA'); insert into tbltest values('Aaron Spacemuseum','HNo A10 100 …

1
ระบุสาเหตุที่แท้จริงสำหรับสาเหตุที่ฐานข้อมูลติดค้างอยู่ในสถานะเรียกคืน
ฉันรู้ว่ามีคำถามที่แก้ปัญหาของฐานข้อมูลที่ติดอยู่ในRESTORINGสถานะและได้ใช้โซลูชั่นเหล่านั้นเพื่อนำฐานข้อมูลด้วยตนเองกลับมาออนไลน์ แต่สถานการณ์ของฉันแตกต่างกันบ้าง ฉันมีการกู้คืนอัตโนมัติโดยใช้สคริปต์ Powershell ซึ่งคืนค่าสำเนาการผลิตไปยังอินสแตนซ์ DEV สคริปต์ไม่เปลี่ยนแปลงประมาณปีและบางครั้งกระบวนการกู้คืนจะเสร็จสิ้น แต่ฐานข้อมูลที่กู้คืนติดอยู่ในRESTORINGสถานะ (บางครั้งสคริปต์ทำงานได้ดีบางครั้งก็ล้มเหลวเช่นนี้) แต่ละครั้งถ้าฉันรันกระบวนการที่ทำงานด้วยตนเองอีกครั้งหรือถ้าฉันกู้คืนฐานข้อมูลด้วยตนเองจากส่วนติดต่อผู้ใช้ของ SSMS หรือผ่าน T-SQL จะเสร็จสมบูรณ์โดยไม่มีปัญหา ฉันพบคำตอบที่แนะนำให้เรียกใช้CHECKDBบนฐานข้อมูลที่คืนค่า แต่ไม่มีอะไรออกมาเป็นสาเหตุของปัญหานี้ เนื่องจากสคริปต์คืนค่าคืนค่าการสำรองข้อมูลทั้งหมดของฐานข้อมูลและใช้"WITH RECOVERY"ตัวเลือกฉันพยายามค้นหาสิ่งที่อาจหยุดกระบวนการกู้คืนแม้ว่าฉันจะกู้คืนโดยใช้"WITH RECOVERY"จริง ข้อเสนอแนะใด ๆ ที่ชื่นชมจริง ๆ ตั้งแต่ฉันติดอยู่ที่พยายามที่จะเข้าใจว่าทำไมสิ่งนี้เกิดขึ้นเป็นครั้งคราว ฉันอยากจะแก้ปัญหาต้นเหตุของปัญหามากกว่าจะรักษาอาการซึ่งก็คือการกู้คืนฐานข้อมูลด้วยตนเองอีกครั้ง ปรับปรุง: Github สรุปสาระสำคัญได้ @Brent แนะนำ - ที่นี่

1
ปัญหาการเข้ารหัสกับคอลัมน์ SQL Server VARCHAR ที่ดึงมาใน Python
เมื่อเร็ว ๆ นี้เรามีปัญหาเกี่ยวกับการเข้ารหัสที่เกี่ยวข้องกับเขตข้อมูลที่ถูกเก็บเป็น varchar (120) ใน SQL Server ใน SSMS, varchar จะปรากฏเป็น: "ใครฆ่า JonBen‚t" อย่างไรก็ตามเมื่อมันถูกนำเข้าสู่ไพ ธ อนมันจะปรากฏเป็น: ฉันค้นคว้าจากด้าน Python แล้วไม่มีอะไรแปลก ๆ เกิดขึ้น ทฤษฎีของฉันคือ varchar ใน SQL Server ยอมรับอักขระ UTF-8 ซึ่งแสดงใน python แตกต่างจาก SSMS ฉันไม่คุ้นเคยกับการเข้ารหัสใน SQL Server มาก ใครช่วยได้โปรดแจ้งให้เราทราบต่อไปนี้: มีวิธีใน SSMS เพื่อดูการเข้ารหัสของ varchar หรือไม่? ตัวอย่างเช่นดู \ x82 แทนที่จะแสดงเครื่องหมายจุลภาคเนื่องจากมาจาก SSMS หรือไม่ เรากำลังใช้ …

2
อัปเดตสถิติที่มีการสแกนเต็มรูปแบบใน SQL Server 2014 ใช้ 100% cpu บน 2008 R2, 15%
เหตุใดสถิติการปรับปรุงการสแกนแบบสมบูรณ์จึงใช้ 100% ของ CPU ใน SQL Server 2014 เมื่อใช้ CPU 20% ของ SQL Server 2008 R2 สำหรับตารางเดียวกันโดยมีความสามารถด้านฮาร์ดแวร์ที่คล้ายกัน ฉันได้ดูMAXDOPทางเลือกอื่น ๆ และไม่เห็นอะไรที่ชัดเจน ฉันรู้ว่าอาจมีการตั้งค่าที่อาจทำให้เกิดปัญหานี้ แต่การตั้งค่าคล้ายกันมากสำหรับฐานข้อมูลทั้งสอง (ตัวอย่างเช่นMAXDOPคือ 4 สำหรับทั้งคู่โดยที่ทั้งคู่มีหลายคอร์) ทั้งสองเป็น Enterprise Edition มีบางสิ่งที่ "แตกต่าง" ใน SQL Server 2014 เทียบกับ SQL Server 2008 R2 ที่สามารถอธิบายสิ่งนี้ได้หรือไม่ ฉันมีตัวเลือกหน่วยความจำที่ 90% สำหรับเซิร์ฟเวอร์ทั้งสอง มีความคิดเกี่ยวกับสิ่งที่จะมองหา? ฉันรันสถิติการอัพเดทด้วยการสแกนเต็มรูปแบบ (100%) สัปดาห์ละครั้งบนเซิร์ฟเวอร์สองเครื่องโดยใช้ SQL Server 2008 …

2
คำใบ้ Tablock ทำให้เกิดการหยุดชะงัก
ฉันใส่ชุดข้อมูลสองชุดโดยใช้การบันทึกขั้นต่ำลงในตาราง heap ที่ว่างโดยใช้ Execute SQL Tasks สองชุดที่ทำงานแบบขนานและ SQL ในรูปแบบต่อไปนี้ INSERT INTO Table (TABLOCK) SELECT FROM ... หลังจากงานหยุดทำงานหนึ่งในงาน SQL กลายเป็นเหยื่อการหยุดชะงัก ด้านล่างคือเอาต์พุต XML ของกราฟเดดล็อก ใครสามารถอธิบายสิ่งที่เกิดขึ้นภายใต้ประทุนได้หรือไม่? <resource-list> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process9609dc8" mode="Sch-S"/> <owner id="process9609dc8" mode="IX"/> </owner-list> <waiter-list> <waiter id="process5e13048" mode="X" requestType="convert"/> </waiter-list> </objectlock> <objectlock lockPartition="0" …

2
ดูเหมือนว่าคิวรีลบขนาดใหญ่จะหยุดชะงัก
เราเรียกใช้คิวรีการลบในฐานข้อมูลที่มีแถว 1.8 พันล้าน การลบนี้จะลบแถว 1.2 พันล้าน ในการเข้าใจย้อนหลังเราจะแยกแบบสอบถามนี้เป็น 100m ต่อครั้ง แต่เราอยู่ในตำแหน่งที่มีการเรียกใช้งานเป็นเวลา 24 ชั่วโมงและไฟล์บันทึกอยู่ที่ 2Tb ซึ่งดูเหมือนจะเป็นขนาดสูงสุดที่อนุญาตสำหรับไฟล์บันทึก ฐานข้อมูลอยู่ในโหมดการกู้คืนแบบง่าย มีการบันทึกแบบสอบถามนี้หรือไม่? หรือเราต้องรีสตาร์ทเซิร์ฟเวอร์ SQL และดูว่าเกิดอะไรขึ้น ฐานข้อมูลจะใช้ไม่ได้หรือไม่ มีอะไรที่เราสามารถทำได้เพื่อกำจัดสิ่งนี้ให้หมดจดที่สุด

3
แทนที่อักขระพิเศษในคอลัมน์ด้วยช่องว่าง
ฉันกำลังพยายามเขียนคิวรีที่แทนที่อักขระพิเศษด้วยช่องว่าง โค้ดด้านล่างช่วยในการระบุแถว (อักขระตัวเลขและตัวอักษรจุลภาคและช่องว่างใช้ได้): SELECT columnA FROM tableA WHERE columnA like '%[^a-Z0-9, ]%' ฉันจะรวมฟังก์ชั่นแทนที่ในคำสั่ง select ได้อย่างไรเพื่อให้อักขระทั้งหมดที่ไม่ใช่ตัวอักษรและตัวเลขจุลภาคและช่องว่างในชุดผลลัพธ์ถูกแทนที่ด้วย '' (ช่องว่าง) อันนี้จะไม่ทำงาน: SELECT replace(columnA,'%[^a-Z0-9, ]%',' ') FROM tableA WHERE columnA like '%[^a-Z0-9, ]%'


1
วิธีการทำซ้ำ“ ไม่สามารถสแกนด้วย NOLOCK ต่อเนื่องจากการเคลื่อนไหวของข้อมูล”
ฉันได้รับบางครั้ง "ไม่สามารถสแกนต่อNOLOCKเนื่องจากการเคลื่อนไหวของข้อมูล" กับงานขนาดใหญ่บางงานซึ่งมีWITH (NOLOCK)ในแบบสอบถามแบบใช้เลือกข้อมูล ฉันเข้าใจว่าสิ่งนี้เกี่ยวข้องกับการพยายามเลือกข้อมูลเมื่อมีการแบ่งหน้าซึ่งทำให้ข้อมูลไม่ได้อยู่ในที่ที่ควรจะเป็นอีกต่อไป - ฉันคิดว่าเป็นสิ่งที่เกิดขึ้นในสภาพแวดล้อมของฉัน ฉันจะทำสิ่งนี้ซ้ำได้อย่างไร ฉันพยายามหาวิธีแก้ปัญหาระยะสั้นเพื่อตรวจจับข้อผิดพลาดและลองใหม่เมื่อเกิดเหตุการณ์นี้ แต่ฉันไม่สามารถทดสอบได้หากฉันไม่สามารถทำซ้ำได้ มีวิธีที่เชื่อถือได้สมเหตุสมผลในการทำให้เกิดสิ่งนี้หรือไม่? เมื่อมันเกิดขึ้นการดำเนินการค้นหาผลลัพธ์อีกครั้งสำเร็จ - ดังนั้นฉันไม่มีข้อกังวลใด ๆ เกี่ยวกับข้อมูลจริงหรือฐานข้อมูลที่เสียหายอย่างถาวร บางตารางในแบบสอบถาม (พร้อมกับดัชนี) ลดลงสร้างใหม่และ repopulated บ่อยครั้งดังนั้นฉันคิดว่ามันเป็นสิ่งที่เกี่ยวข้อง การลบออกNOLOCKเป็นปัญหาระยะยาวของฉันที่จะจัดการกับ เหตุผลที่NOLOCKใส่ไว้ในตอนแรกก็คือการสืบค้นนั้นแย่มากจนพวกมันหยุดชะงักกับการทำธุรกรรมแบบวันต่อวันดังนั้นพวกเขาจึงNOLOCKช่วยกันหยุดการหยุดชะงัก (ซึ่งใช้ได้ผล) ดังนั้นฉันจึงต้องการความช่วยเหลือจากวงดนตรีในการช่วยเหลือแบบวงดนตรีจนกว่าเราจะสามารถแก้ปัญหาได้อย่างถาวร ถ้าฉันสามารถสร้างมันขึ้นมาใหม่ได้ด้วย Hello World ฉันจะวางแผนว่าจะตบวงช่วยเหลือเข้ากับงานในเวลาไม่ถึงหนึ่งชั่วโมง ไม่สามารถทำการลบ - ค้นหา - และ - แทนที่NOLOCKเพราะฉันเริ่มได้รับการหยุดชะงักของแอพอีกครั้งซึ่งแย่กว่าสำหรับฉันมากกว่างานที่ล้มเหลวเป็นครั้งคราว การใช้การแยกสแนปชอตแบบอ่านข้อมูลมุ่งมั่นเป็นไปได้ที่ดี - ฉันจะต้องทำงานกับทีมฐานข้อมูลของเราเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนั้น ปัญหาส่วนหนึ่งของเราคือเราไม่มีผู้เชี่ยวชาญ SQL Server ที่จะจัดการกับสิ่งนั้นและฉันไม่เข้าใจระดับการแยกได้ดีพอที่จะทำการเปลี่ยนแปลงในตอนนี้

3
แอปพลิเคชันสอบถามตารางที่ว่างเปล่า
บริษัท ของฉันใช้แอปพลิเคชันที่มีปัญหาด้านประสิทธิภาพที่สำคัญ มีปัญหาหลายอย่างเกี่ยวกับฐานข้อมูลของตัวเองซึ่งฉันกำลังอยู่ในขั้นตอนการทำงาน แต่มีปัญหามากมายที่เกี่ยวข้องกับการใช้งานอย่างแท้จริง ในการตรวจสอบของฉันฉันพบว่ามีล้านแบบสอบถามกดปุ่มฐานข้อมูล SQL Server ซึ่งแบบสอบถามตารางที่ว่างเปล่า เรามีตารางว่างเปล่าประมาณ 300 ตารางและบางตารางมีการสอบถามถึง 100-200 ครั้งต่อนาที ตารางไม่มีส่วนเกี่ยวข้องกับธุรกิจของเราและเป็นส่วนหนึ่งของแอปพลิเคชันดั้งเดิมซึ่งผู้ขายไม่ได้ลบเมื่อ บริษัท ของฉันทำสัญญาเพื่อผลิตโซลูชันซอฟต์แวร์สำหรับเรา นอกเหนือจากข้อเท็จจริงที่ว่าเราสงสัยว่าบันทึกข้อผิดพลาดแอปพลิเคชันของเรากำลังถูกน้ำท่วมด้วยข้อผิดพลาดที่เกี่ยวข้องกับปัญหานี้ผู้จัดจำหน่ายมั่นใจกับเราว่าไม่มีประสิทธิภาพหรือเสถียรภาพด้านผลกระทบสำหรับทั้งแอปพลิเคชันหรือเซิร์ฟเวอร์ฐานข้อมูล บันทึกข้อผิดพลาดมีน้ำท่วมจนเราไม่สามารถเห็นข้อผิดพลาดเกินกว่า 2 นาทีในการวินิจฉัย ค่าใช้จ่ายจริงของข้อความค้นหาเหล่านี้เห็นได้ชัดว่าอยู่ในระดับต่ำในแง่ของรอบการทำงานของ CPU เป็นต้น แต่ใครก็ตามสามารถแนะนำสิ่งที่มีผลต่อ SQL Server และแอปพลิเคชันได้บ้าง ฉันสงสัยว่ากลไกที่แท้จริงของการส่งคำขอยืนยันดำเนินการส่งคืนและยอมรับการรับแอปพลิเคชันนั้นจะส่งผลกระทบต่อประสิทธิภาพการทำงาน เราใช้ SQL Server 2008 R2, Oracle Weblogic 11g สำหรับแอป @ Frisbee- เรื่องสั้นสั้นฉันสร้างตารางที่มี querytext ซึ่งตีตารางที่ว่างเปล่าในฐานข้อมูลของแอพจากนั้นทำการสอบถามสำหรับ tablenames ทั้งหมดที่ฉันรู้ว่าว่างเปล่าและมีรายการที่ยาวมาก สิ่งที่ฮิตที่สุดคือการประหารชีวิต 2.7 ล้านครั้งในช่วงเวลา 30 วันโดยคำนึงถึงแอปที่ใช้กันทั่วไป 8 …

1
แทนที่ค่าขององค์ประกอบ xml ที่พิมพ์อย่างยิ่งใน SQL Server ด้วย XQuery
ได้รับองค์ประกอบที่กำหนดไว้ภายในคอลเลกชัน XML Schema ดังกล่าว: <xsd:element name="xid"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32" /> </xsd:restriction> </xsd:simpleType> </xsd:element> คุณจะอัพเดทองค์ประกอบโดยใช้ XQuery อย่างไร องค์ประกอบที่พบในnamespace nsในคอลเลกชันคี ฉันพยายามอัปเดตองค์ประกอบข้อความค้นหาด้านล่าง: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?') where id = 11793 แต่สิ่งนี้สร้างข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 9301, ระดับ 16, สถานะ 1, บรรทัดที่ …

3
ใครเป็นผู้สร้างขั้นตอน (SQL Server 2008 R2)
มีวิธีในรายการที่สร้างการจัดหาใน SQL Server 2008 หรือไม่? ในลิงค์ SO นี้มีคำตอบบางส่วน แต่เมื่อ 6 ปีที่แล้ว ฉันรู้ว่าเป็นวิธีที่ดีที่สุดในการเขียนชื่อและวันที่ของคุณจากนั้นเริ่มสร้างขั้นตอน แต่ฉันไม่เห็นสิ่งนี้ที่ฉันทำงาน หากไม่มีวิธีในการทำเช่นนี้งานนี้จะถูกกระตุ้นด้วยทริกเกอร์หรือไม่? และคำถามโบนัส เป็นงานของ dba หรือไม่ รู้ว่าใครเป็นผู้สร้าง ขอบคุณมาก.

1
เหตุใดจึงไม่ใช้คีย์หลัก (คลัสเตอร์) ในการสืบค้นนี้
ฉันมีตาราง SQL Server 2008 R2 ซึ่งโครงสร้างสกีมามีลักษณะดังนี้: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] …

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