从.sql文件还原SQL Server数据库

时间:2013-02-17 21:51:19

标签: sql sql-server

所以我们有一个加密的数据库,可以扼杀我们的整个SQL Server设置。很糟糕我们的数据,但我们足够聪明,可以在Git中使用我们的数据结构/存储过程/函数

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

有没有办法可以从充满这些文件的目录中批量恢复我们的架构?

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

感谢Interwebs,

迪伦

2 个答案:

答案 0 :(得分:1)

考虑到我尝试恢复的数据结构的大小,单独运行每个文件并不是一个实际的解决方案。我敢肯定我可以写一个蝙蝠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()     

答案 1 :(得分:1)

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

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

如果您只有脚本,那么我会建议这样的事情。

  1. views
  2. 其他一切......
  3. 只需执行一个接一个的查询,直到出现错误。当您遇到错误时,这很可能是因为您尝试引用尚不存在的对象。只需保存该脚本以便以后继续执行脚本。然后再次从头开始并浏览导致错误的脚本。现在对象可能就在那里。根据需要多次重复此操作,直到创建所有对象。