SQL Server扩展存储过程实现远程备份与恢复

   实例说明:

  环境:win2k+sqlserver 2K+查询分析器

  SQL SERVER服务实例名称:mainserver

  需要备份的数据库名称: msdb

  本地机器名称(Client端):david

  本地用户:zf 密码:123

  本地域名:domain

  本地提供备份需求的文件夹:e: est

   第一步: 建立共享文件夹

  在程序代码中调用(或者CMD窗口) net share test=e: est

  或者用NetShareAdd这个API

  简要说明:

  net share   : 是WINDOWS内部的网络命令。

  作用:建立本地的共享资源,显示当前计算机的共享资源信息。

  语法:参见 net share /?

  第二步: 建立共享信用关系

  master..xp_cmdshell 'net use david est 123 /user:domainzf'

  简要说明:

  1:xp_cmdshell :是SQLSERVER的扩展存储过程。

  作用,以操作系统命令行解释器的方式执行给定的命令字符串,

  并以文本行方式返回任何输出。

  语法:参见SQLSERVER联机帮助

  2:net use   : 是WINDOWS内部的网络命令。

  作用,将计算机与共享资源连接或断开,或者显示关于计算机

  连接的信息。该命令还控制持久网络连接。

  语法:参见 net use /?

  第三步:备份数据库

  backup database msdb to disk='david estmsdb.bak'

  这个不需要说明吧,语法参见SQLSERVER联机帮助

  第四步: 删除共享文件夹

  在程序代码中调用(或者CMD窗口) net share test /delete

  或者用NetShareDel这个API

  结果:

  已处理 1376 页,这些页属于数据库 'msdb' 的文件 'MSDBData'(位于文件 1 上)。

  已处理 1 页,这些页属于数据库 'msdb' 的文件 'MSDBLog'(位于文件 1 上)。

  BACKUP DATABASE 操作成功地处理了 1377 页,花费了 3.653 秒(3.086 MB/秒)。

  这样mainserver服务器上的msdb就备份到了david机器的E: estmsdb.bak文件了,使用起来很简单吧?恢复数据库操作也是一样,只要将第三个步骤的语句改为'restore database msdb from disk='david estmsdb.bak'就可以啦。。你看完了也可以试试呀?!(最简单的测试工具查询分析器+CMD窗口)

  备注:xp_cmdshell 这个扩展存储过程只能SA级别的用户调用,而且是SQL Server的安全隐患之一,许多DBA都喜欢将其删除或者禁用,所以开发人员使用时要倍加小心哦。

时间: 2024-09-20 18:06:15

SQL Server扩展存储过程实现远程备份与恢复的相关文章

使用SQLSERVER的扩展存储过程实现远程备份与恢复

server|sqlserver|备份|存储过程|恢复  最近我在为公司的框架程序(以数据应用为导向的应用体系)做数据管理模块,这个模块的需求比较简单:备份.恢复和清理日志.我公司的软件基本上以C/S为基本架构,所以数据管理模块中两个主要的功能'备份与恢复'都可能会在Client端操作,备份与恢复'的文件也都有可能存储在client端,因而这个数据管理模块就必须能够实现在远程备份与恢复数据库.  文章的前提阐述完了,就该说说如何具体实现吧.其实都很简单,我想写个远程备份的测试实例给大家看,就能够

编写安全的SQL Server扩展存储过程

server|安全|存储过程     SQL Server 的扩展存储过程,其实就是一个普通的 Windows DLL,只不过按照某种规则实现了某些函数而已. 近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别注意的地方.之所以会特别注意,是因为DLL运行于SQL Server的地址空间,而SQL Server到底是怎么进行线程调度的,却不是我们能了解的,即便了解也无法控制. 我们写动态库一般是自己用,即便给别人用,也很少像SQL Server这样,一个动态库很有可能加载多次,

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Upd

简单谈基于SQL SERVER 分页存储过程的演进

server|存储过程|分页 简单谈基于SQL SERVER 分页存储过程的演进 作者:郑佐日期:2006-9-30 针对数据库数据在UI界面上的分页是老生常谈的问题了,网上很容易找到各种"通用存储过程"代码,而且有些还定制查询条件,看上去使用很方便.笔者打算通过本文也来简单谈一下基于SQL SERVER 2000的分页存储过程,同时谈谈SQL SERVER 2005下分页存储过程的演进. 在进行基于UI显示的数据分页时,常见的数据提取方式主要有两种.第一种是从数据库提取所有数据然后在

在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

error|server|程序 错误:"在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) ",       上述错误我遇到两种情况,一种是在打开打开SQL Server 2005时弹出的,另一种是在应用程序连接SQL Server 2005时出现的.归纳了一下,由以下几个原因: 1.数据库引擎没有启动.  

SQL Server编写存储过程小工具(三)

server|存储过程 SQL Server编写存储过程小工具 功能:为给定表创建Update存储过程 语法: sp_GenUpdate <Table Name>,<Primary Key>,<Stored Procedure Name> 以northwind 数据库为例 sp_GenUpdate 'Employees','EmployeeID','UPD_Employees' 注释:如果您在Master系统数据库中创建该过程,那您就可以在您服务器上所有的数据库中使用该

SQL Server编写存储过程小工具(二)

server|存储过程 SQL Server编写存储过程小工具 以下是两个存储过程的源程序 /*=========================================================== 语法: sp_GenInsert <Table Name>,<Stored Procedure Name> 以northwind 数据库为例 sp_GenInsert 'Employees', 'INS_Employees' 注释:如果您在Master系统数据库中创建该

SQL Server 2005存储过程编写指导

    本文让我们谈谈关于这种编写存储过程的新方法的五个常见问题.它们值得你一读的-- 在SQL Server 2000中,只有一种方法编写存储过程:使用T-SQL 语句.学习以前版本的SQL Server中存储过程的编写是一门课程.但是SQL Server 2005让你使用.NET语言家族(主要是VB.NET和C#)来编写存储过程(以及函数.触发器和其他的一些东西)成为可能. 1. 我为什么要使用CLR模型来写存储过程? 主要是因为数据.SQL CLR在一些方面执行较快:其中,字符串处理要比T

SQL Server不允许进行远程连接的解决办法

刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:"在连 接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server的连接) ",现在针对此 问题总结如下: 明白了SQL Server是个网络数据库就可迎刃而解了,简单的分为下面的几种情况. ◆1.数据库引擎没有启动.有两种启动方式: (1)开始-&g