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

SQL Server无法识别新版Powershell SqlServer模块,SQL Agent作业失败求助

解决SQL Agent无法导入新版SqlServer模块的问题

核心原因

SQL Agent的PowerShell作业步骤默认会尝试加载旧版SQLPS模块(而非新版SqlServer模块),且其执行环境的模块路径、权限配置与PowerShell ISE存在差异。

具体修复步骤

1. 强制导入指定版本的SqlServer模块

在SQL Agent作业的PowerShell脚本开头添加以下代码,强制卸载旧模块并加载新版:

# 卸载已加载的旧版SQLPS模块(如果存在)
if (Get-Module -Name SQLPS) {
    Remove-Module -Name SQLPS -Force
}
# 导入指定版本的SqlServer模块
Import-Module -Name SqlServer -RequiredVersion 22.2 -Force

2. 确保SQL Agent服务账户有权限访问模块文件夹

  • 找到新版SqlServer模块的解压路径(通常为C:\Program Files\WindowsPowerShell\Modules\SqlServer或用户自定义模块目录)
  • 右键文件夹 → 属性 → 安全 → 添加SQL Agent服务账户(默认是NT SERVICE\SQLSERVERAGENT)
  • 为该账户分配读取和执行权限

3. 检查并修正模块路径

在作业脚本中先输出当前模块路径,确认新版模块所在目录已包含其中:

# 查看当前模块路径
$env:PSModulePath

如果路径未包含新版模块目录,手动添加:

$env:PSModulePath += ";C:\Path\To\Your\SqlServer\Module"

4. 弃用SQLSERVER: PSDrive

旧版SQLPS提供的SQLSERVER:驱动器在新版SqlServer模块中已被弃用,建议改用Invoke-SqlCmd等cmdlet替代路径导航操作,示例:

# 替代SQLSERVER:的数据库查询操作
Invoke-SqlCmd -ServerInstance "你的SQL实例名" -Query "SELECT name FROM sys.databases"

5. 验证模块安装完整性

以SQL Agent服务账户身份打开PowerShell,执行以下命令确认模块正常识别:

Get-Module -ListAvailable SqlServer

需确保输出中能看到22.2版本的模块信息,且文件无损坏。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:03