I had a requirement where I had to populate list of SQL Servers in a table in AX and all this had to be done from within AX.
I couldn’t find any support directly in AX, so I decided to use .Net classes for this purpose.
Here is a job that can help you achieve the same.
static void getListOfSQLServers(Args _args)
{
System.Data.Sql.SqlDataSourceEnumerator dataEnum;
System.Data.DataTable dataTable;
System.Data.DataRowCollection collection;
System.Data.DataRow row;
System.Object serverObj, instanceObj;
int sqlCount, i;
str serverName, instanceName;
;
dataEnum = System.Data.Sql.SqlDataSourceEnumerator::get_Instance();
dataTable = dataEnum.GetDataSources();
collection = dataTable.get_Rows();
sqlCount = collection.get_Count();
for (i = 0; i < sqlCount; i++)
{
row = collection.get_Item(i);
serverObj = row.get_Item("ServerName");
instanceObj = row.get_Item("InstanceName");
serverName = serverObj.ToString();
instanceName = instanceObj.ToString();
if (instanceName)
info(strfmt("%1\\%2", serverName, instanceName));
else
info(serverName);
}
}
I couldn’t find any support directly in AX, so I decided to use .Net classes for this purpose.
Here is a job that can help you achieve the same.
static void getListOfSQLServers(Args _args)
{
System.Data.Sql.SqlDataSourceEnumerator dataEnum;
System.Data.DataTable dataTable;
System.Data.DataRowCollection collection;
System.Data.DataRow row;
System.Object serverObj, instanceObj;
int sqlCount, i;
str serverName, instanceName;
;
dataEnum = System.Data.Sql.SqlDataSourceEnumerator::get_Instance();
dataTable = dataEnum.GetDataSources();
collection = dataTable.get_Rows();
sqlCount = collection.get_Count();
for (i = 0; i < sqlCount; i++)
{
row = collection.get_Item(i);
serverObj = row.get_Item("ServerName");
instanceObj = row.get_Item("InstanceName");
serverName = serverObj.ToString();
instanceName = instanceObj.ToString();
if (instanceName)
info(strfmt("%1\\%2", serverName, instanceName));
else
info(serverName);
}
}