ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

3
ขั้นตอนการจัดเก็บฐานข้อมูลด้วย“ โหมดแสดงตัวอย่าง”
รูปแบบที่พบบ่อยพอสมควรในแอปพลิเคชันฐานข้อมูลที่ฉันทำงานด้วยคือต้องสร้างขั้นตอนการจัดเก็บสำหรับรายงานหรือยูทิลิตี้ที่มี "โหมดตัวอย่าง" เมื่อโพรซีเดอร์ดังกล่าวทำการอัพเดตพารามิเตอร์นี้บ่งชี้ว่าผลลัพธ์ของแอ็คชันควรถูกส่งคืน แต่โพรซีเดอร์ไม่ควรทำการอัพเดตกับฐานข้อมูล วิธีหนึ่งในการทำสิ่งนี้ให้สำเร็จคือการเขียนifคำสั่งสำหรับพารามิเตอร์และมีโค้ดบล็อกที่สมบูรณ์สองบล็อก หนึ่งในนั้นจะปรับปรุงและส่งคืนข้อมูลและอื่น ๆ เพียงแค่ส่งคืนข้อมูล แต่สิ่งนี้ไม่เป็นที่พึงปรารถนาเนื่องจากการทำสำเนารหัสและความเชื่อมั่นค่อนข้างต่ำว่าข้อมูลตัวอย่างเป็นภาพสะท้อนที่ถูกต้องแม่นยำว่าจะเกิดอะไรขึ้นกับการอัปเดต ตัวอย่างต่อไปนี้พยายามใช้ประโยชน์จากจุดบันทึกและตัวแปรของการทำธุรกรรม (ซึ่งไม่ได้รับผลกระทบจากธุรกรรมตรงกันข้ามกับตาราง temp ซึ่งเป็น) เพื่อใช้รหัสบล็อกเดียวสำหรับโหมดแสดงตัวอย่างเป็นโหมดการอัปเดตสด หมายเหตุ: การย้อนกลับของธุรกรรมไม่ใช่ตัวเลือกเนื่องจากการเรียกขั้นตอนนี้อาจซ้อนอยู่ในธุรกรรม นี่คือการทดสอบใน SQL Server 2012 CREATE TABLE dbo.user_table (a int); GO CREATE PROCEDURE [dbo].[PREVIEW_EXAMPLE] ( @preview char(1) = 'Y' ) AS CREATE TABLE #dataset_to_return (a int); BEGIN TRANSACTION; -- preview mode required infrastructure DECLARE @output_to_return …
15 sql-server  t-sql 

1
ตัวชี้วัดเพื่อพิสูจน์หรือหักล้างความต้องการ DBA เพิ่มเติมหรือไม่
ขณะนี้เรามี DBA 2 ตัวฉันและอีกคนหนึ่งและเราทั้งคู่รู้สึกถึงความต้องการทรัพยากรเพิ่มเติม (หรือสอง) ฉันได้สนทนากับผู้จัดการโดยตรงของฉันในหัวข้อนี้สองสามครั้ง แต่ฉันมีปัญหาในการขายความคิด เมื่อเร็ว ๆ นี้ผู้จัดการของเราแบ่งปันกับเราว่าเป็นการดีที่จะเกิดขึ้นกับรายการ "ค่านิยม" ของเราในสิ่งต่าง ๆ ที่เราต้องการหรือรู้สึกว่าเราต้องทำ แต่สิ่งที่จะช่วยได้จริง ๆ คือ "ค่ายาก" แสดงการประหยัดเงินดอลลาร์ คุณสามารถช่วยฉันในการทำความเข้าใจก่อนอื่นถ้าความต้องการของเรารับรู้ถูกต้องตามกฎหมายและถ้าเป็นเช่นนั้นเราจะทำอย่างไรกับรายการ "ค่านิยม" นี้ ฉันรู้สึกว่าเราสามารถคิดสิ่งต่าง ๆ ที่เราต้องทำเพื่อประหยัดเงินของ บริษัท ได้ แต่นั่นอาจจะอยู่ที่ด้านหน้าของรายการลำดับความสำคัญของเราและทำให้เราเครียดมากขึ้นในกระบวนการ เพื่อให้คุณได้เห็นสภาพแวดล้อมของเราในระดับสูงต่อไปนี้เป็นสิ่งที่ฉันกำลังมองหาในแง่ของสิ่งที่เราให้การสนับสนุน เซิร์ฟเวอร์การผลิต - ฐานข้อมูลการผลิตมากกว่า 30+ - เวอร์ชัน SQL มากกว่า200+ - 2008 / 2008R2 / 2012 ค้นหาในปี 2014 และปีต่อมาในปี 2559 แอปพลิเคชัน (บุคคลที่สามและเติบโตที่บ้าน) - …

