仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1794|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:xp_cmdshell

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:52:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
DBaaS向客户提供了许多与其他云服务相类似的优势:一个灵活的、可扩展的MySQL学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。xp_cmdshell
新增信息-2001年9月

以操纵体系命令行注释器的体例实行给定的命令字符串,并以文本行体例前往任何输入。授与非办理用户实行xp_cmdshell的权限。



申明在Microsoft®Windows®98操纵体系中实行xp_cmdshell时,将不把xp_cmdshell的前往代码设置为叫醒挪用的可实行文件的历程加入代码。前往代码一直为0。


语法
xp_cmdshell{command_string}[,no_output]
参数
command_string

是在操纵体系命令行注释器上实行的命令字符串。command_string的数据范例为varchar(8000)或nvarchar(4000),没有默许值。command_string不克不及包括一对以上的双引号。假如由command_string援用的文件路径或程序称号中有空格,则必要利用一对引号。假如利用嵌进空格不便利,可思索利用FAT8.3文件名作为办理举措。

no_output

是可选参数,暗示实行给定的command_string,但不向客户端前往任何输入。
前往代码值
0(乐成)或1(失利)
了局集
实行以下xp_cmdshell语句将前往以后目次的目次列表。

xp_cmdshelldir*.exe

行以nvarchar(255)列的情势前往。

实行以下xp_cmdshell语句将前往随后的了局集:

xp_cmdshelldir*.exe,NO_OUTPUT

上面是了局:

Thecommand(s)completedsuccessfully.
正文
xp_cmdshell以同步体例操纵。在命令行注释器命令实行终了之前,不会前往把持。

当授与用户实行权限时,用户能在MicrosoftWindowsNT®命令行注释器上实行运转MicrosoftSQLServer™的帐户有权实行的任何操纵体系命令。

默许情形下,只要sysadmin流动服务器脚色的成员才干实行此扩大存储历程。可是,也能够授与其他用户实行此存储历程的权限。

看成为sysadmin流动服务器脚色成员的用户叫醒挪用xp_cmdshell时,将在运转SQLServer服务的平安高低文中实行xp_cmdshell。当用户不是sysadmin组的成员时,xp_cmdshell将摹拟利用xp_sqlagent_proxy_account指定的SQLServer代办署理程序的代办署理帐户。假如代办署理帐户不克不及用,则xp_cmdshell将失利。这只是针关于Microsoft®WindowsNT®4.0和Windows2000。在Windows9.x上,没有摹拟,且xp_cmdshell一直在启动SQLServer的Windows9.x用户的平安高低文下实行。



申明在初期版本中,取得xp_cmdshell实行权限的用户在MSSQLServer服务的用户帐户高低文中运转命令。能够经由过程设置选项设置SQLServer,以便对SQLServer无sa会见权限的用户可以在SQLExecutiveCmdExecWindowsNT帐户的高低文中运转xp_cmdshell。在SQLServer7.0中,该帐户称为SQLAgentCmdExec。如今,不是sysadmin流动服务器脚色成员的用户将在该帐户高低文中运转命令,而无需再举行设置变动。


权限
xp_deletemail的实行权限默许授与sysadmin流动服务器脚色的成员,但能够授与其他用户。



主要假如为MSSQLServer服务选用的WindowsNT帐户不是当地办理员组的成员,则非sysadmin流动服务器脚色成员的用户将没法实行xp_cmdshell。


示例A.前往可实行文件列表
下例显现实行目次命令的xp_cmdshell扩大存储历程。

EXECmaster..xp_cmdshelldir*.exe
B.利用WindowsNTnet命令
下例显现xp_cmdshell在存储过程当中的利用。下例先用netsend关照用户SQLServer行将封闭,然后用netpause停息服务器,最初用netstop封闭服务器。

CREATEPROCshutdown10ASEXECxp_cmdshellnetsend/domain:SQL_USERSSQLServershuttingdownin10minutes.Nomoreconnectionsallowed.,no_outputEXECxp_cmdshellnetpausesqlserverWAITFORDELAY00:05:00EXECxp_cmdshellnetsend/domain:SQL_USERSSQLServershuttingdownin5minutes.,no_outputWAITFORDELAY00:04:00EXECxp_cmdshellnetsend/domain:SQL_USERSSQLServershuttingdownin1minute.Logoffnow.,no_outputWAITFORDELAY00:01:00EXECxp_cmdshellnetstopsqlserver,no_output
C.不前往输入
下例利用xp_cmdshell实行命令字符串,且不向客户端前往输入。

USEmasterEXECxp_cmdshellcopyc:qldumpspubs.dmperver2ackupsqldumps,NO_OUTPUT
D.利用前往形态
鄙人例中,xp_cmdshell扩大存储历程也给出了前往形态。前往代码值存储在变量@result中。

DECLARE@resultintEXEC@result=xp_cmdshelldir*.exeIF(@result=0)PRINTSuccessELSEPRINTFailure
E.将变量内容写进文件
下例将@var变量的内容写进以后服务器目次下名为var_out.txt的文件中。

DECLARE@cmdsysname,@varsysnameSET@var=HelloworldSET@cmd=echo+@var+>var_out.txtEXECmaster..xp_cmdshell@cmd
F.将命令的了局捕捉到文件
下例将以后目次的内容写进以后服务器目次中名为dir_out.txt的文件中。

DECLARE@cmdsysname,@varsysnameSET@var=dir/pSET@cmd=@var+>dir_out.txtEXECmaster..xp_cmdshell@cmd

请拜见


CREATEPROCEDURE

EXECUTE

创立平安帐户

体系存储历程(惯例扩大历程)
如果互联网服务提供商,支撑数据的云服务,或它们之间任一点网络被堵塞或中断,他们就会遇到与数据延迟或应用程序故障有关的问题。如果问题发生在企业内部,解决方案提供商可以排除故障找出原因。
乐观 该用户已被删除
沙发
发表于 2015-1-20 05:43:20 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
山那边是海 该用户已被删除
板凳
发表于 2015-1-28 19:23:17 | 只看该作者
也可谈一下你是怎么优化存储过程的?
飘灵儿 该用户已被删除
地板
发表于 2015-2-5 22:19:28 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-13 22:11:14 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
变相怪杰 该用户已被删除
6#
发表于 2015-3-4 02:23:23 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
再见西城 该用户已被删除
7#
发表于 2015-3-11 15:27:43 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-19 01:18:13 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
透明 该用户已被删除
9#
发表于 2015-3-27 00:47:14 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 20:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表