峰峦@叠嶂 2025-01-15 14:23 采纳率: 98%
浏览 7
已结题

外部分公司访问公司内部数据库的问题

我们ERP的数据库是SQL SERVER 2008 R2,目前处于公司内网,外部分公司无法访问,我们打算建立一个同步实时更新的数据库,权限只读,放在公司内部可访问的网段内,用来让外部分公司的用户来访问,请问有无办法实现呢,请指导一下;

  • 写回答

3条回答 默认 最新

  • GISer Liu 2025-01-15 15:02
    关注

    该回答引用自GPT-deepseek, 由博主 GISer Liu 编写:

    问题分析

    用户的需求是让外部分公司能够访问公司内部的SQL Server 2008 R2数据库,但出于安全考虑,外部分公司只能访问一个只读的、实时同步的数据库副本。这个副本需要放在公司内部可访问的网段内,以确保数据的安全性和访问的便捷性。

    解决方案

    为了实现这一需求,可以采用以下步骤:

    1. 数据库复制:使用SQL Server的复制功能,将主数据库的数据实时复制到一个只读的副本数据库中。
    2. 网络配置:将副本数据库放置在公司内部可访问的网段内,确保外部分公司可以通过VPN或其他安全通道访问该数据库。
    3. 权限控制:为外部分公司用户设置只读权限,确保他们无法修改数据。

    详细步骤

    1. 数据库复制

    SQL Server提供了多种复制技术,如事务复制、合并复制和快照复制。对于实时同步的需求,事务复制是最合适的选择。

    1.1 配置发布服务器

    在主数据库服务器上配置发布服务器:

    -- 创建发布
    EXEC sp_addpublication 
        @publication = 'ERP_Replication',
        @description = 'ERP数据库的实时复制',
        @sync_method = 'native',
        @repl_freq = 'continuous',
        @status = 'active';
    
    -- 添加文章(表)
    EXEC sp_addarticle 
        @publication = 'ERP_Replication',
        @article = 'YourTableName',
        @source_owner = 'dbo',
        @source_object = 'YourTableName',
        @type = 'logbased',
        @destination_table = 'YourTableName',
        @destination_owner = 'dbo';
    
    1.2 配置分发服务器

    在分发服务器上配置分发:

    -- 创建分发数据库
    EXEC sp_adddistributiondb 
        @database = 'distribution',
        @data_folder = 'C:\SQLServer\Data',
        @log_folder = 'C:\SQLServer\Log';
    
    -- 启用分发
    EXEC sp_adddistributor 
        @distributor = 'YourDistributorServer',
        @password = 'YourPassword';
    
    1.3 配置订阅服务器

    在副本数据库服务器上配置订阅:

    -- 创建订阅
    EXEC sp_addsubscription 
        @publication = 'ERP_Replication',
        @subscriber = 'YourSubscriberServer',
        @destination_db = 'ERP_Replica',
        @subscription_type = 'push',
        @sync_type = 'automatic';
    

    2. 网络配置

    为了确保外部分公司能够安全访问副本数据库,可以通过以下方式配置网络:

    • VPN:外部分公司通过VPN连接到公司内部网络,然后访问副本数据库。
    • 防火墙规则:在防火墙中配置规则,只允许特定的IP地址或IP段访问副本数据库。

    3. 权限控制

    在副本数据库上为外部分公司用户设置只读权限:

    -- 创建只读用户
    CREATE LOGIN [ExternalUser] WITH PASSWORD = 'YourPassword';
    CREATE USER [ExternalUser] FOR LOGIN [ExternalUser];
    
    -- 授予只读权限
    GRANT SELECT ON SCHEMA::dbo TO [ExternalUser];
    

    总结

    通过以上步骤,可以实现外部分公司访问公司内部SQL Server 2008 R2数据库的需求。通过数据库复制技术,确保数据的实时同步;通过网络配置和权限控制,确保数据的安全性和访问的便捷性。

    参考文档

    希望以上解决方案能够帮助您解决问题。如果有任何进一步的问题或需要更详细的指导,请随时联系。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月15日