【问题标题】:Easiest way to copy development SQL Server to thumb drive将开发 SQL Server 复制到拇指驱动器的最简单方法
【发布时间】:2011-11-09 15:21:50
【问题描述】:

我有一个小型 SQL 数据库,仅在我的开发 PC 上。我想经常将其备份到拇指驱动器上。如果我可以让它在检测到拇指驱动器时按计划自动执行,那就更好了。有什么好的方法可以做到这一点?

【问题讨论】:

    标签: sql-server database sql-server-2008 backup replication


    【解决方案1】:

    这就是我每次插入 USB 驱动器时让数据库和其他文件夹自动同步到我的 USB 驱动器的方法:

    1. 安装由微软制作的SyncToy
      • 添加要从 DB 文件夹复制到 USB 驱动器的文件夹对。
      • 将文件过滤为仅要复制的文件。
    2. 使用以下内容创建一个名为 SyncMe.bat 的批处理程序并将其保存在您的 USB 驱动器上
    3. 从控制面板打开事件查看器。
    4. 导航到应用程序和服务日志 > Microsoft > Windows DriverFrameworks-UserMode > 操作
    5. 清除日志,以便更轻松地找到正确的事件。
    6. 插入 USB 驱动器。
    7. 刷新日志,找到特定于该 USB 驱动器的最新事件,右键单击,然后将任务附加到此事件。
    8. 添加运行您创建的 SyncMe.bat 程序的操作

    SyncMe.bat 内容(更新以反映您的路径和文件名):

    @echo off
    
    if exist "G:\SyncMe.bat" goto fileexists
    
    goto nofile
    
    :fileexists
    "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\OSQL.EXE" -S computername\instancename -E -n -Q "master..sp_detach_db 'DatabaseName'"
    "C:\Program Files\SyncToy 2.1\SyncToyCmd.exe" -R
    "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\OSQL.EXE" -S computername\instancename -E -n -Q "master..sp_attach_db 'DatabaseName', 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.InstanceName\MSSQL\DATA\DatabaseName.mdf','C:\Program Files\Microsoft SQL Server\MSSQL10_50.InstanceName\MSSQL\DATA\LogName_log.ldf'"
    goto end
    
    :nofile
    echo SyncMe.bat not found on G:\
    goto end
    
    :end
    

    【讨论】:

    • 希望没有其他人插入 USB 驱动器 :)
    • 我仍然需要对其进行测试,但我选择了一个看起来特定于我的 USB 设备的事件 ID,因此希望这不会成为问题。我想我总是可以将对 SyncToy 的调用封装在一个批处理程序中,该批处理程序在运行之前检查 USB 驱动器上是否存在唯一文件。
    • 在那里,我更新了我的答案以包含一个批处理程序,该程序在同步之前检查 USB 驱动器上自身是否存在。所以插入不同的 USB 驱动器应该没有危险。
    【解决方案2】:

    我认为您无法让 SQL Server 为您完成这一切。我最终会编写一个使用SMO 为我完成工作的小控制台应用程序:

    Server sqlServer = new Server(@"MYMACHINE\INSTANCENAME");
    sqlServer.DetachDatabase("MyDatabaseName", false);
    
    // copy the mdf and ldf to your thumb drive
    
    StringCollection databaseFiles = new StringCollection();
    databaseFiles.Add(@"C:\MyDBLoc\MyDatabase.mdf");
    databaseFiles.Add(@"C:\MyDBLoc\MyDatabase.ldf");
    sqlServer.AttachDatabase("MyDatabaseName", databaseFiles);
    

    【讨论】:

      【解决方案3】:

      您可以做的是复制 .mdf 和 .ldf 文件,如果您没有更改任何设置,您应该可以在这里找到它们:

      C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

      我认为您无法在服务器运行时执行此操作,但您可以轻松地从 Management Studio 中分离数据库(右键单击数据库 .. 任务 .. 分离)。然后你可以肯定地复制文件,首先压缩它们应该会在大小上产生很大差异并且易于版本化它们。

      反过来,在管理工作室中,您可以选择数据库节点,然后通过 richtclick .. attach database 再次附加它们。

      This 似乎是一篇关于此事的好文章。

      问候格特-扬

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2021-06-08
        • 1970-01-01
        相关资源
        最近更新 更多