[Gelöst] Rechte auf dem SQL-Server??

19. April 2010 09:31

Hi,

ich habe einen frischen SQL-Server und ein frisches NAV 2009 classic. Ich habe beim SQL-Server eine neue Anmeldung hinzugefügt und meine Datenbank steht auch. Leider seh ich mit diesen ganzen rechten da noch nciht durch, und serverrollen gibts auch noch, und berechtigungen für externe stored procedures braucht man ja acuh...

Kann mir jemand sagen, welche Rechte ich welchem Benutze in meinem SQL Management Studio geben muss, damit mein classic client läuft???

Nico
Zuletzt geändert von Dosihris am 23. April 2010 18:27, insgesamt 1-mal geändert.

Re: Rechte auf dem SQL-Server??

19. April 2010 11:24

Hi Nico,

also das ganze ist in "Installation & System Management (SQL)" (isql.pdf) auch beschrieben. Damit der Benutzerzugriff funzt, braucht man im wesentlichen folgendes:

Traceflag 4616 als SQL Server Startparameter (bis < NAV 2009 SP1)

Extended Stores Procedures in "master":
xp_ndo_enumusergroups (NAV Security Model "Enhanced" - nicht wirklich empfohlen)
xp_ndo_enumusersids (NAV Security Model "Standard" - empfohlen)
"EXECUTE" Rechte für die Rolle "public"

