Как добавить другого пользователя Windows к действующему пользователю MS Dynamics NAV?

Я установил MS Dynamics NAV из моей учетной записи администратора Windows, и он успешно работает при входе администратора. Но когда я захожу с другого аккаунта и запускаю NAV(2016), он показывает:

you do not have access to microsoft dynamics nav .verify that you have been setup as a valid user in ms dynamics NAV.

Я не могу установить программу установки NAV из моей учетной записи Windows, так как у нее нет разрешения на установку чего-либо.

Я совершенно новичок в этом, нужна помощь.

3 ответа

Решение

Шаг 1 - Вам понадобится идентификатор безопасности Windows или SSID

Откройте PowerShell и вставьте приведенный ниже код

$objUser = New-Object System.Security.Principal.NTAccount("YourDomain\Your ID")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

Замените YourDomain \ Your ID на свой домен и идентификатор пользователя.

Запустите код и в выходных данных вы найдете SSID.

ШАГ 2 - ВВЕДИТЕ ИНФОРМАЦИЮ ПОЛЬЗОВАТЕЛЯ в базу данных NAVISION с ролями.

Откройте SQL Server Management Studio.

В моем случае база данных, к которой я хочу получить доступ, - это демонстрационная база данных NAV (7-1).

Нажмите "Новый запрос" и вставьте указанную ниже команду в окно запроса.

USE [DATABASE NAME]
DECLARE @USERSID uniqueidentifier, @WINDOWSSID nvarchar(119), @USERNAME     nvarchar(50), @USERSIDTXT varchar(50)

SELECT NEWID()
SET @USERNAME   = 'YourDomain\Your ID'
SET @USERSID    = NEWID()
SET @USERSIDTXT = CONVERT(VARCHAR(50), @USERSID)
SET @WINDOWSSID = 'Your SSID'

INSERT INTO [dbo].[User]
([User Security ID],[User Name],[Full Name],[State],[Expiry Date], [Windows     Security ID],[Change Password],[License Type],[Authentication Email])
VALUES
(@USERSID,@USERNAME,'',0,'1753-01-01 00:00:00.000',@WINDOWSSID,0,0,'')

INSERT INTO [dbo].[User Property]
([User Security ID],[Password],[Name Identifier],[Authentication Key],    [WebServices Key],[WebServices Key Expiry Date],[Authentication Object ID])
VALUES
(@USERSID,'','','','','1753-01-01 00:00:00.000','')

INSERT INTO [dbo].[Access Control]([User Security ID],[Role ID],[Company     Name])
VALUES
(@USERSID,'SUPER','')
GO

Замените DATABASE NAME - именем базы данных YourDomain\Your ID - своим доменным именем и именем пользователя SSID - SSID, скопированным в ШАГЕ 1

Запрос предоставляет SUPER Роль пользователю, при необходимости вы можете изменить Роль в Последней части запроса.

Перейти к SQL Server Management Studio

Щелкните правой кнопкой мыши на базе данных, которую вы используете, выберите новый запрос и скопируйте вставить ниже синтаксиса:

     delete from [dbo].[User]

нажмите F5 и перезапустите. Это поможет вам.

Быстрый способ с PowerShell, вы должны изменить некоторые конфигурации.

Для NAV 2016

$appUser = "XXX\XXX"; # User Name
$appUserFullName = "XXXXXxxxXX"; # FullName


$dataSource = "192.168.100.XX";  # SQL SERVER IP
$user = "sa"; # USERNAME
$pwd = "XXxxXX"; # SA Password
$database = "NAVERP"; # Database


$connectionString = "Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;";
$connection = New-Object System.Data.SqlClient.SqlConnection;
$connection.ConnectionString = $connectionString;

$objUser = New-Object System.Security.Principal.NTAccount($appUser)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])

$sqlCommandText ="
    USE NAVERP
    DECLARE @USERSID uniqueidentifier, @WINDOWSSID nvarchar(119), @USERNAME nvarchar(50), @USERSIDTXT varchar(50), @FullName as varchar(50)

    SELECT NEWID()
    SET @USERNAME   = '$appUser'
    set @FullName   = '$appUserFullName'
    SET @USERSID    = NEWID()
    SET @USERSIDTXT = CONVERT(VARCHAR(50), @USERSID)
    SET @WINDOWSSID = '$strSID'


    INSERT INTO [dbo].[User]
    ([User Security ID],[User Name],[Full Name],[State],[Expiry Date],[Windows Security ID], [Change Password],[License Type],[Authentication Email],[Contact Email])
    VALUES
    (@USERSID,@USERNAME,@FullName,0,'1753-01-01 00:00:00.000',@WINDOWSSID,0,0,'','');

    INSERT INTO [dbo].[User Property]
    ([User Security ID],[Password],[Name Identifier],[Authentication Key],    [WebServices Key],[WebServices Key Expiry Date],[Authentication Object ID])
    VALUES
    (@USERSID,'','','','','1753-01-01 00:00:00.000','');

    INSERT INTO [dbo].[Access Control]([User Security ID],[Role ID],[Company Name],[App ID],Scope)
    VALUES
    (@USERSID,'SUPER','',cast(cast(0 as binary) as uniqueidentifier),0);

";

$connection.Open();
$command = $connection.CreateCommand();
$command.CommandText = $sqlCommandText;

$command.ExecuteNonQuery();
$connection.Close();



$sqlCommandText
Другие вопросы по тегам