我想创建一个Sql Server身份验证帐户,而不是数据库或帐户中的用户。
我的意思是我想创建一个帐户,这样当我启动sql server,使用SQL Transaction或使用C#时,我可以从中登录。
答案 0 :(得分:4)
我知道您只能使用两种模式:Windows或SQL Server身份验证。这意味着您只能选择两个选项:您可以使用Windows帐户,也可以创建可用于进行身份验证的SQL Server登录。
编辑:
要以编程方式创建sql server登录,可以使用Sql Server Management对象。我注意到你没有说是否要从Windows(桌面)或Web应用程序执行此操作。要使用Sql Server Management创建登录(或执行任何类型的“管理”),代码将需要以更高的权限运行 - 例如具有足够权限来管理SQL Server实例的本地或域帐户。
您需要添加引用(您可以使用程序集的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 {}块和管道代码,使其更加强大,以便在发生故障时优雅地恢复