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

Ach*_*les 5 hard-drive database sql-server

由于一些安全问题,我的老板要求我将所有敏感数据存储在外部/可移动存储设备中,例如 U 盘或外部硬盘驱动器,这特别包括我们正在运行的 SQL Server 2008 的 MDF/NDF/LDF 文件。

过去三天我一直在阅读,但没有找到解决方案。有什么解决办法吗?有没有人做过这样的事情?

Ach*_*les 8

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

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

DBCC TraceOn(1807);
GO
Run Code Online (Sandbox Code Playgroud)

此命令标记 1807 TranceOn 以让您使用“\Server-name\Path-to-Database-File.mdf”之类的 UNC 作为数据库文件的路径。现在,您需要在可移动 USB 硬盘上创建一个文件夹,并使用“共享和安全”将对该文件夹的完全控制授予“网络服务”或您的 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
Run Code Online (Sandbox Code Playgroud)


Dav*_*ett 7

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

  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 变得越来越普遍,这在一定程度上改变了性能方面。一个好的 2.5" 或 mSATA SSD 在合适的 USB3 机箱中实际上应该表现得相当好(当然不如内部驱动器好,并且对 CPU 有影响,但仍然很好)。不过其他考虑因素保持不变。