Windowsgruppe in SQL Server 2005

23/07/2008 - 15:14 von Claus Bruns | Report spam
Hallo Forum,

ich möchte eine Windowsgruppe in SQL Server 2005 hinzufügen,
bisher benutzte ich für SQL Server 2000 Funktionen von DMO,
für SQL Server 2005 muss ich aber Funktionen von SMO benutzen.
Doch jetzt ist "WindowsLoginAccessType" immer 'Undefined' statt 'Grant'.

"WindowsLoginAccessType" kann auch nicht mehr zugewiesen werden, ist read
only.

Hier der Code zum Hinzufügen der Windowsgruppe.
Was hab ich übersehen, was mache ich falsch, was fehlt???

-
using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;

Login mlogin = new Login(mSQLServer, txtServ + @"\SQLUsers");
mlogin.Initialize(true);
mlogin.DenyWindowsLogin = false;
mlogin.Language = "us_english";
mlogin.DefaultDatabase = "master";
mlogin.LoginType = LoginType.WindowsGroup;
try
{
mSQLServer.Logins.Add(mlogin);
mSQLServer.Roles["sysadmin"].AddMember(mlogin.Name);
}
-
Im Voraus vielen Dank
Claus
 

Lesen sie die antworten

#1 Elmar Boye
23/07/2008 - 21:57 | Warnen spam
Hallo Claus,

Claus Bruns schrieb:
ich möchte eine Windowsgruppe in SQL Server 2005 hinzufügen,
bisher benutzte ich für SQL Server 2000 Funktionen von DMO,
für SQL Server 2005 muss ich aber Funktionen von SMO benutzen.
Doch jetzt ist "WindowsLoginAccessType" immer 'Undefined' statt 'Grant'.




Nicht immer...

"WindowsLoginAccessType" kann auch nicht mehr zugewiesen werden, ist read
only.



sie entspricht der DMO Eigenschaft NTLoginAccessType, die ebenfalls
schreibgeschützt war/ist.

Hier der Code zum Hinzufügen der Windowsgruppe.
Was hab ich übersehen, was mache ich falsch, was fehlt???

-
using Microsoft.SqlServer.Management;
using Microsoft.SqlServer.Management.Smo;
.
Login mlogin = new Login(mSQLServer, txtServ + @"\SQLUsers");
mlogin.Initialize(true);



das Initialize dient zum Initialisieren der Daten für das Objekt
auf Basis der SQL Server Informationen.
Da es sich hier um ein neues (Login Objekt handelt gibt es
allerdings nichts. Sie ist also eher für bereits bestehende
Objekte (Logins) sinnvoll.

mlogin.DenyWindowsLogin = false;
mlogin.Language = "us_english";
mlogin.DefaultDatabase = "master";
mlogin.LoginType = LoginType.WindowsGroup;
try
{
mSQLServer.Logins.Add(mlogin);



Erst hier bzw. nach einem
mLogin.Create();

steht die Eigenschaft WindowsLoginAccessType zur Verfügung -
und solltest Du im Debugger auch sehen können.

mSQLServer.Roles["sysadmin"].AddMember(mlogin.Name);



Hier kàmen nun die Zuordnung zu den Datenbanken (mindestens
für die DefaultDatabase (oben master) ...

Grundsàtzlich einfacher als SMO (DMO) mit seinen teilweise
seltsamen Verhalten/Anforderungen, ist ein
CREATE LOGIN ...
<URL:http://msdn.microsoft.com/de-de/lib...1.aspx>
CREATE USER ...
<URL:http://msdn.microsoft.com/de-de/lib...3.aspx>
via SqlCommand.ExecuteNonQuery()
Denn mehr kommt da oben am Ende auch nicht heraus.

Gruß Elmar

Ähnliche fragen