将开发SQL Server复制到thumb drive的最简单方法

时间:2011-11-09 15:21:51

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

我有一个只在我的开发PC上的小型SQL数据库。我想经常备份它到拇指驱动器。如果我能够在检测到拇指驱动器时按计划自动完成,那就更好了。有什么好办法呢?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

我不认为您可以在服务器运行时执行此操作,但您可以从Management Studio中分离DB easli(右键单击数据库..任务..分离)。然后你可以肯定地复制文件,首先压缩它们应该在大小上有很大的不同并且很容易对它们进行版本化。

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

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

关心Gert-Jan

答案 2 :(得分:1)

我认为你不能让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);