4

VSTS Database Edition GDR バージョン 9.1.31024.02 を使用しています

顧客がシステムに追加されると、その場で同じスキーマを持つ複数のデータベースを作成するプロジェクトがあります。顧客ごとに 1 つの DB です。これを行うには、展開スクリプトを使用できるはずだと思いました。残念ながら、私は常に CREATE DATABASE ステートメントで指定された完全なファイル名を取得します。例えば:

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName.mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)targetDBName_log.ldf')
GO

私はこのようなもっと何かを期待していた

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)$(DatabaseName).mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)$(DatabaseName)_log.ldf')
GO

あるいは

CREATE DATABASE [$(DatabaseName)]

私はこれを継続的に実行するつもりはないので、次の人のためにできるだけ簡単にしたいと思います. プロジェクトのプロパティにはデプロイのオプションがたくさんありますが、思い通りに動作させることができません。

これを設定する方法を知っている人はいますか?

4

3 に答える 3

4

遅ればせながら、$(DefaultDataPath)$(DatabaseName)2 番目の例からファイル名を取得する方法を知っています。

最初のコード スニペットに表示されている SQL は、VSTS:DB プロジェクトにデータベース ファイルを作成するためのスクリプトがないことを示唆しています。おそらく、実行したスキーマ比較から故意にスクリプトを除外したためです。少し直感に反することがわかりましたが、解決策は、開発環境で VSTS:DB に MDF と LDF のスクリプトを作成させ、それらのスクリプトを編集して SQLCMD 変数を使用することです。

データベース プロジェクトで、フォルダーSchema Objects > Database Level Objects > Storage > Filesに移動します。そこに、次の 2 つのファイルを追加します。

データベース.sqlfile.sql

ALTER DATABASE [$(DatabaseName)]
ADD FILE (NAME = [$(DatabaseName)], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf',
    SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB) 
    TO FILEGROUP [PRIMARY];

Database_log.sqlfile.sql

ALTER DATABASE [$(DatabaseName)]
    ADD LOG FILE (NAME = [$(DatabaseName)_log], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf', 
    SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %);

VSTS:DB または VSDBCMD.exe が生成する完全なデータベース作成スクリプトは、MDF および LDF ファイルの名前付けに SQLCMD 変数を使用するようになり、コマンド ラインまたは MSBuild で指定できるようになりました。

于 2009-11-06T21:48:20.857 に答える
1

これは、新しい顧客がオンラインになったときにバックアップ、コピー、および復元するテンプレート データベースを使用して行います。スクリプトを使用してスキーマを作成するのではなく、ライブの空の DB を使用します。

于 2009-01-21T02:54:37.770 に答える
0

うーん、まあ、これまでのところ最良の答えは (圧倒的な反応を考えると) 事後にファイルを編集することのようです... まだ探しています

于 2008-12-08T23:39:33.833 に答える