如何在无人值守安装 SQL Server 2014 Express 时启用 sa 登录?

How to enable sa login when doing an unattended install of SQL Server 2014 Express?

我有一个安装程序 运行 以无人值守模式运行 SQL Server 2014 Express 安装程序。

基本上,它是创建一个命令行并 运行 设置。

我的问题是我需要能够使用 SQL 服务器身份验证以管理员身份连接到已安装的实例。

命令行已包含 /SECURITY MODE=SQL。我可以创建一个 SQL 登录并成功登录,所以这部分问题没有问题。

我的问题是,虽然我可以在 sys.server_principals 中看到 sa,但它被标记为 is_disabled,我无法使用它登录。

有没有办法,当 运行 以无人值守的方式安装 SQL Server 2014 时,传递命令行参数以启用 sa,这样我就可以使用它成功登录?

或者其他一些登录方式,如果那样更容易的话。

我需要的是一个 sql_login,我可以用它作为数据库管理员连接到数据库,而不考虑登录 windows 用户的权限,在 运行 无人值守模式下的安装程序。

完整的命令行参数:

/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=SQL 
    /INSTANCENAME=SQLEXPRESS /SAPWD="SQLSVCPASSWORD"

如果我使用管理员帐户登录 Windows,我可以使用 Windows 身份验证连接到数据库。然后我可以创建一个正常的 SQL 服务器登录。这样,我就可以使用 SQL 服务器身份验证和该帐户登录。

所以我确定数据库处于混合模式。还有这个:

Exec xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode'

returns '2'.

我的问题是我需要用户能够 运行 该软件,而无需成为 windows 管理员。该软件需要做的部分工作是在实例中删除和创建数据库。

所以我需要 SQL 管理员权限,而不依赖于具有提升权限的 windows 用户。

===

我正在使用的设置工具是使用 XML 文件配置的,其中包含 LUA 构建脚本和 运行 Windows 安装程序包命令线。在嵌套语言和各种级别的转义之间,我没有注意到“/SECURITYMODE=SQL”参数被注释掉了,并且没有包含在命令行中。

将其包含在命令行中后,"sa" 用户已启用。

TL;RD 如果要启用 "sa" 用户,请在安装后在命令行中包含“/SECURITYMODE=SQL”。

使用/SECURITYMODE=SQL时也需要指定/SAPWD。我不确定,但是如果你不指定密码,默认情况下它会被禁用。

查看这篇文章https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-from-the-command-prompt?view=sql-server-2017了解更多信息。