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

PowerShell中SQL连接串传加密密码及SYSTEM账户连SQL问题咨询

问题1:如何在PowerShell的SQL连接字符串中传递加密密码?

直接明文写密码存在严重安全风险,推荐以下加密方式传递密码:

  • 使用SecureString配合SqlCredential类实现安全连接:

    # 将密码转换为SecureString(建议从用户输入读取,避免硬编码)
    $securePassword = ConvertTo-SecureString "你的密码" -AsPlainText -Force
    $sqlCredential = New-Object System.Data.SqlClient.SqlCredential("用户名", $securePassword)
    
    # 创建SQL连接并关联Credential
    $connection = New-Object System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = "Server=你的服务器名;Database=目标数据库名;"
    $connection.Credential = $sqlCredential
    
    # 执行连接操作
    $connection.Open()
    # 后续数据库操作...
    $connection.Close()
    
  • 若需通过连接字符串传递,可使用加密的配置文件配合ConfigurationManager读取,但仍优先推荐SqlCredential方案。

问题2:使用NT AUTHORITY\SYSTEM账户连接SQL Server及psexec报错解决

一、配置SYSTEM账户连接SQL Server的步骤

  1. 以具备SQL管理权限的账户(如sa或本地管理员)打开SSMS。
  2. 在「安全性」→「登录名」右键新建登录:
    • 登录名输入NT AUTHORITY\SYSTEM,身份验证选「Windows身份验证」。
    • 切换到「用户映射」标签,勾选需访问的数据库,并分配对应角色权限(如db_datareader、db_datawriter)。
  3. 重启SQL Server服务,确保权限生效。

二、解决psexec「访问被拒绝」报错的步骤

  1. 以管理员身份运行命令行:打开PowerShell或CMD时右键选择「以管理员身份运行」,psexec需要管理员权限执行。
  2. 解锁PSTools文件:若工具从网上下载,右键psexec.exe→「属性」,在「常规」标签底部勾选「解除锁定」(若有该选项),避免系统拦截。
  3. 指定SSMS完整路径:若SSMS不在系统PATH中,需填写全路径,例如:
    psexec -i -s "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe"
    
  4. 调整本地安全策略:
    • 打开「本地安全策略」→「本地策略」→「用户权限分配」,确保「允许本地登录」权限包含NT AUTHORITY\SYSTEM。
    • 若UAC限制,可尝试添加-h参数适配高权限:
      psexec -i -s -h ssms.exe
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:25:52