『原创』在部署项目时通过脚本、注册表修改SQL Server 2005的相关属性
很久没有发文了,感觉鄙人的园子好多灰尘啊,呵呵。实在是最近项目太紧,处于交付、实施的阶段,忙不过来,还望各位谅解哦!当然,在此还要说一个比较郁闷的事情,上上一篇提到了一个关于文件传输的文章,因为涉及到一些产权问题,所以,在此就不能继续下去了,还望各位见谅,见谅!实属无奈!
废话不多说,在此片文章中,我将和大家分享一些关于项目部署的心得,当然,其中不免有一些不成熟之处,特别希望大家能够和我一起探讨!首先,这个项目是一个Winform程序,用一个MSSQL数据库做数据支持,自然,在部署时,要考虑到数据库的部署。
从网络上查到了很多关于在打包程序时,如何部署SQL数据库的问题。可惜,由于这个项目是Winform的,每个客户端都需要一个SQL服务组建,至少要有个MS Sql Server Express的客户端吧。这个对于打包工具如Install shield、Setup Factory等都是小菜一碟,小弟用的是一个叫做 Advanced Installer的工具,也是非常之顺手啊,在设置数据库连接的时候,使用的是ODBC连接。 配置如下图:
当然啦,这肯定难不倒我们,毕竟SQL Server Express在安装时已经安好了,剩下来的工作就是连接到数据库,执行sql脚本,去创建数据库了,问题就在这里,sql server 2005默认关闭了远程连接,所以,在执行sql脚本时,总是出现ODBC连接:超时的错误提示。这可急煞我也,所谓万事大吉,只欠东风啊!于是股沟败毒一番,查到了一个能用的方法,大致简述如下:
在安装完Sql Server 2005 Express后,通过打包程序,修改注册表相关键值,打开SQL Server Express的远程连接属性,并通过注册表修改其重要属性,然后,通过脚本或者打包工具自带的功能,重新启动SQL Server服务,最后,让安装程序执行SQL脚本即可。
通过小弟的“暴力”破解,发现,要使用服务器名为(local)的本地身份验证方式去连数据库的话,sql的远程连接应该把TCP那个启用,如下图,
并且,设置“All IP”属性中的端口为1433,默认状态下它是空值。
当然,手动设置完以后,还要重启SQL服务,ok,然后,我又发现,在注册表中,sql的这些属性在其中均有存储,下面,我们要做的事情就简单了。
找到键值,然后修改它,通过命令停止服务,再启动服务,Ok,下面就是脚本内容:
echo "Program is stopping your SQL Service……"
@echo off
net stop mssql$sqlexpress
@echo on
echo "Program is Registing your REG Items……"
@echo off
reg add "hklm\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp" /v Enabled /t reg_dword /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" /v TcpPort /t reg_sz /d 1433 /f
@echo on
echo "Program is starting your SQL Service……"
@echo off
net start mssql$sqlexpress
@echo on
echo "All Sets have been done successfully!"
exit
OK,保存为bat文件,执行一下,发现,在SSMS_Express中,用(local)登录正常了!大功告成,然后,在安装过程中,加入这个脚本的执行,万事搞定!Yeah!
参考文章:BAT编写详细手册
出处:http://longqi293.cnblogs.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
本篇博文 by Jack Fan is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 2.5 中国大陆 License.
这是我的公众号,【代码只是副业】