我正在尝试自动安装 SQL Server 2016 Express。
我有一本使用巧克力包安装 SQL Server Express 的 Chef Recipe 。
与 Chef 资源相同的命令
chocolatey_package 'sql-server-express' do
action :install
options '--cachelocation c:\temp\choco'
end
等效的 PowerShell 命令
choco install sql-server-express --cachelocation c:\temp\choco
如果我使用安装向导正常安装 SQL Server Express,我可以毫无问题地验证和创建/修改数据库。
如果我使用 chocolatey/chef 安装 SQL Server Express,我将无法创建或修改数据库。
尝试创建新数据库时的错误
CREATE DATABASE permission denied in database 'master'
尝试修改现有数据库时的错误
The server principal "Foo\Bar" is not able to access the database "foobar" under the current security context
我试过以“sa”用户身份登录。混合身份验证未启用,我无法启用它。
如何让 SQL Server Express 用户的巧克力安装与正常安装相同?
最佳答案
很多天后我发现了问题。 以本地管理用户身份运行 chocolatey,而不是 SYSTEM
。
为什么:
由于 WinRM 协议(protocol)的限制,如果通过 WinRM 执行命令,将不会安装巧克力包。
常见的解决方法是在计划任务中运行 chef/chocolatey。
不幸的是,计划任务以 SYSTEM
用户身份运行。结果是 MSSQL 将只允许 SYSTEM 用户运行管理命令。
解决方案是以本地系统帐户(不是 SYSTEM)在计划任务中运行 chocolatey。或者使用 RDP 登录系统并直接运行 chocolatey 命令(而不是通过 winrm)。
如何以(非 SYSTEM)提升用户身份运行 Chef 测试厨房的示例
transport:
name: winrm
elevated: true
elevated_username: vagrant
elevated_password: vagrant
关于sql-server - SQL Server 在安装 witch chocolatey 时无法授权用户(通过 chef),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553807/