Visual Studio 2010データベースプロジェクトのスクリプトサーバーオブジェクト

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

質問

展開前のスクリプト(script.predeployment.sql)は、サーバーレベルのオブジェクトを作成するSQLコマンド(私の場合は特にログイン)を作成するのに最適な場所ですか?

プロジェクト内のデータベースユーザー向けのサーバーログインを作成する必要があります。これは、プロジェクト構造(開発DBの逆転から作成された)の他のすべてをデータベース固有のものとして配置するための唯一の漠然と論理的な場所のようです。したがって、Visual Studioデータベースプロジェクトを操作する際に、他の人がサーバーレベルのコマンドを保存する場所を確認したかっただけです。

どうもありがとう。

役に立ちましたか?

解決

データベースを展開する前に必要なものはすべて、そのスクリプトにあります。

この場合、ポスト展開スクリプトにログインを追加します。データベースを展開する際には必要ありません。すべてのセキュリティ関連コマンドを同じ場所に配置することにしました。

IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE LOGIN [$(DefaultLogin)] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$(DefaultLogin)')
BEGIN
    BEGIN TRY
        CREATE USER [$(DefaultLogin)] FOR LOGIN [$(DefaultLogin)] WITH DEFAULT_SCHEMA=[dbo]
        -- The db_owner role is added to the current database.
        EXEC sp_addrolemember N'db_owner', N'$(DefaultLogin)'
    END TRY
    BEGIN CATCH
        -- A try-catch is needed in case a user with a different name is created for the LOGIN specified.
    END CATCH
END

ここ 展開前および展開後のリファレンスです。

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