利用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!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...