我正在使用visual studio数据库项目对网站的数据库进行更改控制。我想使用aspnet_regsql工具创建的成员资格/角色模型来管理对网站的访问。
到目前为止,我在部署数据库之前运行aspnet_regsql,以便数据库项目将特定于网站的表合并到数据库中。我一直在研究在数据库项目中包含aspnet_表的方法,但无法弄清楚如何执行此操作。
有没有人试过这个?是不是有充分的理由不这样做?
答案 0 :(得分:2)
当我使用RedGate Compare时,我比较了结构和数据,我找不到与结果有什么不同......所以我认为它工作正常...... YMMV。
我做的是我创建了一个新数据库并在其上运行了aspnet_regsql。然后我在VS2010中创建了一个新的数据库项目并导入了该数据库。然后,我将所有文件复制到我的新项目Schema Objects目录中,并将它们放到我现有的数据库项目Schema Objects目录中。我打开了我的旧项目,从项目菜单中显示了所有文件,然后在我的项目中包含了所有新文件。
您还需要从新项目的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