반응형
사용자를 데이터베이스에 매핑하는 TSQL
엔터프라이즈 관리자를 사용하여 이 작업을 수행할 수 없습니다.제가 그랬다면 이런 질문을 하지도 않았을 것입니다.그래서 TSQL을 통해 사용자를 특정 데이터베이스에 매핑하고 사용자에게 '소유자' 권한을 부여하는 명령을 실행할 수 있는 방법이 있는지 궁금합니다.
감사합니다...
로그인의 기본 데이터베이스 변경:
alter login <loginname> with default_database = <dbname>;
지정된 로그인에 대한 사용자를 데이터베이스에 생성합니다.
use <dbname>;
create user <username> from login <loginname>;
db_owner 그룹의 사용자 구성원 만들기:
use <dbname>
exec sp_addrolemember 'db_owner', '<username>';
데이터베이스의 'dbo' 로그인:
alter authorization on database::<dbname> to <loginname>;
공식적으로 로그인에 매핑된 데이터베이스 사용자를 생성하려고 합니다.이를 위해 다음을 사용할 수 있습니다.
Create User <username> For LOGIN <loginname>
이를 위해서는 로그인이 존재해야 합니다.그런 다음 다음 다음을 호출합니다.
exec sp_addrolemember 'db_owner', <username>
이는 데이터베이스에 연결하는 계정에 구성원을 추가할 수 있는 권한이 있다고 가정합니다.db_owner
역할.
USE [YourDB]
GO
CREATE USER [xyx] FOR LOGIN [xyz]
GO
ALTER USER [xyz] WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember N'db_owner', N'xyz'
GO
CREATE USER 및 sp_addrole 멤버
SQL에 대한 완벽한 솔루션입니다.필요에 따라 사용자 지정할 수 있습니다.
#region SQL-SERVER-FUNCTION
/// <summary>
/// Assign User in to specific role for SQL server database
/// </summary>
/// <param name="Server">Server address - example: yourServer.cloudapp.net,1433</param>
/// <param name="UserID">User name with sysadmin role</param>
/// <param name="Database">User database</param>
/// <param name="Role">New role for this user</param>
/// <param name="UserToRole">User assigned to new role</param>
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;
}
/// <summary>
/// Create new User in specified database base on Login in SQL server
/// </summary>
/// <param name="Server">Server address - example: yourServer.cloudapp.net,1433</param>
/// <param name="UserID">User name with sysadmin role</param>
/// <param name="Database">Database for created user</param>
/// <param name="NewUser">New user Name</param>
/// <param name="FromLogin">Create user base on this SQL server login</param>
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;
}
/// <summary>
/// Create new Login in SQL server
/// </summary>
/// <param name="Server">Server address - example: yourServer.cloudapp.net,1433</param>
/// <param name="UserID">User name with sysadmin role</param>
/// <param name="Password">Sysadmin user password</param>
/// <param name="NewLoginName">New Login Name</param>
/// <param name="NewLoginPassword">Password for new Login</param>
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;
}
/// <summary>
/// Create new empty database on SQL server base on model database stored in SQL server
/// </summary>
/// <param name="Server">Server address - example: yourServer.cloudapp.net,1433</param>
/// <param name="NewDatabaseName">Name for new database</param>
/// <param name="UserID">User name with sysadmin role</param>
/// <param name="Password">Sysadmin user password</param>
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
사용: sysadmin 권한으로 SQL Server 로그인에 생성:관리 API
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");
물론 일반적으로 사용자에게 소유자 권한을 부여하지 않습니다.이것이 DBA 업계의 사람들이 "나쁜 일"이라고 부르는 것입니다.
언급URL : https://stackoverflow.com/questions/2775234/tsql-to-map-user-to-database
반응형
'source' 카테고리의 다른 글
목록의 모든 연속된 항목 쌍에 대해 반복 (0) | 2023.08.07 |
---|---|
속성별 요소 선택 (0) | 2023.08.07 |
Git 태그의 시간 및 날짜 가져오기 (0) | 2023.08.07 |
입력 크기 대 폭 (0) | 2023.08.07 |
Java Spring Boot Project의 저장 프로시저가 null을 출력으로 반환합니다. (0) | 2023.08.07 |