外部硬盘驱动器上的 SQL Server 数据库

外部硬盘驱动器上的 SQL Server 数据库

由于一些安全问题,我的老板要求我将所有敏感数据存储在外部/可移动存储器(如 USB 记忆棒或外部 HDD)中,这特别包括我们正在运行的 SQL Server 2008 的 MDF/NDF/LDF 文件。

我已经阅读了三天,但一直没找到解决办法。有解决办法吗?有人做过这样的事吗?

答案1

好吧,现在我知道我的问题的答案了!

根据http://support.microsoft.com/kb/304261,您可以使用 SAN/NAS 存储来存储数据库文件,并使用 TraceON 标志。例如:

DBCC TraceOn(1807);
GO

此命令标记 1807 TranceOn,让您使用 UNC(如“\Server-name\Path-to-Database-File.mdf”)作为数据库文件的路径。现在,您需要在可移动 USB HDD 上创建一个文件夹,并使用“共享和安全”将该文件夹的完全控制权授予“网络服务”或您的 SQL 用于与 Windows 交互的任何用户。请记住删除所有人并添加管理员。

现在您已完成;创建数据库并享受乐趣!

DBCC TraceOn (1807);
Go

Use master;
GO

CREATE DATABASE [test001] 
    ON  PRIMARY (
        NAME = N'test001', 
        FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001.mdf' , 
        SIZE = 2048KB , 
        FILEGROWTH = 1024KB
        )
    LOG ON ( 
        NAME = N'test001_log', 
        FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001_log.ldf' , 
        SIZE = 1024KB , 
        FILEGROWTH = 10%
    )
GO

答案2

将简单的数据库移动到外部驱动器应该很容易:

  1. 使用以下命令分离数据库exec sp_detach_db '<db_name>'
  2. 将文件复制到外部驱动器上的新位置
  3. 重新连接数据库exec sp_attach_db '<db_name>', '<full_path_to_new_location_of_mdf>', '<full_path_to_ldf>'

(您也可以通过 GUI 工具执行此操作,连接和分离通常位于相关右键菜单的“所有任务”标题下)。我的经验仅限于 SQL7、2000 和 2005,使用 USB 外壳中的内部驱动器,但我认为 2008 年不会发生任何变化(它应该可以与其他 USB 大容量存储设备(如闪存棒)配合使用)。驱动器必须本地安装 - SQL Server 不允许您连接到网络存储上的数据库。

拔下驱动器之前,请确保数据库已分离,或者 SQL Server 已关闭(或者计算机已完全关闭)。如果通过关闭计算机或关闭 SQL Server 释放可移动磁盘,则需要在 SQL Server 下次启动之前插入驱动器。

正如其他人指出的那样,在大多数情况下,性能会降低。大多数 USB 驱动器的最高速度约为 25Mb/秒即使机箱内的驱动器能够处理更多由于 USB2 控制器的限制。话虽如此,如果您的内部驱动器上有很多事情发生(其他数据库访问等),您可能会发现将数据库移动到单独的主轴,即使是通过较慢的接口连接的主轴,也可以提高响应能力(因为您的数据库访问不会与其他活动 IO 在同一主轴上争用时间,因此会通过额外的磁头移动导致延迟)。这是假设您在 USB 外壳中使用 SATA/PATA 旋转磁盘。如果您使用的是基于闪存的普通 USB 棒,那么性能将是很多甚至更低,特别是对于写入而言 - 尽管固态存储的延迟较低,这在一定程度上会有所帮助,但许多普通标准的棒的读取速度不会超过 10Mbyte/sec,而低于 4Mbyte/sec 的写入速度也并不少见。

关于安全问题:只有当您的工作区域完全安全(没有钥匙和密码,任何人都无法进出,而且您会审查允许谁进入)并且当您不在场时,所有外部驱动器都拔下并存放在合适的保险箱中时,将数据放在可移动媒体上才会更安全。否则,可移动驱动器实际上会相当不安全。

以上所有内容均假设您谈论的是开发环境。如果您谈论的是任何接近实时服务的东西,那么这将从“不特别推荐”变为“强烈建议不要”。而且对于开发来说,你无论如何都不应该使用敏感数据。你应该制造测试数据,或者匿名真实数据(如果你的敏感数据是个人信息,那么所有识别信息,如姓名、地址和识别码,都应足够随机化)。

针对更现代的硬件进行更新

自上述内容撰写以来,USB3 已变得更加普及,这在一定程度上改变了性能方面。在合适的 USB3 外壳中,好的 2.5 英寸或 mSATA SSD 应该表现得相当不错(当然不如内置驱动器,并且会影响 CPU,但仍然不错)。但其他考虑因素保持不变。

答案3

你遇到的“安全问题”是不是指物理窃取数据不够困难?因为我很难想象移动硬盘如何提升数据安全。

答案4

eSATA 是你的朋友 - 不要使用 USB、Firewire 或任何非 10Gbps NAS 解决方案,FC SAN 很不错但它们并不完全等同于可移动性 - 因此我会选择 eSATA 连接的磁盘阵列,有很多选择而且它们并不是很昂贵。

相关内容