2010-05-05 24 views
36

तो मैं ऐसा करने के लिए उपयोगकर्ता एंटरप्राइज़ मैनेजर में सक्षम नहीं हूं ... अगर मैं था तो मैं यह सवाल भी नहीं पूछूंगा। तो मैं सोच रहा हूं कि क्या एक कमांड निष्पादित करने के लिए TSQL के माध्यम से कोई तरीका है जो किसी उपयोगकर्ता को किसी विशेष डेटाबेस पर मैप करता है और उन्हें 'स्वामी' अनुमति देता है।डाटाबेस के लिए टीएसक्यूएल डाटाबेस

धन्यवाद ...

उत्तर

74

बदलें डिफ़ॉल्ट डेटाबेस:

alter login <loginname> with default_database = <dbname>; 

किसी दिए गए प्रवेश के लिए एक डेटाबेस में एक उपयोगकर्ता बनाएँ:

use <dbname> 
exec sp_addrolemember 'db_owner', '<username>'; 
:

use <dbname>; 
create user <username> from login <loginname>; 

db_owner समूह के एक उपयोगकर्ता सदस्य बनाओ

डेटाबेस का लॉगिन 'डीबीओ' बनाएं:

alter authorization on database::<dbname> to <loginname>; 
11

आधिकारिक तौर पर, यदि आप एक डेटाबेस उपयोगकर्ता जो लॉगिन करने के लिए मैप किया गया है बनाना चाहते हैं। ऐसा करने के लिए, आप इसका उपयोग करेंगे:

Create User <username> For LOGIN <loginname> 

यह स्पष्ट रूप से आवश्यक है कि लॉगिन मौजूद है। उसके बाद आप तो कहेंगे:

exec sp_addrolemember 'db_owner', <username> 

यह मान लिया जाता है खाता जिससे आप डेटाबेस से कनेक्ट कर रहे हैं db_owner भूमिका के लिए सदस्यों को जोड़ने के विशेषाधिकार है। एक लॉगिन का

6
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 
-4

बेशक आम तौर पर, आप उपयोगकर्ताओं को स्वामी अनुमति नहीं देना चाहते हैं। डीबीए दुनिया में हम में से यही वह है जो "एक बुरी चीज" कहता है।

0

एसक्यूएल के लिए मेरा पूरा समाधान।

#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 

का उपयोग कर: सिस्टम प्रशासक अनुमति के साथ एसक्यूएल सर्वर लॉग इन पर बनाएँ: 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"); 
आप अपनी आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं
संबंधित मुद्दे