使用する発行プロファイルまたは sqlcmd 変数に基づいてデータベース オブジェクトを変更する方法を見つけようとしています。具体的には、データベース プロジェクトをサーバー A と B に展開するとします。サーバー AI ではストアド プロシージャの 1 つのバージョンが必要であり、サーバー BI では別のバージョンのストアド プロシージャが必要です。依存関係の理由から、ストアド プロシージャは両方のサーバーで同じ名前にする必要があります。配置後スクリプトと動的 SQL を使用してこれを行う方法を知っています。より良い選択肢を探しています。
1 に答える
0
それが質問のスターターにとって実際のものであるかどうかはわかりませんが、誰かの助けになるかもしれません. 次のことができます。
$(DeployType) などの変数を作成し、すべての発行構成で一意の値に設定します
次のコードでデータベースを変更します。
.
CREATE PROCEDURE p_test
AS
BEGIN
IF '$(DeployType)' = 'Production'
BEGIN
/*Your code for production database*/
END
IF '$(DeployType)' = 'Dev'
BEGIN
/*Your code for devdatabase*/
END
END
その場合、それはまさにあなたが望むものであるはずです。ビュー/関数を使用すると、次のようなことができます。
CREATE VIEW v_test AS
SELECT 1
FROM table
WHERE '$(DeployType)' = 'Production'
UNION ALL
SELECT 1
FROM table2
WHERE '$(DeployType)' = 'Dev'
オプティマイザーが WHERE 条件をチェックし、ユニオンの 1 つの部分が常に NULL であることを確認して実行しないため、パフォーマンスが低下することは想定されていません。
于 2015-03-12T13:00:12.647 に答える