SQL Server SMO编程,在哪里设置CommandTimeout属性?

时间:2016-02-17 04:07:37

标签: c# sql-server powershell smo

我正在使用SMO编写PowerShell脚本来执行一些SQL Server编程。我的脚本的简化版本如下所示。

pip install oauth2client==1.5.2

我的脚本现在总是超时,我在网上搜索,发现我应该在我的代码中的某处设置CommandTimeout property

但是,# Load SMO assembly, and if we're running SQL Server 2008 DLLs load the SMOExtended and SQLWMIManagement libraries $v = [System.Reflection.Assembly]::LoadWithPartialName( "Microsoft.SqlServer.SMO"); if ((($v.FullName.Split(','))[1].Split('='))[1].Split('.')[0] -ne '9') { [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMOExtended") | out-null; } [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SmoEnum') | out-null; $server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") ".\sql2014"; $server.Databases["master"].ExecuteWithResults("select * from sys.database_files"); 属性适用于CommandTimeout。我使用SMO执行查询的方式没有SqlCommand对象。如您所见,我可以直接在SqlCommand上执行。

任何人都可以帮忙指出我应该在哪里设置$server.Databases["master"]属性吗?

1 个答案:

答案 0 :(得分:2)

$server.ConnectionContext.StatementTimeout应该为你完成工作。根据{{​​3}}这个:

  

获取或设置在失败并超时之前运行语句的秒数。