为新登录映射数据库

本文关键字:映射 数据库 登录 新登录 | 更新日期: 2023-09-27 18:12:13

我需要在SQL Server 2005中使用SMO创建一个新的登录。

我使用下面的代码创建新的登录:
ServerConnection connection = new Microsoft.SqlServer.Management.Common.ServerConnection(Server, Server_UserName, Server_Password);
Microsoft.SqlServer.Management.Smo.Server sqlServer = new Microsoft.SqlServer.Management.Smo.Server(connection);
// Creating Login
Login login = new Login(sqlServer, "loginName");
login.LoginType = LoginType.SqlLogin;
login.Create("loginPassword");
login.AddToRole("sysadmin");
login.AddToRole("serveradmin");     

,现在我需要所有的数据库在用户映射选项卡(在SQL Server管理工作室)将被检查....

如何在SMO中做到这一点?

为新登录映射数据库

将一个用户映射到所有数据库:

 public static void MapUserToAllTheDatabases(String Server, String Server_UserName, String Server_Password, String LoginName,String user_Username)
    {
        ServerConnection conn = new ServerConnection(Server, Server_UserName, Server_Password);
        Server srv = new Server(conn);
        DatabaseCollection dbs = srv.Databases;
        foreach (Database d in dbs)
        {
            bool ifExists = false;
            foreach (User user in d.Users)
                if (user.Name == user_Username)
                    ifExists = true;
            if (ifExists == false)
            {
                User u = new User(d, user_Username);
                u.Login = LoginName;
                u.Create();
                u.AddToRole("db_owner");
            }
        }
        srv.Refresh();
    }