You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell创建可正常连接SQL Server的SQL登录账户

问题根因
  • 执行顺序错误:原脚本先创建SQL身份验证登录,再修改SQL Server为混合身份验证模式、重启服务。Windows-only身份验证模式下创建SQL登录时,SQL Server不会正确处理密码配置,同时会默认禁用登录的连接权限。
  • Add-SqlLogin参数缺失:缺少-GrantConnectSql显式授权连接数据库引擎权限,缺少-MustChangePassword $false禁止强制首次登录修改密码,导致密码未按预期配置、连接权限被默认设为Deny。
  • 冗余操作:重复调用Install-Module安装同一模块,无实际作用还会拖慢执行效率。
修复后的完整脚本
# 安装并导入SqlServer模块(仅首次运行需要,后续运行可注释)
Install-Module -Name SqlServer -AllowClobber -Force
Import-Module SqlServer

$compName = $env:computername
$instanceName = "SQLSERVER"
$fullInstance = "$compName\$instanceName"
$username = "user"
$password = ConvertTo-SecureString "TestPassword123" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($username, $password)

# 第一步:先修改为混合身份验证模式并重启服务生效
$sql = [Microsoft.SqlServer.Management.Smo.Server]::new($fullInstance)
$sql.Settings.LoginMode = 'Mixed'
$sql.Alter()
Get-Service -Name "MSSQL`$$instanceName" | Restart-Service -Force

# 第二步:服务重启后再创建SQL登录,显式指定所有必要参数
Add-SqlLogin -ServerInstance $fullInstance `
    -LoginType "SqlLogin" `
    -DefaultDatabase "master" `
    -LoginPSCredential $cred `
    -Enable `
    -GrantConnectSql `
    -MustChangePassword $false `
    -PasswordPolicyEnforced $false
关键配置说明
  • -GrantConnectSql:显式授予登录的连接数据库引擎权限,避免权限被默认设为Deny
  • -MustChangePassword $false:关闭首次登录强制修改密码的要求,确保配置的密码直接生效
  • -PasswordPolicyEnforced $false:测试环境可选参数,跳过系统密码策略校验,生产环境建议删除该参数使用合规密码
  • 调整后的执行顺序:先改身份验证模式→重启生效→再创建SQL登录,确保SQL Server在支持SQL身份验证的状态下处理登录创建逻辑,所有配置都会正确写入。
注意事项

运行脚本前需要以管理员权限启动PowerShell,否则修改服务、SQL实例配置的操作会失败。

内容的提问来源于stack exchange,提问作者GreenSaber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:09