3

所以我们有一个加密的数据库,它吐出并杀死了我们的整个 SQL Server 设置。糟透了我们的数据,但我们足够聪明,可以在 Git 中拥有我们的数据结构/存储过程/函数

问题是它们被保存为.sql文件。

有什么方法可以从充满这些文件的目录中批量恢复我们的模式?

我环顾四周,只能找到从.bak文件或.mdf's 恢复的教程。这不是懒人的出路——我只需要尽快找到解决方案。任何建议或资源/任何东西都将不胜感激。

感谢互联网,

迪伦

4

2 回答 2

2

考虑到我尝试恢复的数据结构很大,单独运行每个文件并不是一个实际的解决方案。我敢肯定我可以写一个 bat fie,但我在 python 中很快就完成了:

import os, subprocess
processDir = 'C:\\Database-master\\'
files = os.listdir(processDir)
for f in files:
    db = processDir + f
    #potentially drop corrupt db and create new ones with f
    scripts = os.listdir(db)
    for script in scripts:
        path = db + '\\' + script
        proc = subprocess.Popen('sqlcmd -S 127.0.0.1 -i "' + path +'"', shell=True)
        proc.wait()     
于 2013-02-18T00:35:49.887 回答
1

如果您的数据库很大/很复杂,那么您将遇到的真正问题不是批处理执行,而是应该执行脚本的顺序。

除非您有一些备份文件,否则这将是真正的问题。

如果您只有脚本,那么我建议您这样做。

  1. 意见
  2. 其他一切...

只需执行一个又一个查询,直到出现错误。当您确实遇到错误时,这很可能是因为您试图引用尚不存在的对象。只需保存该脚本以供以后使用并继续执行脚本。然后重新从头开始,检查导致错误的脚本。现在对象可能在那里。根据需要重复此操作多次,直到创建所有对象。

于 2013-02-18T16:34:49.707 回答