3

私はビジュアル スタジオ データベース プロジェクトを使用して、Web サイトのデータベースの変更管理を行っています。Web サイトへのアクセスを管理するために、aspnet_regsql ツールによって作成されたメンバーシップ/ロール モデルを使用したいと考えています。

これまでは、データベースを配置する前に aspnet_regsql を実行して、データベース プロジェクトが Web サイト固有のテーブルをデータベースにマージするようにしていました。aspnet_ テーブルをデータベース プロジェクトに含める方法を検討していますが、その方法がわかりません。

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

4

1 に答える 1

2

ええ、私はこれをしました。それを調査する中で、推奨されていない多くの場所を見てきました.1つは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
于 2011-02-24T22:47:42.630 に答える