0

Pre-Deploymentスクリプト(Script.PreDeployment.sql)は、サーバーレベルのオブジェクト(特に私の場合はログイン)を作成するSQLコマンドを配置するのに最適な場所ですか?

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

どうもありがとう。

4

1 に答える 1

3

データベースをデプロイする前に必要なものはすべて、そのスクリプトに含まれます。

この例では、展開後のスクリプトにログインを追加します。データベースを展開するときにこれらは必要ないため、セキュリティ関連のすべてのコマンドを同じ場所に配置することにしました。

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

これは、展開前と展開後のリファレンスです。

于 2011-06-17T13:35:19.087 に答える