3

そのため、SQLServerのセットアップ全体を実行して強制終了する暗号化されたデータベースがありました。私たちのデータについてはうんざりしますが、Gitにデータ構造/ストアドプロシージャ/関数を含めるのに十分賢いです

問題は、それらが.sqlファイルとして保存されることです。

これらのファイルでいっぱいのディレクトリからスキーマをバッチ復元する方法はありますか?

私は周りを見回しましたが、.bakファイルまたはから復元するためのチュートリアルしか見つかりません.mdf。これは怠惰な人の道ではありません-私はただできるだけ早く解決策を見つける必要があります。アドバイスやリソース/何かをいただければ幸いです。

Interwebsに感謝します。

ディラン

4

2 に答える 2

2

復元しようとしたデータ構造のサイズが大きいことを考えると、各ファイルを個別に実行することは実用的な解決策ではありませんでした。私はコウモリの仲間を書くことができたと確信していますが、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. ビュー
  3. ほかのすべて...

エラーが発生するまで、クエリを次々に実行するだけです。エラーが発生した場合、これはおそらく、まだ存在していないオブジェクトを参照しようとしていることが原因です。後で使用するためにそのスクリプトを保存して、スクリプトの実行を続行してください。次に、最初からやり直して、エラーの原因となったスクリプトを確認します。今、オブジェクトはおそらくそこにあります。すべてのオブジェクトを作成するまで、これを必要な回数繰り返します。

于 2013-02-18T16:34:49.707 に答える