热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

利用脚本自动安装SQLServer的实现步骤分析

在工作中,经常被要求一天安装个10台、8台的SQLServer。

在工作中,经常被要求一天安装个10台、8台的SQL Server。

每当这种情况发生的时候,我总会心里默念道:杯具啊,这辈子也装不完了。因为SQL Server的安装还是比较复杂的,要先安装.Net、Windows Installer,在正式安装的过程中还要交互的填写各种参数,当然这个还不包括拷贝3GB多的安装文件的时间。在经历了几次这样的悲剧之后,我果断的意识到必须研究一下写个脚本改变这个残酷的现实。

前段时间会学校毕业答辩我终于暂时离开了繁重的工作,能找个时间研究一下脚本了。刚开始实验这个脚本的时候,由于同学喊我打游戏,我就偷懒没准备实验环境,直接用我的本子跑了安装程序,然后就切到游戏去了。结果后来还造成了我本子的系统出现了很难解释的错误,详细的情况我写在上篇BLOG里了,悲剧的《BITS服务异常引发CPU满载》。惨痛的教训告诉我们,作实验还是要虚拟机里做比较安全。

实验环境:

在VMware里面装了个Windows server 2003 企业版 X86 SP2,用的是SQL Server 2008 R2。安装文件解压后保存虚拟机快照,保存下这个纯净的系统环境,这样可以随时还原回来,重新实验。

自动化脚本:

Setup.exe /QS

Setup.exe /QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS
/FEATURES=SQLEngine,IS,SSMS /INSTANCENAME=MSSQLSERVER
/INSTALLSQLDATADIR="D:\sqlserverdata" /AGTSVCACCOUNT="SYSTEM"
/AGTSVCSTARTUPTYPE="Disabled" /SQLSVCACCOUNT="SYSTEM"
/SQLSVCSTARTUPTYPE="Automatic" /ISSVCACCOUNT="SYSTEM"
/ISSVCStartupType="Automatic" /ISSVCACCOUNT="LOCAL SERVICE"
/ISSVCStartupType="Automatic" /SQLSYSADMINACCOUNTS="hanxu"

pause


整个脚本最主要的部分就是上面的两段,其实安装并把参数传递进去原本只需要一行。但是由于SQL Server的安装过程比较特殊,所以需要分为两行来写。真正的安装需要先安装.NET补丁和Windows Installer的补丁,在安装完毕Windows Installer之后整个程序会中断。所以第一行的那个不带很长参数的就是为了触发安装.NET补丁和Windows Installer的补丁。这两个补丁被安装之后程序会中断,所以这里也不需要附带很长的参数。第二行那个带很长参数的才是真正的SQL Server的安装过程。

在这个很长的一大串参数里面,其实归纳一下也还是有规律的。

首先就是/QS /ACTION=Install /IACCEPTSQLSERVERLICENSETERMS,这些参数用于设定安装模式、同意授权协议。

然后,/FEATURES=SQLEngine,IS,SSMS /INSTANCENAME=MSSQLSERVER /INSTALLSQLDATADIR="D:\sqlserverdata"这些参数设定安装的组件和实例信息。

这里有一点的觉得需要说明一下的,脚本安装时支持设定Windows和SQL认证的,如果什么参数都不填就是默认Windows认证。我这里强烈建议用Windows认证方式,如果需要SQL认证可以等安装完毕之后再设定验证模式,如果在脚本里面设定SQL验证的话,里面会记录有sa账户密码。如果脚本丢失,大量的机器都是用这个脚本安装的,那个就不用解释了,悲剧……

再下面的一段就是纯粹的服务设定了,SQL Server的很多功能都是以服务的方式运行的,所以就要给他们赋予相应的启动方式(自动、禁止等)。还有就是对服务给予适当的启动账户(系统账户、本地服务、域权限等)。权限给低了许多权限不够,权限给高了会影响安全性,这个也要综合考虑。

最后就是/SQLSYSADMINACCOUNTS="hanxu",给SQL的sysadmin添加一个账户用于登陆。

关于其他优化:

1.SQL Server的安装盘里面包含了X86、X64、AI64这3个版本,如果只用到其中的一个构架的版本,可以把存放其他版本安装文件的个文件夹给直接删了,然后再打包,这样能精简安装包。

2.我这个实力脚本式对应SQL Server 2008的,如果是之前的版本可能需要打补丁。可以把补丁文件也整合进脚本,然后走脚本自动安装。我实验过一个脚本安装了SQL Server 2008和它的SP1补丁,这个很方便。

3.SQL Server不同版本之间的脚本在参数上有小的差异,这里推荐用虚拟机快照保存最初状态,然后慢慢反复尝试。如果有错误,脚本会在命令行里给出错误参数。详细的参数查询可以使用/help命令或者去MSDN查询。

用了自动化脚本还是很爽的,原来手动安装半小时的活,现在点一下鼠标就行了。甚至可以给脚本加的自动重启的命令,点下鼠标,半小时之后来直接就能用了。话说为了写这个脚本,我用虚拟机实验了也就几十、二十次的样子,通宵了一个晚上,不过对于我这种经常大量安装任务的人来说,可以说是一次投资终身受用。这里分享给大家,希望对大家有所帮助。
推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 优化版Windows 10 LTSC 21H2企业版:适用于低内存设备
    此版本为经过优化的Windows 10 LTSC 21H2企业版,特别适合低内存配置的计算机。它基于官方版本进行了精简和性能优化,确保在资源有限的情况下依然能够稳定运行。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
author-avatar
阿宝宝86
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有