所以我们有一个加密的数据库,可以扼杀我们的整个SQL Server设置。很糟糕我们的数据,但我们足够聪明,可以在Git中使用我们的数据结构/存储过程/函数
问题是它们被保存为.sql
个文件。
有没有办法可以从充满这些文件的目录中批量恢复我们的架构?
我环顾四周,我只能找到从.bak
文件或.mdf
恢复的教程。这不是懒人的出路 - 我只需要尽快找到解决方案。任何建议或资源/任何内容都将不胜感激。
感谢Interwebs,
迪伦
答案 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)
如果您的数据库很大/很复杂,那么您将遇到的实际问题不是批处理执行,而是应该执行脚本的顺序。
除非你有一些备份文件,否则这将成为真正的问题。
如果您只有脚本,那么我会建议这样的事情。
只需执行一个接一个的查询,直到出现错误。当您遇到错误时,这很可能是因为您尝试引用尚不存在的对象。只需保存该脚本以便以后继续执行脚本。然后再次从头开始并浏览导致错误的脚本。现在对象可能就在那里。根据需要多次重复此操作,直到创建所有对象。