SQL Server SMO 编程,在其中设置 CommandTimeout 属性

本文关键字:设置 CommandTimeout 属性 在其中 Server SMO 编程 SQL | 更新日期: 2023-09-27 18:34:51

我正在使用SMO编写PowerShell脚本来执行一些SQL Server编程。下面列出了我的脚本的简化版本。

# 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属性。

但是,该物业CommandTimeout适用于SqlCommand。我使用 SMO 执行查询的方式没有SqlCommand对象。如您所见,我可以直接在$server.Databases["master"]上执行。

谁能帮助指出我应该在哪里设置 CommandTimeout 属性?

SQL Server SMO 编程,在其中设置 CommandTimeout 属性

$server.ConnectionContext.StatementTimeout应该为您完成工作。根据 TechNet,这:

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