Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 从Powershell中的文件运行SQL脚本有哪些限制?_Sql Server 2008_Powershell_Scripting - Fatal编程技术网

Sql server 2008 从Powershell中的文件运行SQL脚本有哪些限制?

Sql server 2008 从Powershell中的文件运行SQL脚本有哪些限制?,sql-server-2008,powershell,scripting,Sql Server 2008,Powershell,Scripting,我有一个相当复杂的SQL脚本,它可以做以下几件事: 删除现有数据库 从备份中重新加载数据库 设置权限 其他一些杂项db特定任务 为了便于移动和使用,我已将其保存为.sql文件,但我希望将其合并到Powershell脚本中,以使其更易于运行(并封装一些需要在同一进程中完成的其他任务)。下面是我在Powershell中为脚本编写的代码: add-pssnapin sqlservercmdletsnapin100 invoke-sqlcmd -inputfile "D:\Scripts\loadd

我有一个相当复杂的SQL脚本,它可以做以下几件事:

  • 删除现有数据库
  • 从备份中重新加载数据库
  • 设置权限
  • 其他一些杂项db特定任务
为了便于移动和使用,我已将其保存为.sql文件,但我希望将其合并到Powershell脚本中,以使其更易于运行(并封装一些需要在同一进程中完成的其他任务)。下面是我在Powershell中为脚本编写的代码:

add-pssnapin sqlservercmdletsnapin100
invoke-sqlcmd -inputfile "D:\Scripts\loaddatabase31_Loadtest.sql" -serverinstance "PerfSQL02" -hostname "PerfSQL02"
假设serverinstance、inputfile和主机名存在并正确放入

我正在恢复的数据库是几百GB,因此实际的删除和恢复过程大约需要20分钟。现在,我在尝试运行该脚本时遇到以下错误(该脚本是从同一网络中但位于不同域的工作站上运行的):

我尝试在invoke-sqlcmd上使用-connectiontimeout开关,但这似乎无法解决此问题(因此连接时可能没有超时)。我看到的大多数通过Powershell运行SQL的示例都不使用文件,而是在脚本中定义SQL。我不希望这样做,因为运行所需的SQL非常复杂(而且因为它正在删除和恢复数据库,所以除非使用一个系统DBs,否则我无法将所有这些都打包到SP中)


有人知道是什么导致了超时吗?调用sqlcmd是否不能正常处理文件?

如果不需要-connectiontimeout,则可能需要-QueryTimeout


如果不需要-connectiontimeout,则可能需要-QueryTimeout


或者两者的结合,这取决于它的工作原理。是的,这正是它的工作原理。出于某种原因,我不认为查询超时了。。。谢谢或者两者的结合,这取决于它是如何运作的。是的,这就是它。出于某种原因,我不认为查询超时了。。。谢谢
invoke-sqlcmd : Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
At line:2 char:1