【发布时间】:2021-11-22 11:07:40
【问题描述】:
您好,我正在努力编写一个 PowerShell 脚本来删除数据库,基于某些条件。我正在运行 SQL 脚本,但在将相同脚本转换为 PowerShell 时遇到太多语法错误
DECLARE @Sql as NVARCHAR(MAX) = (SELECT 'DROP DATABASE ['+ name + ']; ' FROM sys.databases WHERE name like '%Dev%'
and database_id < (SELECT max(database_id) FROM sys.databases where source_database_id IS NOT NULL and name like '%Dev%' )
FOR XML PATH('')) EXEC sys.sp_executesql @Sql
我是 PowerShell 脚本的新手,所以任何帮助都会很棒。 我尝试了类似下面的方法,但在 PowerShell 中出现语法错误
$query= 'DECLARE @Sql as NVARCHAR(MAX) = (SELECT 'DROP DATABASE ['+ name + ']; ' FROM sys.databases WHERE name like '%Dev%'
and database_id < (SELECT max(database_id) FROM sys.databases where source_database_id IS NOT NULL and name like '%Dev%' )
FOR XML PATH('')) EXEC sys.sp_executesql @Sql '
echo $query
Invoke-Sqlcmd -ServerInstance ''XXXX' -Username 'XX' -Password 'XXXXX' -Query $query -QueryTimeout 600 -Verbose
【问题讨论】:
-
“将其转换为 Powershell”是什么意思?
-
向我们展示您的 Powershell 脚本。有很多方法可以做到。
-
如果您的 T-SQL 脚本正在运行,也许您应该问一个不同的问题,如何从 PowerShell 执行它,而不是将其转换为 PowerShell。
-
@DanGuzman 是的,这就是我正在寻找如何在 Powershell 中执行的内容,您能帮忙吗?
-
在你的powershell中,你已经删除了动态语句中的一些单引号......这些语句不一样。例如,您的 powershell 中有
SELECT DROP DATABASE [ + name + ];,原始 SQL 中有SELECT 'DROP DATABASE ['+ name + ']; '。这看起来像是印刷错误,您实际上没有检查您的代码。
标签: sql-server powershell