我们有一个用于测试机器的 PowerShell 清理脚本:
$sqlConnection = new-object system.data.SqlClient.SqlConnection("Data Source=.\SQLExpress;Integrated Security=SSPI;Initial Catalog=master")
try {
$sqlConnection.Open()
$commandText = @"
exec sp_msforeachdb 'IF ''?'' NOT IN (''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
drop database [?]
END'
"@
$sqlCommand = New-Object System.Data.SqlClient.SqlCommand
$sqlCommand.CommandText = $commandText
$sqlCommand.Connection = $sqlConnection
$SQLCommand.CommandTimeout = 0
$sqlCommand.ExecuteNonQuery()
}
finally{
$sqlConnection.Close()
}
通常它可以工作,但有时它无法删除数据库,因为似乎有一些打开的连接并且构建任务无法删除正在使用的数据库。
这似乎也发生在“某个时候”或“随机”。
有什么建议可以增强脚本吗?
(使用最新的 TFS 2017 on prem 和 SQL Server 2014)