3
การสำรองข้อมูลบันทึกธุรกรรมแบบอนุกรมหรือแบบขนาน?
เรากำลังใช้ SQL Server 2012 Standard Edition อยู่ ฉันยังใช้สคริปต์ของ Ola Hallengren เพื่อจัดเตรียมกรอบงานที่ง่ายและยืดหยุ่นมากขึ้นสำหรับการสำรองและบำรุงรักษา คำถามนี้ไม่ได้เกี่ยวกับสคริปต์ของ Ola มากนักเนื่องจากเป็นแนวปฏิบัติที่ดีที่สุด ฉันรู้ว่าคำตอบที่ดีที่สุดคือ "ขึ้นอยู่กับข้อกำหนดของ บริษัท ของคุณ" แต่ฉันกำลังพยายามค้นหาคำแนะนำของชุมชนว่าจะทำสิ่งที่ฉันเข้าใจให้ดีที่สุดให้ตรงตามข้อกำหนดของ บริษัท ฉันต้องการตั้งค่าการสำรองข้อมูลบันทึกธุรกรรมทุก 15 นาที วิธีนี้เราหวังว่าจะสูญเสียข้อมูลไม่เกิน 15 นาที ฉันควรตั้งค่าหนึ่งงานที่ใช้ ALL_DATABASES หรือไม่ หรือมันจะดีกว่าถ้าคุณตั้งค่าหนึ่งงานสำหรับแต่ละฐานข้อมูลและเริ่มทำงานพร้อมกัน? ฉันถามเพราะฉันมีความรู้สึกตามวิธีที่ฉันเห็นสคริปต์ของ Ola ทำงานว่าการสำรองข้อมูลนั้นเริ่มต้นอย่างต่อเนื่อง ข้อเสียของซีเรียลคือการสำรองข้อมูลต่อเนื่องแต่ละครั้งจะรอจนกว่าข้อมูลอื่นจะเสร็จสมบูรณ์ สิ่งนี้อาจเพิ่มระยะเวลาระหว่างการสำรองข้อมูล (เช่นมากกว่า 15 นาที) บวกกับความกังวลของฉันคือความล้มเหลวในการสำรองข้อมูลหนึ่งครั้งจะหยุดไม่ให้เกิดขึ้นอีกและฉันไม่ต้องการให้เป็นเช่นนั้น ฉันต้องการให้คนอื่นสำรองข้อมูลต่อไป เป็นจริงหรือไม่ที่สคริปต์ของ Ola ทำงานในอนุกรมและความล้มเหลวจะหยุดการสำรองข้อมูลอย่างต่อเนื่อง และจะดีกว่าหรือไม่ที่จะมีงานสำหรับแต่ละฐานข้อมูล หรืองานเดียวที่ทำทั้งหมด ความชอบของฉันมีต่องานแยกกัน แต่ฉันต้องการที่จะเข้าใจว่า DBA ของ SQL …

1
SQL Server 2014 COUNT (DISTINCT x) ละเว้นเวกเตอร์ความหนาแน่นของสถิติสำหรับคอลัมน์ x
สำหรับสิ่งCOUNT(DISTINCT)ที่มีค่าแตกต่างกัน ~ 1 พันล้านครั้งฉันได้รับแผนคิวรีที่มีการรวมแฮชที่คาดว่าจะมีแถวเพียง 3 ล้านแถวเท่านั้น ทำไมสิ่งนี้จึงเกิดขึ้น SQL Server 2012 สร้างการประมาณการที่ดีดังนั้นนี่เป็นข้อบกพร่องใน SQL Server 2014 ที่ฉันควรรายงานเกี่ยวกับการเชื่อมต่อหรือไม่ แบบสอบถามและประมาณการที่ไม่ดี -- Actual rows: 1,011,719,166 -- SQL 2012 estimated rows: 1,079,130,000 (106% of actual) -- SQL 2014 estimated rows: 2,980,240 (0.29% of actual) SELECT COUNT(DISTINCT factCol5) FROM BigFactTable OPTION (RECOMPILE, QUERYTRACEON 9481) -- Include this …

