在 TFS 2015 上无法识别导入模块 SQLPS



我正在将集成测试添加到我们的 CI 构建过程中。

我有一个数据库项目(通过 dacpac(部署到 TFS 服务器上的本地 Db 实例。 (工作(

下一步是将测试数据加载到数据库中。 我正在尝试导入SQLPS模块,然后运行Invoke-SqlCmd命令。

Import-Module 'SQLPS' -DisableNameChecking;
Invoke-Sqlcmd -InputFile "$localDirectoryproducts$branchUnitTestData.sql" -ServerInstance "(localdb)v12.0" -Database "[db]"

我不断收到无法识别 SQLPS 的错误。

TFS 服务器安装了 SQL Server 2012 - 但我使用的是 2014 对象。 我已经安装了 SQL 2014 功能包,以便 powertools 在服务器和构建代理上可用。

这似乎很常规 - 但我不确定我在这里哪里出错了。

搞清楚了。 Powershell不是我的强项之一,所以对于其他任何正在构建服务器上寻找SQL Server Powershell工具的人来说。

您需要在生成服务器上安装 SQL Server 功能包(如果未安装 SQL Server(。 该功能包适用于 2012 及更高版本。

您需要的具体项目是: SQL CLR 类型 SQL 共享管理对象 电源外壳工具

Powershell 工具将安装在 C:\Program Files\Microsoft SQL Server{version}\Tools\PowerShell\Modules 目录中。 其中 {版本: 110=2012, 120=2014, 130=2016}

使用 PS 工具的路径引用 - 您需要做的就是创建一个本地模块路径引用:

Param(
[Parameter(Mandatory=$True)][string]$server,
[Parameter(Mandatory=$True)][string]$database,
[Parameter(Mandatory=$True)][string]$sqlPowerToolsPath,
[Parameter(Mandatory=$True)][string]$sqlFile
)
$env:PSModulePath = $env:PSModulePath + ";$sqlPowerToolsPath"

我的PS脚本采用参数服务器,数据库,sqlPowerToolsPath,sqlFile,我将本地会话PSModulePath设置为在参数中包含路径。 在我的例子中,C:\Program Files\Microsoft SQL Server\120\Tools\PowerShell\Modules。

脚本的其余部分导入 SQLPS 模块并执行参数中指定的 SQL 文件:

Import-Module 'SQLPS' -DisableNameChecking;
$sql = [Io.File]::ReadAllText($sqlFile);
Invoke-Sqlcmd -Query $sql -ServerInstance "$server" -Database "$database"

最新更新