“貧しい人の”はありますかデータベーススキーマ全体をスクリプト化するためのRedGateの代替手段[閉まっている]

StackOverflow https://stackoverflow.com/questions/169107

質問

別のサーバーで実行できるデータベース用のスクリプトを生成し、元のデータベースと同じデータベースを取得しますが、データは一切ありません。本質的に、データベーススキーマをキャプチャする大きな作成スクリプトが必要です。

SQL Server 2000がインストールされている環境で作業していますが、2005クライアントツールをインストールできません(それらが役立つ場合)。 RedGateを購入する余裕はありませんが、別のサーバーに同じスキーマを持つデータベースが本当に欲しいです。

提案はありますか?シンプルな.exe(インストール不要)ツール、ヒント、またはT-SQLのトリックは大歓迎です。

更新:作業しているデータベースには200以上のテーブルといくつかの外部キーの関係と制約があるため、各テーブルを手動でスクリプト化し、スクリプトを貼り付けることは実行可能なオプションではありません。この手動ソリューションよりも優れたものを探しています

追加更新何かが完全に欠けている場合を除き、これはSQL 2000ツールを使用した実行可能なソリューションではありません。データベースで作成スクリプトを生成するオプションを選択すると。最終的に、CREATE DATABASEコマンドを含むスクリプトが作成され、テーブル、制約などのオブジェクトは作成されません。SQL2005のManagement Studioでもオブジェクトを処理できますが、データベースはない環境にありますManagement Studioのインストールをそれに接続する方法。

役に立ちましたか?

解決

SQL Server Management Studioを実行し、データベースを右クリックして、 Script Database as>を選択します。に作成>ファイル

これはSQL Server 2005用です。SQLServer 2000 Enterprise Managerにも同様のコマンドがあります。データベース>を右クリックします。すべてのタスク>スクリプトを生成します

編集:SQL Server 2005では、「データベース」を選択できます。オブジェクトエクスプローラーペインで、詳細ペインで複数のデータベースを選択します。次に、選択したものを右クリックし、>スクリプトデータベース>に作成>ファイル"。これにより、すべてが1つのスクリプトに入れられ、すべてのテーブル、キー、ストアドプロシージャ、および制約が含まれます。

他のヒント

したがって、SQL Server Management Studioをインストールできないと想定しています。無料版でもありません。これが1回限りの場合は、赤いゲートツールをインストールします。試用版は14日間完全に機能します。作業を行ってから、アンインストールします。また、 http://www.xsqlsoftware.com/ も確認できます。これらはRed Gateと同様の機能を備えています。データベースが小さい場合は、無料のオプションがあります。 http://www.apexsql.com/ も気に入っています。 これらのいずれかの試用版を使用してから、もう一度上司に購入してもらいます。

上記の回答に加えて、(少なくとも将来のプロジェクトでは)データベース自体のデータベースデザインをマスターしていないことをお勧めします。

これを実現する1つの方法は、データベーステーブル、プロシージャなどを「CREATE」スクリプトとして初日から単純に維持し、選択したデータベースにデプロイするために個々のスクリプトをすべてまとめるマスタースクリプトを考案することです。 。

より洗練されたソリューションは、Visual Studio Database Editionのようなものを使用することです(コメントがあまりにも高価な場合は、おそらく非常に高価です)。これにより、各データベースオブジェクトをプロジェクトのノードとして扱いながら、全体を数回クリックするだけでデプロイできます。

これらのオプションの両方の説明は、バージョン管理、データ移行など他の多くの問題があるため、単純化されていますが、主な原則は同じです。

スクリプトを抽出したら(他の回答の1つを使用して)、このスクリプトを「マスター」の基礎として使用することを検討できます。

「デザイン」をデータベースに入れないでください-これは純粋に「実装」のためです。

コードの開発と同様にプロセスを考えてみてください-ソースとバイナリは別々に保たれ、後者は前者から生成されます。

