gpt4 book ai didi

sql - 使用 sql-command cmdlet 和 restore cmdlet 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 23:46:54 25 4
gpt4 key购买 nike

我正在考虑使用 Powershell 脚本在我的 SQL Server 2008 实例上自动执行还原过程,我发现有两种不同的方法:

  • 使用 invoke-sqlcmd cmdlet
  • 加载 Microsoft.SqlServer.Management.Smo.Restore 并使用其中的重点恢复方法

  • 我已通读 TechNet 文档,但我认为我的问题可能过于基本,无法在其中涵盖。使用如下所示的简单代码,并且将是静态的(可能会迭代备份的名称以与其拍摄日期一致):
    RESTORE DATABASE Loadtest
    FROM DISK = 'D:\databases\LoadTest_09_09_2013.bak'
    WITH REPLACE
    GO

    为什么我要使用除了简单的invoke-sqlcmd 之外的任何东西?使用直接还原类,脚本似乎最终会变得更加复杂。使用还原是否可以获得任何类型的性能提升?

    请注意,我确实在此工作站上安装了 SQL Management Studio,并且完整的 powershell 脚本最终将进行一些其他测试环境维护(清除缓存等)。

    最佳答案

    Invoke-SqlCmd 是一个可怕的 hack。

  • 如果要从文本文件运行命令,该文件路径不能有空格
  • 如果发生不好的事情,您只会收到一条模糊的短信。
  • 它实际上要求运行 sqlcmd 可执行文件,创建另一个级别的间接
  • 完全不支持 GO(批处理)

  • SMO 优势:
  • 错误在带​​有 Exception/InnerException 链的完整 ErrorRecord 中返回,因此您可以实际诊断
  • 它 native 使用 Powershell 对象,因此您不只是扔掉可能需要转义或不需要转义的字符串
  • SQL命令可以直接使用原生对象执行,调试和错误恢复更丰富
  • 关于sql - 使用 sql-command cmdlet 和 restore cmdlet 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704451/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com