केवल दो तरीके हैं जो मुझे पता है कि आप उपयोग कर सकते हैं:विंडोज या एसक्यूएल सर्वर प्रमाणीकरण। इसका मतलब है कि आप केवल दो विकल्पों तक सीमित हैं:आप या तो एक विंडोज खाते का उपयोग करते हैं, या आप एक SQL सर्वर लॉगिन बनाते हैं जिसका उपयोग आप प्रमाणित करने के लिए कर सकते हैं।
संपादित करें:
प्रोग्रामेटिक रूप से एक एसक्यूएल सर्वर लॉगिन बनाने के लिए, आप एसक्यूएल सर्वर प्रबंधन ऑब्जेक्ट्स का उपयोग कर सकते हैं। मैंने देखा है कि आपने यह नहीं कहा कि आप इसे विंडोज़ (डेस्कटॉप) या वेब एप्लिकेशन से करना चाहते हैं या नहीं। लॉगिन बनाने के लिए Sql सर्वर प्रबंधन का उपयोग करने के लिए (या किसी भी प्रकार का "प्रबंधन"), कोड को उच्च विशेषाधिकारों के साथ चलाने की आवश्यकता होगी - SQL सर्वर इंस्टेंस को प्रशासित करने के लिए पर्याप्त विशेषाधिकारों के साथ स्थानीय या डोमेन खाता कहें।
आपको संदर्भ जोड़ने की आवश्यकता होगी (आप असेंबली के संस्करण 9.0 का उपयोग कर सकते हैं):
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlEnum
इसके साथ, निम्न कोड SQL लॉगिन बनाने और उपयोगकर्ता को अपने लक्षित डेटाबेस में जोड़ने के लिए पर्याप्त है
var serverName = "."; // Your SQL Server Instance name
var databaseName = "Test"; // Your database name
var loginName = "testuserY"; // Your login name (should not exist - or you should add code to check if the login exists)
Server svr = new Server(serverName);
var db = svr.Databases[databaseName];
if (db != null)
{
// You probably want to create a login and add as a user to your database
Login login = new Login(svr, loginName);
login.DefaultDatabase = "master"; // Logins typically have master as default database
login.LoginType = LoginType.SqlLogin;
login.Create("foobar", LoginCreateOptions.None); // Enter a suitable password
login.Enable();
User user = new User(db, loginName);
user.UserType = UserType.SqlLogin;
user.Login = login.Name;
user.Create();
// add a role
user.AddToRole("db_owner");
}
आपको जोड़ना होगा:
using Microsoft.SqlServer.Management.Smo;
आप इसे और अधिक मजबूत बनाने के लिए try{} catch{} ब्लॉक और प्लंबिंग कोड जोड़ सकते हैं, विफलता के मामले में आप इनायत से ठीक हो सकते हैं