我有一个小型 SQL Server 数据库,需要根据命令进行复制 - 我需要能够在任何给定时刻获取 mfd 和 ldf 文件,复制它们,压缩它们,然后将它们提供给最终用户。
现在这可以通过手动实现:
1)通过远程桌面登录SQL服务器
2) 通过 SQL Management Studio 分离数据库。我必须摆弄将数据库设置为 single_user 和/或重新启动服务的组合,以便我可以将其分离,因为应用程序服务器通常已登录到其中。
3)分离时,我会检查文件系统并复制 mdf 和 ldf 文件。
4)我通过 SQL Management Studio 重新附加数据库
5) 我压缩复制的文件,并将它们移动到 FTP 服务器,以便需要它们的人可以获取它们。
这是一个可怕的、低效的过程。这不仅仅是需要模式的问题,还需要人们在自己的本地计算机上使用真实生产数据的快照来进行破坏性实验。幸运的是,压缩后的数据库非常小——加上日志可能只有 30 兆。
因此,理想情况下,我想在 ASP .NET Web 应用程序中创建一个页面,其中有一个按钮,用户可以按下该按钮来启动将当前数据库打包到 zip 文件中,然后我只需提供指向文件下载。
为什么不进行普通备份(使用 sql 命令即可轻松完成)并添加一个功能,让用户只需单击按钮即可轻松恢复该备份文件?
- 您可以使用sql命令备份数据库
- 您可以使用 sql 命令提取并压缩备份文件
- 如果需要,您还可以将备份文件自动导出并 ftp 到网络服务器。
最终用户使用什么来使用您的数据库? winform 程序?然后,用户只需单击按钮即可轻松完成所有操作。
以下是一些示例代码:
Declare @CustomerID int
declare @FileName nvarchar(40)
declare @ZipFileName nvarchar(40)
declare @ZipComand nvarchar(255)
set @CustomerID=20 --Get from database instead in real life application
SET @FileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.bak'
SET @ZipFileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.zip'
--Backup database northwind
backup database northwind to DISK=@FileName
--Zip the file, I got a commanddriven zip.exe from the net somewhere.
set @ZipComand= 'zip.exe -r '+@ZipFileName+' '+@FileName
EXEC xp_cmdshell @zipcomand,NO_output
--Execute the batfile that ftp:s the file to the server
exec xp_cmdshell 'c:\movetoftp.bat',no_output
--Done!
你必须有一个 movetoftp.bat 包含这个(将 ftp-server 更改为你的):
ftp -s:ftpcommands.txt ftp.myftp.net
并且您必须有一个包含此内容的 ftpcommands.txt (您也可以通过 sqlcommands 使用正确的 zip 文件以动态方式创建此文件,但我让您自己这样做):
FTP用户名
FTP密码
binary
提示n
输入 c:\backups\*.zip
quit
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)