我有一个包含一些表和触发器的SQL Server数据库,该触发器将在ServerA上创建FolderA或在ServerB上创建FolderB,这是我在ServerA的触发器中传递的命令:
SET @folder = 'powershell.exe invoke-command -computername ServerA { powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\FolderScript\FolderA.ps1 "' +@folderName+'" }'
EXEC master.dbo.xp_cmdshell @folder
我有一个间歇性问题,它可以正常工作几天才能停止,然后我必须从ServerA上的PS手动运行它。
因为它是间歇性的,所以我们可以排除防火墙,权限,PowerShell启用远程。我有一个基于Web的应用程序(asp.net),用户可以在自己的计算机上运行该应用程序,并将其连接到触发器所在的SQL Server数据库。
是否存在一些需要保持打开状态的会话以防止访问被拒绝的错误?我想不出其他任何可能导致此问题的原因?
答案 0 :(得分:0)
我怀疑问题出在您的命令中:
<p>
这应该足以解决您的问题。您无需重复调用SET @folder = 'powershell.exe -Command "Invoke-Command -ComputerName ServerA { & ''C:\FolderScript\FolderA.ps1'' ' + @folderName + ' }"'
,因为您可以使用调用运算符(powershell.exe
)本机调用脚本。