C# 如何获取SQL数据库用户&;在Visual Studio中我的MVC EF项目中的角色?

C# 如何获取SQL数据库用户&;在Visual Studio中我的MVC EF项目中的角色?,c#,asp.net-mvc,visual-studio-2010,entity-framework,visual-studio,C#,Asp.net Mvc,Visual Studio 2010,Entity Framework,Visual Studio,我能够在VisualStudio中使用“模式比较”创建SQL数据库表。我使用T-SQL将登录名和用户直接添加到数据库中,还使用T-SQL将用户添加到datareader和datawriter角色中 现在,当我在VisualStudio中使用我的项目作为源进行“模式比较”时,它希望从数据库中删除用户和角色。如何将这些添加到项目中?这取决于您使用的是新的Sql Server数据工具(SSDT)项目(.sqlproj)还是旧的2010 Sql数据库项目(.dbproj) 如果您正在使用新的SSDT项目

我能够在VisualStudio中使用“模式比较”创建SQL数据库表。我使用T-SQL将登录名和用户直接添加到数据库中,还使用T-SQL将用户添加到datareader和datawriter角色中


现在,当我在VisualStudio中使用我的项目作为源进行“模式比较”时,它希望从数据库中删除用户和角色。如何将这些添加到项目中?

这取决于您使用的是新的Sql Server数据工具(SSDT)项目(.sqlproj)还是旧的2010 Sql数据库项目(.dbproj)

如果您正在使用新的SSDT项目,则只需将对象添加到项目中:

  • 为新登录创建一个文件
  • 为新的DB用户创建一个文件
  • 创建一个名为YourDatabaseName.rolememberships.sql的文件
该文件将包含如下代码:

EXECUTE sp_addrolemember @rolename = N'db_datareader', @membername = N'NewDBUser';
您需要一个Permissions.sql文件。在其中,您将授予登录连接权限,如下所示:

GRANT CONNECT TO [NewLogin] AS [dbo];

但是,如果您使用的是旧数据库项目,则需要在解决方案中创建一个称为服务器项目的新项目。它看起来非常像您的数据库项目,只是它属于主数据库

您在这个新的服务器项目中执行类似的操作,正如我在上面所概述的,在您的原始数据库项目中,您将需要添加服务器项目作为参考


对整个过程的警告。您需要添加具有SID值的登录名,以便在尝试将数据库备份放在其他服务器上时不会出现孤立的用户场景

我首先使用了中概述的过程来获取SID,然后如果您参考关于BOL的部分,您将看到创建登录文件的语法应该是什么