3

私は視覚スタジオデータベースプロジェクトを使用して、Webサイトのデータベースの変更管理を行っています。 aspnet_regsqlツールで作成したメンバーシップ/ロールモデルを使用して、Webサイトへのアクセスを管理したいと考えています。Visual Studioデータベースプロジェクトとaspnet_regsql.exe

これまで、データベースを展開する前にaspnet_regsqlを実行して、データベースプロジェクトがWebサイトの特定のテーブルをデータベースにマージするようにしました。私はデータベースプロジェクトにaspnet_テーブルを含める方法を検討してきましたが、これを行う方法を理解することはできません。

これを試したことがありますか?このようにしないとよい理由はありますか?

答えて

2

ええ、私はこれをしました。それを研究するにあたり、私は彼らがそれをお勧めしないところで、Pro ASP.Net 4.0を見ました。それは、スクリプトの実装がフレームワークのバージョンによって異なる可能性があるということです。それは良いアドバイスかもしれない...またはそれは過激かもしれません。

私はRedGate Compareを使用し終えた時点で構造とデータを比較しましたが、結果と異なるものは見つかりませんでした...したがって、正常に動作すると思います... YMMV。

これを行うには、新しいデータベースを作成し、aspnet_regsqlを実行しました。 VS2010で新しいデータベースプロジェクトを作成し、そのデータベースをインポートしました。新しいプロジェクトのスキーマオブジェクトディレクトリにあるすべてのファイルをコピーして、既存のデータベースプロジェクトのスキーマオブジェクトディレクトリにドロップしました。私は古いプロジェクトを開き、プロジェクトメニューからすべてのファイルを表示してから、すべての新しいファイルをプロジェクトに含めました。

また、新しいプロジェクトのDatabase.sqlpermissionsファイルからすべてのデータベースアクセス許可をコピーする必要があります。

最後に、これを展開後のスクリプトに追加する必要があります。

-- Add 6 rows to [dbo].[aspnet_SchemaVersions] 
IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'common') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'common', N'1', 1) 
    END 

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'health monitoring') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'health monitoring', N'1', 1) 
    END 

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'membership') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'membership', N'1', 1) 
    END 

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'personalization') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'personalization', N'1', 1) 
    END 

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'profile') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'profile', N'1', 1) 
    END 

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'role manager') AND [CompatibleSchemaVersion] = N'1') 
    BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'role manager', N'1', 1) 
    END 
関連する問題