CodeProjectのこのプログラムをこれまで何度も使用しました。スキーマをスクリプト化するだけでなく、データベースの再作成に必要なすべてのINSERTステートメントを(オプションで)スクリプト化できます。

過去にSQL Server 2000に対して使用しました。テーブルに100万行ある場合、コンテンツをスクリプト化することはお勧めできませんが、データベースを複製するための一連のSQLスクリプトを実際に作成するのは実際には素晴らしいツールです。

1回限りの操作であり、オブジェクトスクリプトの順序を自分で変更したくない場合は、単に RedGate SQL Compareの無料試用版をダウンロード

14日間の完全な動作バージョンであるため、すべての作業が自動的に行われます–これは完全に正当なソリューションです。また、手動スクリプトで将来使用するためのすべてのスクリプトが用意されます。とにかく、このツールがどれほど便利かを知ると、後の段階でそれを購入することになると確信しています。私の場合、どういうわけかそのように機能しました。

トライアルの有効期限が切れると、すべてのツールに影響することに注意してください。最大限に活用してください。

Michael Lang、データベースを右クリックしてスクリプトの作成を選択すると、すべてを生成するためにクリックする必要があるオプションボックスがいくつかあります。この点では2005年の方がはるかに簡単ですが、2000年でもこれを行うことができます。適切なオプションを選択するだけです。

コマンドラインバージョンを探している場合は、 Sql Server Hosting Toolkit は過去に私のために機能しました。

Microsoft Database Publishing Wizard(Visual Studio 2008)。

SQL Server 2000 で述べたように、使用するコマンドは次のとおりです。

Enterprise Manager で、オブジェクトのスクリプトを作成するデータベースを選択し、右クリックして[すべてのタスク->]を選択します。 SQLスクリプトの生成...

[オプション]ペインで、[オブジェクトごとに1つのファイルを作成]オプションを選択すると、各オブジェクトをソース管理に個別に保存できます。

したがって、テーブルAで更新を行うたびに、ソース管理でチェックアウトして他の人が作業していることを他の人に知らせることができ、終了後にその単一のオブジェクトのスクリプトを作成して保存することができます。

単一のオブジェクトをスクリプト化するには、同じオプションを使用できますすべてのタスク-> SQLスクリプトを生成... し、その1つのオブジェクトのみを選択します。

このアプローチの唯一の問題は、データベース全体を復元する場合、依存オブジェクトの前に最上位レベルのオブジェクトを復元する必要があるという意味で、依存オブジェクトを処理する必要がある場合です。

皮肉なことに、データベース全体を1つのファイルにスクリプト化すると、オブジェクトは依存関係ではなく、作成日に基づいて順序付けられます。これを使用して完全なDBを復元しようとすると、エラーが発生します。

" osql"を呼び出して各オブジェクトを個別に作成するバッチファイルを作成しました

そして、その時点ではすべてがうまく機能していました

SQLCompare Pro を使用すると、面倒ですが、頻繁にリリースしなければ、それなしで生きることができます。

その他は正しいですが、完全なデータベースをゼロから作成するには、テーブルとプロシージャスクリプトの作成を実行する前にSQLで「デバイス」を作成する必要があります...

ADODBを使用します。これは、スクリプトを実行するためにほぼすべてのWindowsボックス(すべてではないにしても)がインストールされているためです。

地獄、データベース全体を構築するために実行するvbScriptを書くことさえできます。ドメインテーブルがある場合は、DBにアイテムを追加する前に、ID挿入をオンにすることを忘れないでください。

必要に応じて、ソースコードの共有を受け付けています。数年前とまったく同じことを書かなければならず、3つのスクリプトが作成されました。1つはデバイスを作成し、次にテーブル、次にプロシージャ/トリガー、ドメインデータを作成しました。デフォルトのスクリプトを解析し、ユーザーが自分のデータベースに名前を付けたり、ログインしたりできるようにするコードを書きました。そこまで行く必要はないかもしれません。

これがまったく役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top