จำกัด ผู้ใช้ให้คัดลอกเฉพาะการสำรองข้อมูล


13

ฉันต้องการปรับใช้การจัดส่งบันทึกในสภาพแวดล้อมการผลิตของฉัน นี่จะหมายความว่าฉันจะต้องจัดการกลุ่มการสำรองข้อมูลซึ่งอาจถูกรบกวนโดยผู้ที่สำรองข้อมูลเพื่อฟื้นฟูสภาพแวดล้อมการพัฒนา หากฉันมีความล้มเหลวและต้องการใช้การสำรองข้อมูลบันทึกเพื่อคืนค่าสู่จุดในเวลาที่ฉันจะต้องสำรองข้อมูลโดยนักพัฒนา

สิ่งนี้จะไม่เกิดขึ้นหากนักพัฒนาซอฟต์แวร์ใช้เฉพาะการสำรองข้อมูล COPY เท่านั้น ดังนั้นคำถามของฉันคือมีวิธี จำกัด ผู้ใช้ให้สามารถสำรองข้อมูล COPY เท่านั้นหรือไม่

คำตอบ:


12

COPY_ONLYคุณไม่จำเป็นต้องมีการใช้งานพวกเขา เพียงกลางจะแบ่งLOG BACKUPS LSNสิ่งที่คุณสามารถทำได้คือDENY BACKUP LOG to [user|group]สิทธิ์ของนักพัฒนาซอฟต์แวร์หรือกลุ่มนักพัฒนาซอฟต์แวร์อย่างชัดเจน หรือเพียงแค่สร้างบทบาทและปฏิเสธบันทึกการสำรองข้อมูลสำหรับบทบาทนั้น ดังนั้นผู้ใช้ทั้งหมดในบทบาทนั้นจะรับช่วงสิทธิ์

เช่น

USE test_kin
GO
CREATE ROLE [deny_log_backups]
GO
USE [test_kin]
GO
CREATE USER [Kin] FOR LOGIN [Kin]
GO
ALTER USER [Kin] WITH DEFAULT_SCHEMA=[dbo]
GO
use test_kin
GO
DENY BACKUP LOG TO [deny_log_backups]
GO
USE test_kin
GO
EXEC sp_addrolemember N'deny_log_backups', N'kin'
GO

ตอนนี้ทดสอบ:

backup database [test_kin]
to disk = 'C:\crap_test\kin_test_full.bak'
with compression, stats =10, init

---- ### success for FULL BACKUP 

backup log [test_kin]
to disk = 'C:\crap_test\kin_test_log.log'

 --- $$$ ERROR MESSAGE 

Msg 262, Level 14, State 1, Line 3
BACKUP LOG permission denied in database 'test_kin'.
Msg 3013, Level 16, State 1, Line 3
BACKUP LOG is terminating abnormally.

2

เป็นคำถามที่ดีที่ฉันไม่สามารถหาคำตอบที่ดี แต่นี่เป็นคำตอบ จะเป็นอย่างไรถ้าคุณลบทุกคนออกจากบทบาทการสำรองข้อมูลจากนั้นสร้างงานที่ใช้คำสั่ง execute เป็นคำสั่งสำหรับผู้ใช้เฉพาะที่ทิ้งไฟล์สำรองข้อมูล copy_only ออกไปยังตำแหน่งเฉพาะ


-1

สิ่งที่คุณสามารถทำได้คือ 1) ปฏิเสธการสำรองข้อมูล (บันทึกและ / หรือเต็ม) ให้กับผู้ใช้ดังกล่าว แต่ยังคง 2) อนุญาตให้พวกเขาเริ่มงานที่ทำสำเนาสำรองเท่านั้นของฐานข้อมูลเฉพาะ (ทำงานภายใต้บัญชีที่ได้รับ สิทธิ์การสำรองข้อมูล) ฉันมีวิธีแก้ไขปัญหาดังกล่าวโดยอัตโนมัติเพื่อเรียกคืน PROD เป็น PRE-PROD โดยอัตโนมัติเพื่อกู้คืนฐานข้อมูลเพื่อวัตถุประสงค์ในการตรวจสอบ ผู้ใช้ที่เฉพาะเจาะจงมีการเข้าถึงงาน (ใน PRE-PROD) ที่ทำสำเนาสำรองอย่างเดียวใน PROD ย้ายไฟล์จาก PROD ไปที่ PRE-PROD แล้วเรียกคืนการสำรองข้อมูลที่ถูกย้ายบนเซิร์ฟเวอร์ PRE-PROD ดังนั้นการทำให้แน่ใจว่าผู้ใช้ดังกล่าวไม่มีทางที่จะทำลายตรรกะการสำรองข้อมูลใน PROD

(เมื่อตรวจสอบปัญหานักพัฒนาอาจถูกล่อลวงให้ทำการสำรองข้อมูลเต็มรูปแบบเพื่อเรียกคืนบนเซิร์ฟเวอร์ทดสอบโดยการย้ายไฟล์จากแหล่งที่มาไปยังเซิร์ฟเวอร์ทดสอบโดยไม่ทราบว่าพวกเขากำลังทำลายตรรกะการสำรองข้อมูล ... ดังนั้นฉันยอมรับว่าบังคับให้คัดลอก - การสำรองข้อมูลเป็นสิ่งสำคัญเท่านั้น)


ทำไมคุณถึงกังวลกับการสำรองข้อมูลแบบเต็มด้วย copy_only เนื่องจาก OP เกี่ยวข้องกับการแยก LSN เท่านั้น
Kin Shah

การสำรองข้อมูลแบบเต็มแล้วการย้ายไฟล์ออกไปจะเป็นการทำลายตรรกะใช่ไหม หากผู้พัฒนาทำเช่นนั้นให้ย้ายไฟล์ไปที่เซิร์ฟเวอร์ dev จากนั้นข้อมูลสำรอง LOG ถัดไปจะมีค่า FirstLSN ที่ตรงกับ CheckPointLSN ของข้อมูลสำรอง FULL ที่ขาดหายไป วิธีการคืนค่าโดยไม่มีไฟล์ที่หายไป?
เบนจามิน RAIBAUD

การสำรองข้อมูลเต็มรูปแบบไม่รีเซ็ต LSN เฉพาะการสำรองข้อมูลบันทึกเท่านั้นที่ทำได้ ฉันเดาว่าคุณกำลังสับสนอยู่
Kin Shah

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