19

別のサーバーで実行できるデータベース用のスクリプトを生成し、元のデータベースと同一のデータベースを取得する必要がありますが、データはありません。要するに、データベース スキーマを取得する大きな作成スクリプトを作成したいと考えています。

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

助言がありますか?単純な .exe (インストール不要) ツール、ヒント、または T-SQL トリックを教えていただければ幸いです。

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

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

4

10 に答える 10

12

SQL Server Management Studio を実行し、データベースを右クリックして選択します。Script Database as > Create to > file

これは SQL Server 2005 の場合です。SQL Server 2000 Enterprise Manager にも同様のコマンドがあります。データベースを右クリックするだけ> All Tasks > Generate Scriptsです。

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

于 2008-10-03T22:24:56.147 に答える
9

したがって、SQL Server Management Studio をインストールできないと仮定します。無料版でも構いません。これが 1 回限りのことであれば、レッド ゲート ツールをインストールします。試用版は 14 日間完全に機能します。作業を行ってから、アンインストールしてください。http://www.xsqlsoftware.com/もチェックしてください。Red Gate と同様の機能があります。データベースが小さい場合は、無料のオプションがあります。http://www.apexsql.com/も好きです。これらのいずれかの試用版を使用してから、もう一度試して、上司に購入するよう説得してください.

于 2008-10-07T19:33:45.180 に答える
6

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

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

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

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

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

「設計」をデータベースから除外するだけです。これは純粋に「実装」のためのものです。

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

于 2008-10-09T15:33:34.633 に答える
2

それが 1 回限りの操作であり、オブジェクト スクリプトを自分で注文したくない場合は、RedGate SQL Compare の無料試用版をダウンロードしてください

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

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

于 2008-10-09T20:48:39.507 に答える
2

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

過去に SQL Server 2000 に対して使用したことがあります。明らかに、テーブルに 100 万行ある場合、内容をスクリプト化するのは得策ではないかもしれませんが、データベースを複製するための一連の SQL スクリプトを実際に作成するには、非常に優れたツールです。

于 2008-10-07T20:33:41.830 に答える
1

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

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

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

したがって、tableAで更新を行うときはいつでも、ソース管理でそれをチェックアウトして、作業中であることを他の人に知らせることができます。終了後、その単一のオブジェクトをスクリプト化して保存してチェックインできます。

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

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

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

最終的に、「osql」を呼び出して各オブジェクトを個別に作成するバッチファイルを作成しました。

そして、それはすべてその時にかなりうまくいきました

現在、 SQLCompare Proを使用しており、面倒な作業から保護されていますが、リリースを頻繁に行わない場合は、SQLCompareProなしで生活できます。

于 2008-10-09T17:40:03.910 に答える
1

コマンドラインバージョンをお探しの場合は、SQL ServerHostingToolkitが過去に機能してきました。

于 2008-10-06T18:35:52.613 に答える
1

Microsoft データベース公開ウィザード (Visual Studio 2008)。

于 2008-10-07T20:40:44.313 に答える
1

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

于 2008-10-06T18:27:55.873 に答える
0

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

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

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

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

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

于 2008-10-03T22:39:01.393 に答える