1
มีหน่วยความจำระบบไม่เพียงพอในกลุ่มทรัพยากรเริ่มต้นเพื่อเรียกใช้แบบสอบถามนี้
ฉันใช้ SQL Server 2014 - 12.0.2269.0 (X64) ใน Windows Server 2012 และฉันประสบปัญหาหน่วยความจำบางอย่าง เมื่อฉันเรียกใช้กระบวนงานที่เก็บไว้ซึ่งทำการคำนวณค่อนข้าง "หนัก" ฉันได้รับข้อผิดพลาดหลังจากบางสิ่งบางอย่างเช่น 10 นาที: มีหน่วยความจำระบบไม่เพียงพอในกลุ่มทรัพยากร 'เริ่มต้น' เพื่อเรียกใช้แบบสอบถามนี้ SQL Server ของฉันมีหลายฐานข้อมูล (เช่น 15 แต่ไม่ได้ใช้พร้อมกันเสมอ) ฉันดูไฟล์บันทึกของ SQL Server (หลังจากฉันได้รับข้อผิดพลาด) และฉันเห็นบรรทัดมากมายเช่นนี้ 2015-12-17 12: 00: 37.57 spid19s ไม่อนุญาตการจัดสรรหน้าสำหรับฐานข้อมูล 'Database_Name' เนื่องจากหน่วยความจำไม่เพียงพอในกลุ่มทรัพยากร 'เริ่มต้น' ดู ' http://go.microsoft.com/fwlink/?LinkId=330673 ' สำหรับข้อมูลเพิ่มเติม รายงานถูกสร้างขึ้นในบันทึกที่มีหน่วยความจำที่ใช้โดยแต่ละองค์ประกอบ (ฉันคิดว่า) MEMORYCLERK_SQLBUFFERPOOLถ้าฉันได้อย่างถูกต้องตีความรายงานที่เราจะเห็นว่ามีจำนวนมากของหน่วยความจำบริโภคโดย คุณสามารถค้นหารายงานได้ที่นี่: http://pastebin.com/kgmk9dPH …

