【问题标题】:Cannot execute SQL script using invoke-sqlcmd无法使用 invoke-sqlcmd 执行 SQL 脚本
【发布时间】:2020-09-11 14:00:12
【问题描述】:

我正在尝试使用 Invoke-SQLCmd powershell 命令自动执行 SQL 脚本。作为来源,我有一个由 SSDT Schema Compare 生成的脚本(4000 行,全部在事务内部)。我通过以下方式触发此脚本:

Invoke-SQLCmd -InputFile "$Path" -ServerInstance "$Server" -Database "$DbName" -ErrorAction "Stop" 

作为输出,我收到以下错误:

Invoke-SQLCmd : Could not allocate a new page for database 'TEMPDB' because of insufficient disk space in filegroup 'DEFAULT'. [...]

我知道这个问题可能与 testdb 磁盘上的可用空间不足有关,但有趣的是脚本在同一数据库上从 SQL Server Management Studio 执行时已成功完成。

问题是这怎么可能,我怎样才能让这个脚本在 PowerShell 中正常工作。

【问题讨论】:

    标签: sql-server powershell invoke-sqlcmd


    【解决方案1】:

    这个错误是由于Transaction log空间不足...

    您可以使用以下命令找出违规交易并处理它

    Dbcc opentran
    

    这也可能是由于您的脚本生成了大量事务日志而您没有足够的事务日志空间...如果是这种情况,您可能需要将您的命令分解为多个命令或增加您的 tlog空间

    【讨论】:

    • 没有未结交易。说到Transaction log空间不足——我想如果是问题的话,SSMS执行的脚本应该是失败的,但是成功完成了。我无法找到使用 SSMS 和 Invoke-SQLCmd 命令执行脚本之间的差异。
    • 没有区别,整个脚本应该执行一次,我确信这是一个 TLOG 问题
    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2017-08-03
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多