Je sais que vous ne pouvez utiliser que deux modes :l'authentification Windows ou SQL Server. Cela signifie que vous êtes limité à deux choix :soit vous utilisez un compte Windows, soit vous créez une connexion SQL Server que vous pouvez utiliser pour vous authentifier.
MODIFIER :
Pour créer par programme une connexion au serveur sql, vous pouvez utiliser des objets de gestion de serveur SQL. Je remarque que vous n'avez pas dit si vous voulez le faire à partir d'une application Windows (bureau) ou Web. Pour utiliser Sql Server Management pour créer une connexion (ou effectuer toute sorte de "gestion"), le code doit s'exécuter avec des privilèges plus élevés - par exemple un compte local ou de domaine avec des privilèges suffisants pour administrer l'instance du serveur SQL.
Vous devrez ajouter des références à (vous pouvez utiliser la version 9.0 des assemblys) :
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlEnum
Avec cela, le code suivant suffit pour créer une connexion SQL et également ajouter l'utilisateur à votre base de données cible
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");
}
Vous devrez ajouter :
using Microsoft.SqlServer.Management.Smo;
Vous pouvez ajouter des blocs try{} catch{} et du code de plomberie pour le rendre plus robuste, vous récupérerez gracieusement en cas d'échec