映射数据库以进行新登录

时间:2011-10-25 08:37:18

标签: c# .net sql-server-2005 smo

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

我使用以下代码创建新登录名:

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 Management Studio中)中的所有数据库....

我如何在SMO中完成?

1 个答案:

答案 0 :(得分:1)

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

 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();
    }