SQL群集上的Invoke-SQLCMD失败

时间:2016-04-07 16:03:33

标签: sql-server powershell

我正在尝试在SQL Server群集上使用invoke-sqlcmd,但它无法执行并产生以下错误:

  

invoke-sqlcmd:发生了与网络相关或特定于实例的错误   同时建立与SQL Server的连接。服务器不是   发现或无法访问。验证实例名称是否正确   并且SQL Server配置为允许远程连接。   (提供者:命名管道提供者,错误:40 - 无法打开   连接到SQL Server)   C:\ RS-PKGS \ SitecoreDeployScripts \ SitecoreDatabasesDeploy.ps1:128   焦炭:1   + invoke-sqlcmd -InputFile $ inputFilePath   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(:) [Invoke-Sqlcmd],SqlException       + FullyQualifiedErrorId:SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

我能够在未集群的开发SQL Box上成功执行我的脚本。以下是SQL调用的示例:

$scriptPath = "C:\"
$scriptName = "MyScript.sql"
$inputFilePath = "{0}\{1}" -f $scriptPath,$scriptName
invoke-sqlcmd -InputFile $inputFilePath 

所以问题是这是一个群集问题还是一个不允许远程连接的安全问题?如何从PowerShell执行SQL脚本(如果我在SSMS中打开它们并按下执行,则执行正确)。

1 个答案:

答案 0 :(得分:0)

然后,脚本只需要-ServerInstance的服务器实例名称开关,如下所示:

$scriptPath = "C:\"
$scriptName = "MyScript.sql"
$inputFilePath = "{0}\{1}" -f $scriptPath,$scriptName
invoke-sqlcmd -InputFile $inputFilePath -ServerInstance 'MyClusterName"

我通过运行以下查询来找到名称:

select @@servername

它在没有-ServerInstance开关的单个盒子上工作,因为它是本地化/单个