主要内容:
准备工作
总结
一、准备工作
INSERT INTO dbo.Products ( ProductName ) VALUES ( '1.sql_'+CAST(GETDATE() AS NVARCHAR(10)) )
INSERT INTO dbo.Products ( ProductName ) VALUES ( '2.sql_'+CAST(GETDATE() AS NVARCHAR(10)) )
下图是运行前后的结果:
我们上面是使用批处理来进行sql文件的批量执行,那么我们在程序中如何来做呢,当然可以调用批处理文件了,但是我们更多时候还是喜欢使用sql来完成,此时就不得不提到master..xp_cmdshell这个存储过程。master..xp_cmdshell这个存储过程可以让我们以sql语句的方式调用command shell,那么当然我们在cmd中能做的基本上使用master..xp_cmdshell也都能做。
sql Server 阻止了对组件'xp_cmdshell' 的过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'xp_cmdshell'。有关启用'xp_cmdshell' 的详细信息,请参阅sql Server 联机丛书中的"外围应用配置器"。
配置的方式有多种,这里我们就通过sql来进行安全配置(注意为了安全起见在调用完master..xp_cmdshell之后记得关闭),下面是我们修改安全配置和使用master..xp_cmdshell执行osql/ocmd命令的sql语句:
--打开配置
EXEC sys.sp_configure 'show advanced options',1
GO
--进行安装
RECONfigURE
GO
--配置xp_cmdshell为可用
GO
--进行安装
RECONfigURE
GO
--执行xp_cmdshell命令
GO
--打开配置
EXEC sys.sp_configure 'show advanced options',1
GO
--进行安装
RECONfigURE
GO
--配置xp_cmdshell为不可用
GO
--进行安装
RECONfigURE
GO
四、总结
今天我们主要说了一下如何利用osql/ocmd在命令行及sql中(利用master..xp_cmdshell)批量执行sql文件,其实osql/ocmd用处远远不止这些,感兴趣的朋友可以自己研究一下。
本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的。但转载请注明来自崔江涛(KenshinCui),并包含相关链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。