在我们公司的产品中,我们将数据库附加到SQL Server,我们需要将凭据添加到某些帐户到目录。
目前我们正在使用SMO来实现这一目标,但这给我们带来了问题(x86 vs x64,SQL Server 2005 vs 2008等)
无论如何使用SQL添加登录(到服务器)和用户(到目录)?
这是添加登录的当前代码:
connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);
//Drop existing login (if exist)
Login login = server.Logins[AccountName];
if (login != null)
login.Drop();
//Create new login
login = new Login(server, AccountName);
login.LoginType = LoginType.WindowsUser;
login.Create();
DatabaseMapping mapping = new DatabaseMapping(login.Name, connection.DatabaseName, login.Name);
并添加用户:
connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);
Microsoft.SqlServer.Management.Smo.Database database = server.Databases[CatalogName];
User user = server.Databases[CatalogName].Users[LoginName];
if (user != null)
user.Drop();
user = new User(database, LoginName);
user.Login = LoginName;
user.Create();
user.AddToRole("db_owner");
我想使用SQL执行这些操作。有什么想法吗?
答案 0 :(得分:5)
测试login first:
IF SUSER_ID('Login') IS NULL
IF DATABASE_PRINCIPAL_ID('User') IS NULL
添加user to role:
EXEC sp_addrolemember 'Role', 'User'
仅供参考,SMO复制SQL功能。我不认为只有SMO可以做任何事情(当然有很多只有SQL的东西)。