Axapta 没有Active Directory用户的AX 2012 ODBC连接
我在尝试使用Microsoft Dynamics AX连接到外部数据库时遇到问题 我已经配置了dsn,并且可以连接sql server身份验证(不是active directory,因为它位于另一台服务器中),当我进行测试时,它就可以正常工作 但是,当我尝试在x++中使用dsn时,我会向loginProperty发送正确的用户和密码,但总是返回错误,这与active directory用户有关 这是我的代码:Axapta 没有Active Directory用户的AX 2012 ODBC连接,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,我在尝试使用Microsoft Dynamics AX连接到外部数据库时遇到问题 我已经配置了dsn,并且可以连接sql server身份验证(不是active directory,因为它位于另一台服务器中),当我进行测试时,它就可以正常工作 但是,当我尝试在x++中使用dsn时,我会向loginProperty发送正确的用户和密码,但总是返回错误,这与active directory用户有关 这是我的代码: LoginProperty loginProper
LoginProperty loginProperty;
OdbcConnection odbcConnection;
Statement statement;
ResultSet resultSet;
str sql, criteria;
SqlStatementExecutePermission perm;
TLExternalUser tlExternaUser;
TLExternalUserPwd tlExternalUserPwd;
str strConnectionString;
str dsn = "myDsnName";
str dsnUser = "sqlUser";
str dsnUSerPwd = "sqlPWD";
strConnectionString = strfmt("UID=%1;PWD=%2",dsnUser,dsnUSerPwd);
loginProperty = new LoginProperty();
loginProperty.setDSN(dsn);
loginProperty.setDatabase("MyDatabase");
loginProperty.setOther(strConnectionString);
odbcConnection = new OdbcConnection(loginProperty);
if (odbcConnection)
{
info("success");
}
else
{
throw error("Failed to log on to the database through ODBC.");
}
但我得到了这个错误:
[Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'DOMAIN\ACTIVEDIRECTORYUSER'.
我试图直接将用户名和密码传递给我的登录属性,但这种方法并不存在
如何使其工作?尝试将其更改为此并删除
loginProperty.setDSN(…)
:
编辑如果密码中有特殊字符,则需要使用反斜杠\
对其进行转义,或在引号前放置@
符号以指示字符串文字,如str myPass=@'MyP@ssw0rd';代码>
请参见此处我无法使其与dsn一起工作,因此我使用服务器,方式如下:
LoginProperty loginProperty;
OdbcConnection odbcConnection;
Statement statement;
ResultSet resultSet;
str sql ;
SqlStatementExecutePermission perm;
TLExternalUser tlExternaUser;
TLExternalUserPwd tlExternalUserPwd;
str strConnectionString;
str dbServer = 'myipServer';
str serverDbUser = 'myUser';
str serverDbUserPwd = 'MyPassword';
strConnectionString = strfmt("UID=%1;PWD=%2",serverDbUser,serverDbUserPwd);
loginProperty = new LoginProperty();
loginProperty.setServer(dbServer);
loginProperty.setDatabase("MyDatabase");
loginProperty.setOther(strConnectionString);
odbcConnection = new OdbcConnection(loginProperty);
我不明白为什么dsn不起作用您确定用户/通行证正确吗?字符串中是否有需要转义的特殊字符?请尝试像@'MyPassword'
那样放置密码。查看我的答案编辑。我确信我发送了正确的凭据。我尝试以这种方式传递密码,但不起作用。您没有按照我的建议更改连接字符串<代码>“DSN=%1;UID=%2;PWD=%3”,DSN,DSUSER,dsnUSerPwd
。它在我的测试中起作用了吗?您是否正确设置了DSN?嗯,我按照您的建议进行了尝试,同样的问题是,使用DSN dit不起作用,我当然正确设置了DSN,但它总是尝试使用active directory凭据连接,而不是自定义用户。在服务器上工作,我不在密码中使用外挂字符,因为我不包含,但是我会考虑稍后加入。
LoginProperty loginProperty;
OdbcConnection odbcConnection;
Statement statement;
ResultSet resultSet;
str sql ;
SqlStatementExecutePermission perm;
TLExternalUser tlExternaUser;
TLExternalUserPwd tlExternalUserPwd;
str strConnectionString;
str dbServer = 'myipServer';
str serverDbUser = 'myUser';
str serverDbUserPwd = 'MyPassword';
strConnectionString = strfmt("UID=%1;PWD=%2",serverDbUser,serverDbUserPwd);
loginProperty = new LoginProperty();
loginProperty.setServer(dbServer);
loginProperty.setDatabase("MyDatabase");
loginProperty.setOther(strConnectionString);
odbcConnection = new OdbcConnection(loginProperty);