Как добавить другого пользователя 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