利用sqlcmd实现SQLServerServiceBroker的自动部署

  次阅读 来源:互联网(转载协议) 2016-02-17 13:50 我要评论(0)

因为工作关系,我们项目用到了Service Broker这项技术。它在功能和性能上真的是没的说,唯一让人郁闷的就是部署。要知道,在加密情况下部署一台服务器和一台客户端我们需要以下步骤:

1. 在服务器端清理环境,

2. 在客户端清理环境,

3. 在服务器端创建数据库,并且创建Service Broker相关对象(Message Type,Contract,Queue,Service,Routing甚至Binding)

4. 在客户端创建数据库,并且创建Service Broker相关对象(Message Type,Contract,Queue,Service,Routing甚至Binding)

5. 服务器端生成认证,拷贝给客户端,客户端导入

6. 客户端生成认证,拷贝给服务器,服务器导入。

7. 服务器端授权,建立相关存储过程;

8. 客户端授权,建立相关存储过程;

如果没有自动部署工具,手动部署一遍大概要40分钟时间。因为我们项目现在处于开发阶段,数据库结构经常变,每周至少要重新部署3-4次。这么多时间花在重复性的劳动上明显是浪费。况且上面的例子还仅仅是一台服务器和一台客户端的情况,后面有多台服务器和多台客户端的话,我们花在部署上的时间就没法估算了。

于是我就在考虑能不能用最简单的bat批处理脚本实现自动部署。研究发现sqlcmd是一个很好的选择,再借助一些简单的dos命令基本就满足要求。在这里和大家分享一下(本例子是基于局域网的)。

测试连接

要实现自动部署,至少要保证用sqlcmd能访问到本机(服务器端)和目标机器(客户端)的数据库,测试方法如下:

测试本机:

?

1

sqlcmd -U [username] -P [password] -S localhost

测试目标机器:

?

1

sqlcmd -U [username] -P [password] -S [IP address]SQLEXPRESS

这里和用Management Studio连接数据库是所用的Server Name,Login和Password是相同的。 注意:如果目标机器安装的是SQLExpress或打开防火墙,有可能连接不通。如遇到类似如下错误,可以参照这里和这里解决。

“Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : SQL Server Network Interfaces: Server doesn't support requested protocol [xFFFFFFFF]. . Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout expired. Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..”

执行SQL文件

因为sqlcmd是可以在本机的数据库上执行一个sql文件里的语句的,有用的是也可以在其他机器上执行本地文件系统中的sql。

?

1

sqlcmd -U [username] -P [password] -S [IP address]SQLEXPRESS -i c:Clear.sql

有了它,我就可以把需要执行的sql语句都组织在一起,在命令行里调用。如果是多台客户端,甚至可以循环调用。

?

1

2

3

4

Set IpList=10.32.0.1 10.32.0.2

for %%a in (%IpListt%) do {

sqlcmd -U [username] -P [password] -S %%aSQLEXPRESS -i C:Clear.sql

}

操作共享文件夹

了解service broker的朋友们应该知道,service broker的安全机制是很严格的。因为我们利用了认证文件(certificate file)做认证,所以在部署过程中需要创建认证文件,复制到共享文件夹,再由目标机器导入。于是,在部署过程中是需要访问共享文件夹的,是要有删除,创建和读取的访问权限的。还有一个前提:我们需要把需要访问的文件夹共享给所有人(Everyone),这样命令行才能即通过slqcmd正常的生成认证文件,又能拷贝和删除认证文件。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 长虹新款智能语音空调,告诉你空调也能玩Siri

    长虹新款智能语音空调,告诉你空调也能玩Siri

  • 第一批国家重点研发计划公布,旷视科技开启“五年行动”

    第一批国家重点研发计划公布,旷视科技开启“五年行动”

  • 让AI触手可及  Qualcomm携手创通联达推出全新终端侧AI开发套件

    让AI触手可及 Qualcomm携手创通联达推出全新终端侧AI开发套件

  • 品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

    品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...