2
ความลึกของลูกหลานแบบเรียกซ้ำ PostgreSQL
ฉันต้องคำนวณความลึกของลูกหลานจากบรรพบุรุษของมัน เมื่อมีการบันทึกobject_id = parent_id = ancestor_idจะถือว่าเป็นโหนดรูท (บรรพบุรุษ) ผมได้พยายามที่จะได้รับWITH RECURSIVEการสอบถามการทำงานกับ PostgreSQL 9.4 ฉันไม่ได้ควบคุมข้อมูลหรือคอลัมน์ data และ schema ของตารางมาจากแหล่งภายนอก ตารางจะเติบโตอย่างต่อเนื่อง ตอนนี้บันทึกประมาณ 30k ต่อวัน โหนดใด ๆ ในทรีสามารถหายไปและพวกเขาจะถูกดึงจากแหล่งภายนอกในบางจุด พวกเขามักจะถูกดึงcreated_at DESCตามลำดับ แต่ข้อมูลจะถูกดึงด้วยงานพื้นหลังแบบอะซิงโครนัส เริ่มแรกเรามีวิธีแก้ไขปัญหาของรหัส แต่ตอนนี้มี 5M + แถวใช้เวลาเกือบ 30 นาทีจึงจะเสร็จสมบูรณ์ ตัวอย่างคำจำกัดความของตารางและข้อมูลการทดสอบ: CREATE TABLE objects ( id serial NOT NULL PRIMARY KEY, customer_id integer NOT NULL, object_id integer …

2
DDL_admin เทียบกับสิทธิ์ db_owner
ฉันเข้าร่วมโปรเจ็กต์ที่เกี่ยวข้องกับการลบและ จำกัด สิทธิ์ของผู้ใช้ฐานข้อมูลทั้งหมดในเซิร์ฟเวอร์ฟาร์มของเรา (ช่วงเวลาแห่งความสนุก) หนึ่งในสิทธิ์ที่ถูก จำกัด ในขณะนี้คือสิทธิ์ db_owner การอนุญาตนี้กำลังได้รับการตรวจสอบเป็นกรณี ๆ ไป แต่การเปลี่ยนแปลงทั่วไปคือการแทนที่สิทธิ์ db_owner ด้วยสิ่งต่อไปนี้: db_datareader db_datawriter db_ddladmin db_executor ฉันต้องการกำหนดความแตกต่างที่แน่นอนระหว่างสอง (เพื่อแจ้งลูกค้า) อย่างไรก็ตามเท่าที่ฉันสามารถบอกได้ความแตกต่างระหว่างสองควรเป็น: สิทธิ์ db_accessadmin สิทธิ์ db_backupoperator สิทธิ์ db_securityadmin ดังนั้นในผลกระทบที่พวกเขาจะสูญเสีย: [ALTER ANY USER] [CREATE SCHEMA] [BACKUP DATABASE], [BACKUP LOG], [CHECKPOINT] [ALTER ANY APPLICATION ROLE],[ALTER ANY ROLE] [DROP DATABASE] มีอะไรอีกบ้างที่ผู้ใช้จะหลวมเมื่อ db_owner ถูกแทนที่ด้วยสี่บทบาทข้างต้น? สิ่งนี้ให้บริการรักษาความปลอดภัยอย่างชาญฉลาดหรือไม่?

4
จะค้นหา SSISDB เพื่อค้นหาข้อผิดพลาดในแพ็คเกจได้อย่างไร
ฉันเคยเห็นคำถามนี้ SSIS 2012 - วิธีการสืบค้นแพคเกจที่รันอยู่ใน T-SQL ในปัจจุบัน? มันให้สคริปต์ต่อไปนี้กับฉัน: SELECT E.execution_id , E.folder_name , E.project_name , E.package_name , E.reference_id , E.reference_type , E.environment_folder_name , E.environment_name , E.project_lsn , E.executed_as_sid , E.executed_as_name , E.use32bitruntime , E.operation_type , E.created_time , E.object_type , E.object_id , E.status , E.start_time , E.end_time , E.caller_sid , E.caller_name …

5
การสำรองและคืนค่าฐานข้อมูลเซิร์ฟเวอร์ SQL 10-20 สู่สถานะ ~ แบบซิงโครนัส
ฉันต้องการสำรองฐานข้อมูล 10-20 SQL Server 2008 R2 ที่มีขนาดระหว่าง 10-50 GB ในขณะที่พวกเขาออนไลน์และใช้พร้อมกันโดยแอปองค์กรเดียว ฉันต้องการกู้คืนพวกเขากลับสู่สถานะที่ถูกซิงโครไนซ์กับฐานข้อมูลทั้งหมดเป็นส่วนใหญ่ วัตถุประสงค์คือเพื่อรวบรวมข้อมูลการผลิตสำหรับสภาพแวดล้อม QA / DEV ฉันต้องการอย่างยิ่งที่จะไม่เรียกใช้ฐานข้อมูลในการกู้คืนเต็มรูปแบบและมาพร้อมกับวิธีการสำรองข้อมูลที่ทุ่มเทให้กับการเก็บข้อมูลสำหรับสภาพแวดล้อม QA และยังคงเป็นอิสระจากกระบวนการสำรองข้อมูลหลักซึ่งไม่ได้อยู่ในการควบคุมของฉัน สำหรับลูกค้าของฉันจะใช้เวลา 1-2 ชั่วโมงในการเก็บสำรองข้อมูลทั้งหมด 20 ครั้งที่ ~ 30 GB ต่อครั้ง สิ่งนี้ทำให้การสำรองข้อมูลเต็มรูปแบบไม่สามารถยอมรับได้เนื่องจากฐานข้อมูลจะถูกซิงโครไนซ์มากเกินไปเมื่อทำงานในการกู้คืนอย่างง่าย ฉันกำลังมองหาความคิดที่ดีกว่าสิ่งเหล่านี้: IDEA 1: snapshot ระดับ SAN ของดิสก์ VM xcopy MDFs / LDF จากภาพรวม เมื่อไฟล์ที่คัดลอกถูกแนบไปกับอินสแตนซ์ของเซิร์ฟเวอร์ที่แตกต่างกันกระบวนการกู้คืนของมันควรจะสร้างฐานข้อมูลที่สอดคล้องกัน Googling เชื่อฉันว่านี่เป็นความคิดที่ดีอย่างน้อยเพราะฉันอาจได้รับ desync เทียบกับ master / msdb / …

2
ทำไมการประมาณแถวของ SQL Server จึงเปลี่ยนเมื่อฉันเพิ่มคำแนะนำการเข้าร่วม
ฉันมีแบบสอบถามที่รวมตารางไม่กี่ตารางและทำงานได้ไม่ดีนัก - การประมาณแถวเป็นวิธีปิด (1,000 ครั้ง) และมีการเลือกการเข้าร่วมลูปซ้อนกันทำให้เกิดการสแกนหลายตาราง รูปร่างของแบบสอบถามค่อนข้างตรงไปตรงมามีลักษณะดังนี้: SELECT t1.id FROM t1 INNER JOIN t2 ON t1.id = t2.t1_id LEFT OUTER JOIN t3 ON t2.id = t3.t2_id LEFT OUTER JOIN t4 ON t3.t4_id = t4.id WHERE t4.id = some_GUID เล่นรอบกับแบบสอบถามฉันสังเกตเห็นว่าเมื่อฉันบอกเป็นนัย ๆ ให้ใช้การรวม Merge สำหรับการรวมอย่างใดอย่างหนึ่งมันทำงานเร็วขึ้นหลายครั้ง สิ่งนี้ฉันสามารถเข้าใจได้ - การรวมการผสานเป็นตัวเลือกที่ดีกว่าสำหรับข้อมูลที่เข้าร่วม แต่ SQL Server ไม่คาดการณ์ว่าจะเลือก …

2
คอลัมน์ null อาจเป็นส่วนหนึ่งของคีย์หลักได้หรือไม่
ฉันกำลังพัฒนาฐานข้อมูล SQL Server 2012 และฉันมีคำถามเกี่ยวกับความสัมพันธ์แบบหนึ่งต่อศูนย์หรือหนึ่งวัน ฉันมีสองตารางและCodes HelperCodesรหัสอาจมีรหัสศูนย์หรือหนึ่งตัวช่วย นี่คือสคริปต์ sql เพื่อสร้างสองตารางและความสัมพันธ์: CREATE TABLE [dbo].[Code] ( [Id] NVARCHAR(20) NOT NULL, [Level] TINYINT NOT NULL, [CommissioningFlag] TINYINT NOT NULL, [SentToRanger] BIT NOT NULL DEFAULT 0, [LastChange] NVARCHAR(50) NOT NULL, [UserName] NVARCHAR(50) NOT NULL, [Source] NVARCHAR(50) NOT NULL, [Reason] NVARCHAR(200) NULL, [HelperCodeId] NVARCHAR(20) NULL, …

4
หน่วยความจำสูงสุดของ SQL Server, ไฟล์หน้า, ความเท่าเทียมระดับสูงสุด
คำถามสามข้อหวังว่าคุณอาจารย์ DBA แห่งจักรวาลสามารถตอบคำถาม: ฉันรู้ว่ามันเป็นวิธีปฏิบัติที่ดีที่สุดในการตั้งค่าหน่วยความจำสูงสุดของ SQL Server ดังนั้นหากเซิร์ฟเวอร์ที่มี RAM ขนาด 44 GB ได้ติดตั้ง SQL Server ไว้เราควรตั้งค่าหน่วยความจำสูงสุดของเซิร์ฟเวอร์ SQL ให้อยู่ที่ประมาณ 37GB แต่เราควรตั้งค่าอะไรถ้าบริการวิเคราะห์ SQL และบริการรายงานของ SQL ติดตั้งอยู่บนเซิร์ฟเวอร์เดียวกันกับ SQL Server ถ้าอย่างนั้นจะเป็นการดีกว่าถ้าตั้งค่าหน่วยความจำสูงสุดของ SQL Server เป็น 22GB RAM ดังนั้นการวิเคราะห์สามารถใช้ RAM ขนาด 22GB อื่นได้หรือไม่ บนเซิร์ฟเวอร์ที่ใช้ SQL Server พร้อม RAM ขนาด 44 GB วิธีปฏิบัติที่ดีที่สุดในการตั้งค่าขนาดไฟล์ของหน้าคืออะไร ฉันอ่าน Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ …

1
ข้อความค้นหาที่ผู้ใช้แบ่งปัน: ไดนามิก SQL กับ SQLCMD
ฉันต้องรีแฟคเตอร์และจัดทำเอกสารfoo.sqlแบบสอบถามจำนวนหนึ่งซึ่งจะใช้ร่วมกันโดยทีมสนับสนุนด้านเทคนิคของ DB (สำหรับการกำหนดค่าลูกค้าและสิ่งต่างๆเช่นนั้น) มีตั๋วหลายประเภทที่มาเป็นประจำที่ลูกค้าแต่ละรายมีเซิร์ฟเวอร์และฐานข้อมูลของตัวเอง แต่ไม่เช่นนั้นสคีมาจะเหมือนกันทั่วกระดาน กระบวนงานที่เก็บไว้ไม่ใช่ตัวเลือกในเวลาปัจจุบัน ฉันกำลังถกเถียงกันว่าจะใช้ไดนามิกหรือ SQLCMD ฉันไม่ได้ใช้อะไรมากมายเพราะฉันค่อนข้างใหม่ที่ SQL Server การสคริปต์ SQLCMD ฉันรู้สึกว่า "ดู" สะอาดกว่าสำหรับฉันและง่ายต่อการอ่านและเปลี่ยนแปลงการสืบค้นเล็กน้อยตามต้องการ แต่ยังบังคับให้ผู้ใช้เปิดใช้งานโหมด SQLCMD แบบไดนามิกนั้นยากกว่าเนื่องจากการเน้นไวยากรณ์เสียไปเนื่องจากการสืบค้นที่เขียนโดยใช้การจัดการสตริง สิ่งเหล่านี้กำลังถูกแก้ไขและรันโดยใช้ Management Studio 2012, SQL เวอร์ชัน 2008R2 อะไรคือข้อดี / ข้อเสียของวิธีใดวิธีหนึ่งหรือ SQL Server "วิธีปฏิบัติที่ดีที่สุด" บางวิธีในวิธีหนึ่งหรือวิธีอื่น เป็นหนึ่งในนั้น "ปลอดภัย" กว่าอีกหรือไม่ ตัวอย่างแบบไดนามิก: declare @ServerName varchar(50) = 'REDACTED'; declare @DatabaseName varchar(50) = 'REDACTED'; declare @OrderIdsSeparatedByCommas varchar(max) …

2
ทำไมฟังก์ชันอันทรงคุณค่าของสเกลาร์ต้องได้รับอนุญาตให้ดำเนินการแทนที่จะเลือก
ฉันสงสัยว่าเพราะเหตุใดสำหรับฟังก์ชันที่มีค่าสเกลาร์ฉันต้องให้ผู้ใช้ดำเนินการแทนที่จะเลือกเท่านั้น? ในขณะที่ฟังก์ชั่นที่มีคุณค่าของตารางนั้นใช้งานได้ดีโดยมีเพียงสิทธิ์อนุญาตหรือความdb_datareaderเป็นสมาชิกที่เลือกเท่านั้น เพื่อให้ชัดเจนยิ่งขึ้นนี่คือตัวอย่างของฉัน: ฉันต้องการผู้ใช้ที่ได้รับอนุญาตให้อ่านฐานข้อมูลเท่านั้น ดังนั้นฉันจึงสร้างผู้ใช้ที่เรียกว่าtestUserและให้การdb_datareaderเป็นสมาชิก fn_InlineTableแล้วฉันสร้างตารางมูลค่าฟังก์ชั่นที่เรียกว่า และทุกอย่างยอดเยี่ยม testUserรัน SQL นี้ตลอดทั้งวัน select * from dbo.fn_InlineTable fn_ScalarTestแล้วฉันต้องมีฟังก์ชั่นเกลาดังนั้นฉันสร้างฟังก์ชั่นที่เรียกว่าสเกลา testUserไม่สามารถรัน SQL นี้ Select dbo.fn_ScalarTest(1) ดีเข้าใจ: มันเป็นเพราะผมยังไม่ได้ให้ "testuser" fn_ScalarTestได้รับอนุญาตในการดำเนินการ คำถามของฉันคือ: ตามลิงค์นี้/programming/6150888/insert-update-delete-with-function-in-sql-serverซึ่งบอกว่าFUNCTIONไม่สามารถใช้เพื่อดำเนินการแก้ไขสถานะฐานข้อมูลได้ . ดังนั้นทำไมไม่ปล่อยให้ฟังก์ชั่นสเกลาร์ถูกใช้ด้วยสิทธิ์ "SELECT" แบบเดียวกันแทนที่จะเรียกใช้สิทธิ์ ??? ฉันหวังว่าคำถามของฉันจะสมเหตุสมผล ขอขอบคุณ.

3
การใช้ระบบการกำหนดเวอร์ชันด้วย MySQL
ฉันรู้ว่าสิ่งนี้ถูกถามที่นี่และที่นี่แต่ฉันมีความคิดเดียวกันกับการใช้งานที่เป็นไปได้ที่แตกต่างกันและฉันต้องการความช่วยเหลือ ตอนแรกฉันมีblogstoriesตารางที่มีโครงสร้างนี้: | Column | Type | Description | |-----------|-------------|------------------------------------------------| | uid | varchar(15) | 15 characters unique generated id | | title | varchar(60) | story title | | content | longtext | story content | | author | varchar(10) | id of the user that originally wrote the …

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