SQL Server Login:
Windows Login oder SQL Login; Achtung: keine SQL Server Policies verwenden - das führt in NAV zu Fehler!
Serverrolle "public" für normale User; Administratoren ggf. "sysadmin" (wenn 's differenzierter sein muss, dann bitte im PDF nachschlagen)

SQL Database User:
SQL Login der Datenbank zuordnen (oder Use manuell in DB anlegen)
Datenbankrolle "public" für normale User; "db_owner" für Entwickler und Admins

NAV Login:
Windows Login oder Database Login anlegen; NAV Rollen nach Bedarf zuteilen
Bei NAV Sicherheitsmodell "Enhanced" muss eine "Synchronisation" in NAV erfolgen

Wie gesagt, man kann das auch differenzierter einrichten, aber für den "Hausgebrauch" reicht obiges meist ...

Re: Rechte auf dem SQL-Server??

22. April 2010 21:08

Hi,

ich hab nun mal alles exakt so gemacht wie beschrieben, aber beim letzten punkt, anlegen der Benutzer in NAV bin ich wohl gescheitert... Ich weiss, dass ich schon irgendwann mal da Benutzer angelegt hatte, aber jetzt gehts irgendwie nciht mehr. Die Menu-Zeilen sind immer ausgegraut und ich kann nix machen... vllt. fehlt nur noch dieser letzte schritt...

Als ergänzung sei gesagt. Ich hab mal in meine Datenbank geguckt.. Ich hab mir eine Cronus-Kopie gemacht, damit ich erstmal irgendwas hab zum spieln. In der Tabelle dbo.User steht nix drin. In WindowsLogin is meine S-ID drinne... und dbo.MemberOF is auch leer.. Hab ich mir vllt. was kaputt gemacht durch das komische synchronisieren? Ich komm nich mal mehr mit meinem classic-client drauf. er sagt falsche benutzer-ID...

Re: Rechte auf dem SQL-Server??

23. April 2010 08:59

Dosihris hat geschrieben:Hi,

ich hab nun mal alles exakt so gemacht wie beschrieben, aber beim letzten punkt, anlegen der Benutzer in NAV bin ich wohl gescheitert... Ich weiss, dass ich schon irgendwann mal da Benutzer angelegt hatte, aber jetzt gehts irgendwie nciht mehr. Die Menu-Zeilen sind immer ausgegraut und ich kann nix machen... vllt. fehlt nur noch dieser letzte schritt...

Als ergänzung sei gesagt. Ich hab mal in meine Datenbank geguckt.. Ich hab mir eine Cronus-Kopie gemacht, damit ich erstmal irgendwas hab zum spieln. In der Tabelle dbo.User steht nix drin. In WindowsLogin is meine S-ID drinne... und dbo.MemberOF is auch leer.. Hab ich mir vllt. was kaputt gemacht durch das komische synchronisieren? Ich komm nich mal mehr mit meinem classic-client drauf. er sagt falsche benutzer-ID...


Also wenn die "Menu-Zeilen immer ausgegraut sind", dann heisst das, dass Du selbst keine Rechte in NAV hast, um dort Benutzer anzulegen ... :shock:
Um Benutzer & Rechte in NAV zu verwalten musste Du selbst die Rollen SUPER oder SECURITY besitzen ... und das ist offenbar nicht der Fall, wenn "Memeber of" leer ist ...

WENN Du auf dem SQL Server "sysadmin" bist, dann kannst Du ein funktionierendes NAV "Datenbank Login" via TSQL anlegen:

Code:
USE [master]
CREATE LOGIN [NAV_ADMIN]   -- change login name
  WITH PASSWORD=N'welcome',   -- change password
  DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

USE [Navision] -- change db name
CREATE USER [NAV_ADMIN] FOR LOGIN [NAV_ADMIN]  -- regard name

EXEC sp_addrolemember N'db_owner', N'NAV_ADMIN'  -- regard name

INSERT INTO [User] ([User ID], [Password], [Name], [Expiration Date])
  VALUES (N'NAV_ADMIN', N'', N'NAV Administrator','Jan  1 1753 12:00:00:000AM')

INSERT INTO [Member Of] ([User ID], [Role ID], Company)
  VALUES (N'NAV_ADMIN', N'SUPER', N'')  -- regard name

Das Script legt im SQL Server, der SQL Db und in NAV den Account "NAV_ADMIN" an; SUPER User in NAV. Damit solltest DU dich dann in NAV anmelden können ...

Re: Rechte auf dem SQL-Server??

23. April 2010 13:20

Danke Jörg, dass du dir so viel Mühe machst.. Ich habe dein Script ausgeführt (vorher die richtige Datenbank eingetragen) und es wurde ein Login namens NAV_ADMIN erstellt und auch eingetragen in die beiden Tabellen User und Member of. Dann bin ich zurück in meinen Classic-Client und wollt mich erneut anmelden.

Da wir ja nun nen User erzeugt haben und keinen Windows-Login muss ich ja bei der Anmeldung im Classic client nun von Windows authentifizierung auf datenbank authentifizierung umstellen. (Dies muss man auch im SQL-Server umstellen. Da muss man umstellen auf "SQL Server- und Windows-Authentifizierungsmodus", nur falls mal noch jemand das gleiche Problem haben sollte wie ich...

Wenn ich mich nun anmelden möchte mit meinem classic client sagt er:

"Sie können Microsoft Dynamics NAV Classic nicht starten, da Sie für SQL Server nicht die Berechtigung zum Anzeigen des Serverstatus (VIEW SERVER STATE) besitzen." Ich dachte das wäre das mit diesem T-Flag 4616? In meinem SQL-Server unter Properties / Advanced / Start Parameters endet der Eintrag wie folgt: "\mastlog.ldf;-T 4616"

Ich nutze übrigens Microsoft Dynamics NAV 2009 SP1. Laut diesem Artikel hier von Microsoft braucht man dieses Flag ab dieser Version eigentlich gar nicht mehr.. Aber auch ohne Flag gehts nicht...
https://community.dynamics.com/blogs/na ... 9-sp1.aspx


Was ist denn nun noch falsch???

Re: Rechte auf dem SQL-Server??

23. April 2010 13:44

Hmmm ... ich fürchte das Leerzeichen in "-T 4616" tut's nicht ...
Wenn Du DBCC TRACESTATUS (-1) ausführst, wird dann 4616 angezeigt?

Re: Rechte auf dem SQL-Server??

23. April 2010 13:50

ja. genau dieses eine flag taucht auf mit Status = 1 und Global = 1 und Session = 0

vllt. ist das noch wichtig, ich nutze windows 7... die lizenz im classic client kann man ja auch nur ändern, wenn man ihn als admin startet...

und ich log mich meistens nur mittels SSMS ein und mache Änderungen, abgesehen von dem Startparametern, das geht ja nur aufm server...
Mein Classic client ging ja auch schonmal.. bis ich glaube ich user synchronisation gemacht hab... :-|

Re: Rechte auf dem SQL-Server??

23. April 2010 14:10

Klappt's mit
Code:
USE [master]
GO
GRANT VIEW SERVER STATE TO PUBLIC
GO
???

Windows 7 ist erst ab Dynamics NAV 2009 SP1 supported ...

Re: Rechte auf dem SQL-Server??

23. April 2010 14:20

JA.. Damit gehts endlich.. unglaublich. mein klassischer Client is endlich mal wieder an... wer weiss, was ich auf meinem SQL-Server wohl alles verstellt hab... Danke sehr.

wenn ich versuche nu bei Rollen mal wieder meine windows user zu synchronisieren, sagt er, ich hätte keine Berechtigung, das zu tun...

Und mein Rollenbasierter Client geht auch noch nicht, aber das lag ja glaube ich daran, dass ich hier keine Domäne nutze...

Hast du noch einen Tip, wie das mit dem Synchronisieren ist?? Oder sollte ich das lieber einfach lassen und via Datenbankauthentifizierung arbeiten... :-|

Re: Rechte auf dem SQL-Server??

23. April 2010 15:09

Dosihris hat geschrieben:JA.. Damit gehts endlich.. unglaublich. mein klassischer Client is endlich mal wieder an... wer weiss, was ich auf meinem SQL-Server wohl alles verstellt hab... Danke sehr.

wenn ich versuche nu bei Rollen mal wieder meine windows user zu synchronisieren, sagt er, ich hätte keine Berechtigung, das zu tun...

Und mein Rollenbasierter Client geht auch noch nicht, aber das lag ja glaube ich daran, dass ich hier keine Domäne nutze...

Hast du noch einen Tip, wie das mit dem Synchronisieren ist?? Oder sollte ich das lieber einfach lassen und via Datenbankauthentifizierung arbeiten... :-|


Also nochmal: das "Sicherheitsmodell" in NAV ist "Standard"? Dann ist eine Synchro nicht erforderlich.
Wenn Du synchronisierst, machst Du das mit dem DB Login oder Deinem Windows Login? Falls Windows: ist das Login auch SUPER User in NAV? Ist Dein Windows Login auch lokaler Administrator? Ansonsten muss Dein WIndows Login auch auf dem SQL Server explizit zum "sysadmin" werden ...

Es ist schon alles sehr rätselhaft ...

Re: Rechte auf dem SQL-Server??

23. April 2010 18:27

also.. mein loakler benutzer ist ein Admin und er hat in NAV acuh die Rolle SUPER.

Was ich ja aber ursprünglich mal wollte ist, dass mein Rollenbasierter Client geht.. da mein klassischer Client nun erstmal wieder geht, werde ich wohl einfach diesen Thread als gelöst markieren und einen neuen aufmachen...

danke sehr für deine ganze Hilfe bis hier her..

Re: [Gelöst] Rechte auf dem SQL-Server??

24. April 2010 11:37

OK. Hmmm ...

Was den RTC angeht, so hängt es davon ab, wie das Login, das der "Dynamics NAV Server" (Service-Tier) verwendet, auf dem SQL Server eingerichtet ist ...
Vielleicht hilft Dir das: http://blogs.msdn.com/german_nav_developer/archive/2009/04/22/nav-2009-rtc-verbindung-schl-gt-fehl.aspx