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

C# SQL Server SMO编程,在哪里设置CommandTimeout属性?,c#,sql-server,powershell,smo,C#,Sql Server,Powershell,Smo,我正在与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.S

我正在与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
用于
SqlCommand
。我使用SMO执行查询的方式没有
SqlCommand
对象。如您所见,我可以直接在
$server.Databases[“master”]
上执行


有人能帮我指出我应该在哪里设置
CommandTimeout
属性吗

$server.ConnectionContext.StatementTimeout
应该可以帮您完成这项工作。据此:

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


一些样式注释—尝试导入模块SQLPS—禁用名称检查,而不是使用PartialName内容加载所有反射。此外,如果最终要选择数据文件,请实际使用SMO模型:数据库有文件组,而文件组又有文件。数据库也有日志文件。但最终,您希望使用这些内容的对象表示,而不是试图解析临时查询的输出。我使用
等待延迟'00:00:05'
设置
$server.ConnectionContext.StatementTimeout
等于1导致其失败,但将其设置为6允许其成功;因此,该值以秒为单位。