mupan7
Goto Top

Net-share-Syntax oder andere Kommandozeilen-Lösung bei MS-SQL-Server-2014-per-User-account, war: Replication Snapshot Share für SQL Server: Grant SQL Agent

Hallo ihr,

Für die Einrichtung der Replikation benötigt der SQL Server einen Ordner, in dem er seine Replikations-Snapshots pflegt. Bei der Merge-Replikation muss ich einen UNC-Pfad angeben, auch wenn es sich um einen lokalen Pfad handelt. Das lief bei 2008 R2 ganz gut so:

md C:\SQL\ReplicationAlternate
net share ReplicationAlternate="C:\SQL\ReplicationAlternate" /Cache:Manual /Unlimited /Grant:domain\usersgroup,Full /Grant:"NT AUTHORITY\SYSTEM",Full
iCACLS "C:\SQL\ReplicationAlternate" /Grant domain\usersgroup:(OI)(CI)RXW /T

Spätestens in 2014 möchte SQL Server seine Windowsservices (Engine, Agent, Reporting usw.) unter einem per-service-Account laufen haben. Die Accounts-Logons sind virtuelle User. Folglich finde ich sie auch nicht in der erweiterten Suche beim Versuch, die User per GUI erstmal auf den Share zu berechtigen, bei den NTFS-Rechten wird es mir dann ähnlich gehen.

Bei der Eingabe von
net share ReplicationAlternate /Grant:"NT Service\MSSQL$Instanz",Full
erhalte ich
Sie haben eine Option mit einem ungültigen Wert verwendet.

Ich hab mich übrigens mit

Get-WmiObject Win32_Service|select Name,startname

und im SQL Server Configuration Manager vergewissert, dass der Accountname richtig angegeben ist.

Bedeutet das, dass ich wie früher alle SQL-Windowsservices unter SYSTEM fahren muss, damit unsere Anwendung die Replikation nutzen kann? Oder versuche ich es auf die falsche Weise?

Varianten wie NT-Service\, NT-Dienst\ oder DIENST\ oder die Angabe des Serviceaccountnamens ohne Präfix habe ich probiert, immer die gleiche Meldung.


Danke im Voraus,

mupan

Content-ID: 276637

Url: https://administrator.de/contentid/276637

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

mupan7
mupan7 07.07.2015 um 16:11:00 Uhr
Goto Top
Ergänzung: Im GUI geht's schon, ich muss natürlich den Kontext von der Domäne weg auf den lokalen Computer umstellen, "NT Service\SQLAgent$Instanz" eintippseln und "Namen überprüfen" lassen. Die Frage reduziert sich also darauf, wie ich so einen Per-Service-Account bei net share angebe, oder noch allgemeiner, weiß jemand, wie ich das skripten kann? PS, WMI?
mupan7
mupan7 07.07.2015 um 16:49:15 Uhr
Goto Top
PS C:\Windows\system32> Grant-SmbShareAccess -Name ReplicationAlternate -AccountName "NT Service\SQLAgent$Instanz" -AccessRight Full

Bestätigung
Möchten Sie diese Aktion wirklich ausführen?
Der Vorgang "Modify" auf dem Ziel "*,ReplicationAlternate" wird ausgeführt.
[J] Ja  [A] Ja, alle  [N] Nein  [K] Nein, keine  [H] Anhalten  [?] Hilfe (Standard ist "J"): j
Grant-SmbShareAccess : Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.
In Zeile:1 Zeichen:1
+ Grant-SmbShareAccess -Name ReplicationAlternate -AccountName "NT Service\SQLAgen ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_SmbShare (...copeName = "*"):ROOT/Microsoft/Windows/SMB/MSFT_SMBShar
   e) [Grant-SmbShareAccess], CimException
    + FullyQualifiedErrorId : Windows System Error 1332,Grant-SmbShareAccess

Schade.
mupan7
mupan7 20.07.2015 um 09:16:27 Uhr
Goto Top
Nach "Zurücksetzen" auf den Anfangsstand (Verzeichnis löschen, Distributor- und Publisher-Eigenschaft vom SQL-Server weg, DB Replikation weg) und ganz von vorn beginnen gings so:

md C:\<Produkt>\SQL\ReplicationAlternate
net share ReplicationAlternate="C:\<Produkt>\SQL\ReplicationAlternate" /Cache:Manual /Unlimited /Grant:<domain>\<usersgroup>,Full /Grant:"NT AUTHORITY\SYSTEM",Full /Grant:"NT Service\MSSQL$<Produkt>",Full /Grant:"NT Service\SQLAgent$<Produkt>",Full
iCACLS "C:\<Produkt>\SQL\ReplicationAlternate" /T /Grant <domain>\<usersgroup>face-sadOI)(CI)RXW /grant "NT Service\MSSQL$<Produkt>"face-sadOI)(CI)(F) /Grant "NT Service\SQLAgent$<Produkt>"face-sadOI)(CI)(F)


Also, auch Per-service-User kann man skripten. Und die Neudefinition und -konfiguration des SQL Servers als Distributor und Publisher und die Konfiguration der DB-Replikation liefen danach fehlerlos durch, also haben jetzt die Rechte sowohl für die MSSQL-Services und als auch für den Replikation-Snapshot-Share gepasst.