TSQL to Map User to Database

前端 未结 6 1652
刺人心
刺人心 2020-12-08 09:43

So I\'m not able to user enterprise manager to do this... If I was I wouldn\'t even be asking this question. So I\'m wondering if there is a way through TSQL to execute a co

6条回答
  •  萌比男神i
    2020-12-08 09:53

    My complete solution for SQL. You can customize it according your needs:

       #region SQL-SERVER-FUNCTION
        /// 
        /// Assign User in to specific role for SQL server database
        /// 
        /// Server address - example: yourServer.cloudapp.net,1433         
        /// User name with sysadmin role
        /// User database
        /// New role for this user
        /// User assigned to new role   
        public static void AddUserToRoles(string Server, string UserID, string Password, string Database, string Role, string UserToRole)
        {               
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = "SERVER = " + Server + "; DATABASE = " + Database + " ; User ID = " + UserID + "; Pwd = " + Password;             
            string sqlCreateDBQuery = " EXEC sp_addrolemember '" + Role + "', " + UserToRole; 
            SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, connection);
            try
            {
                connection.Open();
                myCommand.ExecuteNonQuery();
            }
            catch{}//(System.Exception ex)
            finally
            {
                connection.Close();
            }
            return;
        }
    
        /// 
        /// Create new User in specified database base on Login in SQL server
        /// 
        /// Server address - example: yourServer.cloudapp.net,1433         
        /// User name with sysadmin role
        /// Database for created user
        /// New user Name
        /// Create user base on this SQL server login   
        public static void CreateUserInDatabase(string Server, string UserID, string Password, string Database, string NewUser, string FromLogin)
        {
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = "SERVER = " + Server + "; DATABASE = "+ Database + " ; User ID = " + UserID + "; Pwd = " + Password;
            string sqlCreateDBQuery = "CREATE USER " + NewUser + " FROM LOGIN " + FromLogin;        
            SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, connection);
            try
            {
                connection.Open();
                myCommand.ExecuteNonQuery();
            }
            catch { }//(System.Exception ex)
            finally
            {
                connection.Close();
            }
            return;
        }
    
        /// 
        /// Create new Login in SQL server
        /// 
        /// Server address - example: yourServer.cloudapp.net,1433         
        /// User name with sysadmin role
        /// Sysadmin user password
        /// New Login Name
        /// Password for new Login              
        public static void CreateLoginInSqlServer(string Server, string UserID, string Password, string NewLoginName, string NewLoginPassword)
        {
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = "SERVER = " + Server + "; DATABASE = master; User ID = " + UserID + "; Pwd = " + Password;
            string sqlCreateDBQuery = "CREATE LOGIN [" + NewLoginName + "] WITH PASSWORD='"+ NewLoginPassword +"' " +               
                ", CHECK_POLICY=OFF, DEFAULT_DATABASE=db_crs_0002, DEFAULT_LANGUAGE=[English];";         
            SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, connection);
            try
            {
                connection.Open();
                myCommand.ExecuteNonQuery();
            }
            catch { }//(System.Exception ex)
            finally
            {
                connection.Close();
            }
            return;
        }
    
    
        /// 
        /// Create new empty database on SQL server base on model database stored in SQL server
        /// 
        /// Server address - example: yourServer.cloudapp.net,1433
        /// Name for new database
        /// User name with sysadmin role
        /// Sysadmin user password
        public static void CreateNewDatabaseSqlserver(string Server, string NewDatabaseName, string UserID, string Password)                 
        {
            string sqlCreateDBQuery = " CREATE DATABASE " + NewDatabaseName;
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = "SERVER = " + Server + "; DATABASE = master; User ID = " + UserID + "; Pwd = " + Password;  
            SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, connection);
            try
            {
                connection.Open();
                myCommand.ExecuteNonQuery();  
            }
            catch { }//(System.Exception ex)
            finally
            {
                connection.Close();
            }
            return;
        }
        #endregion 
    

    using: Create on SQL server Login with sysadmin permissions: AdminAPI

            SQLserverAPI.CreateNewDatabaseSqlserver("yourServer.cloudapp.net,1433", "databaseName", "AdminAPI", "password*");
            SQLserverAPI.CreateLoginInSqlServer("yourServer.cloudapp.net,1433", "AdminAPI", "password*", "My_Login", "password*");
            SQLserverAPI.CreateUserInDatabase("yourServer.cloudapp.net,1433", "AdminAPI", "password*", "databaseName", "User1", "My_Login");
            SQLserverAPI.AddUserToRoles("yourServer.cloudapp.net,1433", "AdminAPI", "password*", "databaseName", "db_datareader", "User1");
            SQLserverAPI.AddUserToRoles("yourServer.cloudapp.net,1433", "AdminAPI", "password*", "databaseName", "db_datawriter", "User1");
            SQLserverAPI.AddUserToRoles("yourServer.cloudapp.net,1433", "AdminAPI", "password*", "databaseName", "db_owner", "User1");
    

提交回复
热议问题