我想创建一个Sql Server身份验证帐户,而不是数据库或帐户中的用户。
我的意思是我想创建一个帐户,以便在启动 sql 服务器时使用 SQL 事务或使用 C# 从中登录。
据我所知,您只能使用两种模式:Windows 或 SQL Server 身份验证。这意味着您只有两种选择:使用 Windows 帐户,或者创建可用于身份验证的 SQL Server 登录名。
EDIT:
要以编程方式创建 SQL Server 登录名,您可以使用 Sql Server 管理对象。我注意到您没有说您是想从 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{} 块和管道代码以使其更加健壮,以便在发生故障时可以优雅地恢复
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)