以编程方式分离 SQL Server 数据库以复制 mdf 文件

2024-01-12

我有一个小型 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(使用前将#替换为@)

以编程方式分离 SQL Server 数据库以复制 mdf 文件 的相关文章

  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 在 iFrame 内维护会话状态

    不确定我是否疯了 但我在 iFrame 内的会话状态遇到问题 它是一个域在另一个域中的简单设置 我不需要跨域共享任何内容 我想做的就是将一个网站嵌入到另一个网站中 并且我希望该嵌入网站能够使用 cookie 会话状态登录 编辑 更新 等 为
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 使用打字稿时对象中未定义的属性

    我想将对象的每个属性作为执行查询的结果 UserBody export interface UserBody empno string password string class string user id string deptcd s
  • import _socket:“导入错误:DLL 加载失败”

    我昨天尝试安装 Django 和 pymc 遇到很多问题后 我决定重新安装 Python 2 7 我已经这样做了 但现在导入几乎所有东西都遇到问题 我得到了一堆行 最后一行是 File c python27 lib httplib py l
  • 如何修复照片方向的角度

    我无法让照片在我的角度 节点应用程序中以正确的方式定向 我的应用程序已设置为使用 ng2 file upload 将文件从 Angular 应用程序发送到服务器 其中 multer 和 multer s3 将该照片保存在 AWS S3 中
  • 如何在一次休息 API 调用中从 azure key Vault 获取最新的秘密版本值

    如果我已经知道使用此端点的版本号 我可以从rest api中的azure key Vault获取秘密 https my key vault dev vault azure net secrets MyTestSecret 13f8347b8
  • 如何用FFMPEG正确将H264封装成FLV?

    首先 标题中的 适当 指的是这个相关问题 https stackoverflow com questions 44952940 ffmpeg how to wrap h264 stream into flv container 其中的答案并
  • 如何从 cmd 运行属于包一部分的 .class 文件?

    当我做我的事情时 我不断收到错误 class的一部分package并尝试从cmd运行它 这是使用后有效的代码javac然后是java class HelloWorld public static void main String args
  • NSURLErrorDomain:-1003

    当我在 Xcode 中运行我的应用程序时 我收到 NSURLErrorDomain 1003 我还没有在 StackOverflow 上看到这个错误 有任何线索吗 我正在使用阿拉莫菲尔 4 func fetchAllPosts Alamof
  • 尽管给出不同的答案来调用实际方法以返回静态方法执行

    我正在使用 powermockito 并且我正在嘲笑一个班级SomeUtil拥有所有静态方法 import java util List class SomeUtil other static methods public static X
  • WebSocket 握手:意外的响应代码:kubernetes-ingress 中的 400

    如果我连接到 Web 套接字服务的入口 则会遇到此问题 失败 WebSocket 握手期间出错 意外的响应代码 400 入口 YAML kind Ingress apiVersion extensions v1beta1 metadata
  • npm install 显示错误,未找到 git

    我最近向包 JSON 添加了一些依赖项并尝试安装 npm 但它显示与 git not find 相关的错误 npm 错误 路径gitnpm 错误 代码 ENOENTnpm 错误 错误信息npm 错误 系统调用派生 gitnpm 错误 eno
  • Ruby 中未初始化的常量 MyClass (NameError)

    我有一个模块 Shish 其作用类似于抽象类 和一个访问者类 Only Onions 我想在 Shish 模块中实例化 Only Onions 以便所有扩展 Shish 的类都可以使用该对象来确定它们是否只有 onions module S
  • Laravel 验证错误

    这是错误 Symfony Component Debug Exception FatalErrorException 调用 未定义方法 Illuminate Validation Validator make 这是我的代码 validato
  • 核心数据关系问题

    I m facing a weird issue with my core data I ve the following relationship 一个联系人可以属于一个类别 一个类别可以有多个联系人 我想在创建联系人时访问联系人中的我的
  • ODAC:未将对象引用设置为对象的实例

    我正在尝试连接到 Oracle Express 11g 我正在将 ODAC 12c 与 Visual Studio 2015 结合使用 以下是我尝试连接的方式 OracleConnection con con new OracleConne
  • 如何在文本块中处理意图(Java 13)

    我刚刚尝试了 Java 13 中的新文本块功能 遇到了一个小问题 我读过了这篇文章来自 Jaxcenter https jaxenter com java 13 text blocks 162278 html 结束的三引号会影响格式 Str
  • 我收到错误语法错误,意外的$end,期待keyword_end [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我是第一个使用 ruby 的人 所以当我遵循指南 http guides rubyonrails org getting star
  • 如何让一个类使用 applicationContext beans?

    我正在开发我的第一个 java struts2 webapp 并且希望能够将 bean 参数注入到任何被调用的类中 但我发现我只能用 struts 动作类来做到这一点 假设我的 applicationContext xml 文件中有这个 b
  • C++ 错误表达式不能用作函数

    我如何编辑我的公式 weekday day 2 month 3 month 5 year year 4 year 100 year 400 7 这样我就不会收到 表达式不能用作函数 的错误消息 include
  • 从 C 调用 Intel 8086 汇编程序

    我需要为汇编语言开发一个过程 并从 C 语言调用该过程 传递一个字符串并返回一个整数值 我的组装程序 独立 运行良好 我需要帮助将它们连接在一起 程序应该在 Intel 8086 上运行 我需要使用 MASM 或 emu8086 作为汇编器
  • 以编程方式分离 SQL Server 数据库以复制 mdf 文件

    我有一个小型 SQL Server 数据库 需要根据命令进行复制 我需要能够在任何给定时刻获取 mfd 和 ldf 文件 复制它们 压缩它们 然后将它们提供给最终用户 现在这可以通过手动实现 1 通过远程桌面登录SQL服务器 2 通过 SQ