【问题标题】:How to execute below T-SQL script into PowerShell如何在 PowerShell 中执行以下 T-SQL 脚本
【发布时间】: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


【解决方案1】:

我只是把所有东西都放在“”中,它就起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    相关资源
    最近更新 更多