Skip to content

Instantly share code, notes, and snippets.

@manicai
Created August 18, 2011 10:00
Show Gist options
  • Save manicai/1153772 to your computer and use it in GitHub Desktop.
Save manicai/1153772 to your computer and use it in GitHub Desktop.
Creating user and login and associating with role for SQLServer via SMO
// Reference
// Microsoft.SqlServer.ConnectionInfo.dll
// Microsoft.SqlServer.Management.Sdk.Sfc.dll
// Microsoft.SqlServer.SqlEnum.dll
// Microsoft.SqlServer.Smo.dll
// all from %PROGRAM FILES%\Microsoft SQL Server\100\SDK\Assemblies
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
class Example
{
void Main()
{
var server = new Server(
new ServerConnection(
new System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestStagingLive;Integrated Security=True")));
var loginName = "apitester";
var databaseName = "TestStagingLive";
var userRole = "APIUser";
var login = server.Logins.OfType<Login>()
.Where(l => l.Name == loginName)
.SingleOrDefault();
if (login == null)
{
Console.WriteLine ("Creating login");
login = new Login(server, loginName);
login.DefaultDatabase = databaseName;
login.LoginType = LoginType.SqlLogin;
login.Create(password: loginName);
login.Enable();
Console.WriteLine ("Created login");
}
var database = server.Databases.OfType<Database>()
.Where(d => d.Name == databaseName)
.Single();
Console.WriteLine ("Found DB");
var user = database.Users.OfType<User>()
.Where(u => u.Name == login.Name)
.SingleOrDefault();
if (user == null)
{
user = new User(database, loginName);
user.Login = login.Name;
user.Create();
Console.WriteLine ("Created user");
}
if (!user.EnumRoles().Contains(userRole))
{
user.AddToRole(userRole);
Console.WriteLine ("Added role.");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment