我有一个只在我的开发PC上的小型SQL数据库。我想经常备份它到拇指驱动器。如果我能够在检测到拇指驱动器时按计划自动完成,那就更好了。有什么好办法呢?
答案 0 :(得分:2)
这就是我每次插入数据库和其他文件夹时自动同步到我的USB驱动器所做的工作:
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);