dragonlhf 2024-08-21 10:53 采纳率: 66.7%
浏览 5
已结题

关于SQL Server数据库备份还原设置

如题,为保障数据库安全,希望在A服务器上备份的数据库,通过某种设置只能还原到A服务器上,同时还原后的数据库只能通过秘钥才能再次备份或者导出,求解决方案。

  • 写回答

21条回答 默认 最新

  • 阿里嘎多学长 2024-08-21 10:54
    关注
    获得0.30元问题酬金

    AIGC生成:


    🤔

    根据您的需求,您想在 SQL Server 数据库上设置备份和还原的限制,使得备份的数据库只能在 A 服务器上还原,并且还原后的数据库只能通过秘钥才能再次备份或导出。

    解决方案:

    1. 使用 SQL Server 的 Backup 和 Restore 语句,添加 WITH ENCRYPTION 选项来加密备份文件。

    例如:

    BACKUP DATABASE [database_name] TO DISK = 'C:\Backup\database.bak' WITH ENCRYPTION;
    
    1. 在 A 服务器上创建一个证书或秘钥,用于加密和解密备份文件。

    例如:

    CREATE CERTIFICATE [certificate_name] WITH SUBJECT = 'Backup Certificate';
    
    1. 在备份时,使用证书或秘钥加密备份文件。

    例如:

    BACKUP DATABASE [database_name] TO DISK = 'C:\Backup\database.bak' WITH ENCRYPTION, CERTIFICATE = [certificate_name];
    
    1. 在还原时,使用证书或秘钥解密备份文件。

    例如:

    RESTORE DATABASE [database_name] FROM DISK = 'C:\Backup\database.bak' WITH ENCRYPTION, CERTIFICATE = [certificate_name];
    
    1. 在还原后的数据库上,添加一个存储过程,用于检查秘钥是否正确,如果秘钥不正确,则不允许备份或导出数据库。

    例如:

    CREATE PROCEDURE [dbo].[CheckCertificate]
        @certificate nvarchar(50)
    AS
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.certificates WHERE name = @certificate)
        BEGIN
            RAISERROR ('Invalid certificate', 16, 1);
        END
    END
    
    1. 在还原后的数据库上,添加一个触发器,用于检查秘钥是否正确,如果秘钥不正确,则不允许备份或导出数据库。

    例如:

    CREATE TRIGGER [dbo].[trg_CheckCertificate]
    ON [dbo].[sys.databases]
    FOR BACKUP DATABASE
    AS
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.certificates WHERE name = @certificate)
        BEGIN
            ROLLBACK TRANSACTION;
            RAISERROR ('Invalid certificate', 16, 1);
        END
    END
    

    这些步骤可以帮助您实现备份和还原的限制,使得备份的数据库只能在 A 服务器上还原,并且还原后的数据库只能通过秘钥才能再次备份或导出。

    请注意,这只是一个基本的解决方案,您可能需要根据您的具体需求进行修改和调整。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?