2

実際、次のクエリはもともと私のものではありませんが、仕事で正確な問題に直面しています。したがって、問題文をそのままコピーします。私は解決策を見つけることができません。次の問題セットの提案やハイライトをいただければ幸いです。

データベースとログ ファイルの両方で、Schema Objects\Database Level Objects\Storage\Files にハードコーディングはありません。

db プロジェクトから [デプロイ] をクリックすると生成されるデプロイ スクリプトには、$(DefaultDataPath) および $(DefaultLogPath) に割り当てられたデータベースとログ ファイルのパスを含む :SETVAR がハードコーディングされています - 以下を参照してください: :setvar DefaultDataPath "C:\DB\ Microsoft SQL Server\MSSQL10_50.MITCHELL\MSSQL\DATA\" :setvar DefaultLogPath "C:\DB\Microsoft SQL Server\MSSQL10_50.MITCHELL\MSSQL\DATA\".

デプロイ スクリプトがデータとログ パスの入力を受け入れるようにします。ただし、現在生成されているスクリプトに基づいて、上記の 2 行を手動でコメントし、以下に示すように CREATE DATABASE ステートメントを毎回変更して、「DefaultDataPath」および「DefaultLogPath」への参照を「InputDefaultDataPath」に置き換える必要があります。 "InputDefaultLogPath" CREATE DATABASE [$(DatabaseName)] ON PRIMARY(NAME = [TEST_DB], FILENAME = '$(InputDefaultDataPath)$(DatabaseName).mdf', >SIZE = 3072 KB, FILEGROWTH = 1024 KB) ログオン (NAME = [TEST_DB_log], FILENAME = >'$(InputDefaultLogPath)$(DatabaseName)_log.ldf', SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %) COLLATE SQL_Latin1_General_CP1_CI_AS

 Question 1: How do I prevent db project from scripting the below two lines and also 

CREATE DATABASE ステートメントでこれらの変数を代入できないようにしますか? :setvar DefaultDataPath "C:\DB\Microsoft SQL Server\MSSQL10_50.MITCHELL\MSSQL\DATA\" :setvar DefaultLogPath "C:\DB\Microsoft SQL Server\MSSQL10_50.MITCELL\MSSQL\DATA\".

質問 2: $(InputDefaultDataPath) および $(InputDefaultLogPath) 変数を含めるように手動で変更しなくても、DefaultDataPath および DefaultLogPath のユーザー入力を受け入れるように、db プロジェクトを自動的にスクリプト展開スクリプトに作成するにはどうすればよいですか?

4

1 に答える 1

3

Visual Studio 2010 には、「CommentOutSetVarDeclarations」というプロジェクト設定があります。このオプションをオンにすると、指定した 2 つのデフォルトの SETVAR 行がコメント アウトされます。

これにより、SQLCMD から配置スクリプトを実行するときに、コマンド ラインから $(DefaultDataPath) および $(DefaultLogPath) の値を指定できます。

于 2013-10-30T14:01:58.500 に答える