将开发SQL Server复制到u盘的最简单方法



我有一个小的SQL数据库,这是我的开发PC上只有。我想经常把它备份到u盘里。如果我能让它在检测到u盘时自动按时间表完成,那就更好了。做这件事的好方法是什么?

我是这样做的,每次我插入u盘时,数据库和其他文件夹都会自动同步到u盘:

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

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

@echo off
if exist "G:SyncMe.bat" goto fileexists
goto nofile
:fileexists
"C:Program FilesMicrosoft SQL Server100ToolsBinnOSQL.EXE" -S computernameinstancename -E -n -Q "master..sp_detach_db 'DatabaseName'"
"C:Program FilesSyncToy 2.1SyncToyCmd.exe" -R
"C:Program FilesMicrosoft SQL Server100ToolsBinnOSQL.EXE" -S computernameinstancename -E -n -Q "master..sp_attach_db 'DatabaseName', 'C:Program FilesMicrosoft SQL ServerMSSQL10_50.InstanceNameMSSQLDATADatabaseName.mdf','C:Program FilesMicrosoft SQL ServerMSSQL10_50.InstanceNameMSSQLDATALogName_log.ldf'"
goto end
:nofile
echo SyncMe.bat not found on G:
goto end
:end

我不认为你可以让SQL Server为你做这一切。我最终编写了一个小的控制台应用程序,使用SMO为我做这项工作:

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

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

C:Program FilesMicrosoft SQL ServerMSSQL10。SQLEXPRESS 该数据

我不认为你可以这样做,而服务器正在运行,但你可以从管理工作室(右键单击数据库)轻松地分离DB ..任务. .分离)。然后你就可以复制这些文件了,首先压缩它们会在大小和版本上有很大的不同。

反过来,在management studio中,您可以选择数据库节点,然后右键单击。附加数据库以再次附加它们。

这似乎是一篇关于这个问题的好文章。

问候Gert-Jan

最新更新