我们最近开始使用Sql server 2012 SP3并使用powershell脚本构建SQL Server 2012。我们的自动化需要在db上运行多个数据库脚本,并且我发现Invoke-Sqlcmd非常可靠,直到发现此问题。 当我在最近安装了SQL服务器的系统上以powershell调试模式运行带有适当参数集的Invoke-sqlcmd时。我没有问题。 PowershellCommand:调用-SQLCMD -inputfile $ sStrJBSPExecRolePath -ServerInstance $ sStrSQLName -ErrorAction停止 但是,当我重新构建在同一台服务器我最终得到下面的错误Invoke-Sqlcmd'未被识别为cmdlet的名称
术语“后执行的powershell通过自动化脚本,同样的查询Invoke-Sqlcmd'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
我做研究网上很多建议导入SQLPS等这样的测试我在下面的脚本添加
得到-pssnapin - 注册 导入模块“SQLPS” -DisableNameChecking
即使在脚本中添加了以上内容。我仍然以相同的错误结束。但是当我手动运行相同的脚本时,它运行得非常好。我不明白什么是错的。 powershell自动化脚本 - 此脚本安装.Net Framework 3.5,SQL Server 2012,SQL Server 2012 SP3,然后加载用于更改SQL设置(例如SQL的最大内存限制)的smo程序集。
考虑发布您的脚本。你是否可以在失败时将其作为本地系统运行? –
是的SQL服务器服务正在本地系统下运行。但是当我在调试模式下手动运行powershell时,它运行时没有任何问题。 sure 我可以把脚本的一部分 $ sStrSQLName = $ env:COMPUTERNAME $ sStrSPWIAFilePath =“D:\ _ ISD \ Installs \ Scripts \ SQL_Install \ SQL Scripts \ sp_WhoIsActive。SQL” 调用-SQLCMD -inputfile $ sStrSPWIAFilePath -ServerInstance $ sStrSQLName -ErrorAction停止 – Gau
你运行该脚本的自动化过程的一部分,那就是当你看到失败?你的用户配置文件可能不相同的用户配置文件是当你看到失败所使用。你能使用RUNAS或PSEXEC您的脚本未能启动在用户的上下文中的会话。或者,可以在运行过程中的使用您的凭据,如果你的作品。 –