Crear DSN

27/10/2008 - 20:11 por Pintamono | Informe spam
Que tal,

Tengo que crear dos DSN para una aplicacion externa, el problema es
que no he logrado hacerlo... he estado toda la mañana leyendo y
revisando pero no logro nada...

Lo hago de la siguiente manera:

En una clase defino estas constantes

private const string ODBC_INI_DSN_KEY_NAME = "DSN=";
private const string ODBC_INI_FILE_PREFIX_NAME = "\0File Prefix=";
private const string ODBC_INI_UID_NAME = "\0Uid=";
private const string ODBC_INI_PWD_NAME = "\0pwd=";
private const string ODBC_INI_DBQ_NAME = "\0DBQ=";
private const string ODBC_INI_ACUODBC_DRIVER = "AcuODBC Driver"; //The
Default Driver
private const string ODBC_INI_READONLY = "\0Read Only=";
private const string ODBC_INI_SERVER = "\0SERVER=";
private const string ODBC_INI_DNS_DESC ="\0DESCRIPTION=";

luego en un metodo le paso los parametros a utilizar

return SQLConfigDataSource((IntPtr)0, 4, OdbcDriverName,
ODBC_INI_DSN_KEY_NAME + DSName +
ODBC_INI_DNS_DESC + DSNDesc +
ODBC_INI_SERVER + DSNServ +
ODBC_INI_UID_NAME + DBUser +
ODBC_INI_PWD_NAME + DBPass +
ODBC_INI_DBQ_NAME + DBName +
ODBC_INI_READONLY + "FALSE" + "\0");

esto siempre me devuelve false...

al importar del API lo hago asi

[DllImport("ODBCCP32.dll")]
private static extern bool SQLConfigDataSource(IntPtr parent, int
request, string driver, string attributes);

Es indispensable que le pase un servidor, el nombre de usuario y
contraseña ya que estos DSN apuntaran a distintos servidores...

Alguna idea de como hacer que funcione?

O alguna idea de como hacer traza de esto para saber en que falla?

Les agradecere cualquier ayuda que me permita terminar esto.

Saludos!

PD: tiene que ser DSN ya que la aplicacion externa esta desarrollada
en 4D y solo se puede conectar a SQL por DSN.

Preguntas similare

Leer las respuestas

#1 Pintamono
28/10/2008 - 15:13 | Informe spam
Lo solucioné de la siguiente manera:

odbcconf.exe /a {CONFIGSYSDSN "SQL Server" "DSN=MiNombreDSN|
Description=MiDescripcionDSN|SERVER=MiServidor| Trusted_Connection=Yes|
Database=MiBaseDDatos"}

eso lo ejecuto en un proceso y paso por parametros las variables
MiNombre, etc..

El codigo:

private static void ConfigurarOBDC(string psTipo)
{
// psTipo solo indica cual de las dos conexiones que debo crear es la
que creare
string sMensaje="";
string sParametros ="\"SQL Server\"";
if (psTipo=="C")
{

sParametros += " \"DSN="+ ODBCConcentradorName;
sParametros += "|DESCRIPTION=" + ODBCConcentradorDesc;
sParametros += "|SERVER="+ODBCConcentradorServ;
sParametros += "|TRUSTED_CONNECTION=False";
sParametros += "|DATABASE="+BDCon;
//sParametros += "|UID="+UserCon;
//sParametros += "|PWD="+PassCon;
sMensaje = ODBCConcentradorName;
}
if (psTipo=="L")
{
sParametros += " \"DSN="+ ODBCLocalName ;
sParametros += "|DESCRIPTION=" + ODBCLocalDesc;
sParametros += "|SERVER="+MaquinaLocal+ODBCLocalServ;
sParametros += "|TRUSTED_CONNECTION=False";
sParametros += "|DATABASE="+BDLocal;
//sParametros += "|UID="+ UserLocal;
//sParametros += "|PWD=" + PassLocal;
sMensaje = ODBCLocalName;
}
sParametros += "\"}";

Process myProcess = new Process();
myProcess.StartInfo.FileName = "odbcconf.exe";
myProcess.StartInfo.Arguments = @" /a {CONFIGSYSDSN "+ sParametros;
try
{
myProcess.Start();
myProcess.WaitForExit();
Console.Write("Conexion ODBC "+sMensaje+" creada Exitosamente
");
}
catch (Exception ex)
{
Console.Write("Error al crear la conexion ODBC, Error:
"+ex.Message);
return;
}
finally
{
myProcess.Dispose();
}
}

On 27 oct, 16:11, Pintamono wrote:
Que tal,

Tengo que crear dos DSN para una aplicacion externa, el problema es
que no he logrado hacerlo... he estado toda la mañana leyendo y
revisando pero no logro nada...

Lo hago de la siguiente manera:

En una clase defino estas constantes

private const string ODBC_INI_DSN_KEY_NAME = "DSN=";
private const string ODBC_INI_FILE_PREFIX_NAME = "\0File Prefix=";
private const string ODBC_INI_UID_NAME = "\0Uid=";
private const string ODBC_INI_PWD_NAME = "\0pwd=";
private const string ODBC_INI_DBQ_NAME = "\0DBQ=";
private const string ODBC_INI_ACUODBC_DRIVER = "AcuODBC Driver"; //The
Default Driver
private const string ODBC_INI_READONLY = "\0Read Only=";
private const string ODBC_INI_SERVER = "\0SERVER=";
private const string ODBC_INI_DNS_DESC ="\0DESCRIPTION=";

luego en un metodo le paso los parametros a utilizar

return SQLConfigDataSource((IntPtr)0, 4, OdbcDriverName,
                ODBC_INI_DSN_KEY_NAME + DSName +
                ODBC_INI_DNS_DESC + DSNDesc +
                ODBC_INI_SERVER + DSNServ +
                ODBC_INI_UID_NAME + DBUser +
                ODBC_INI_PWD_NAME + DBPass +
                ODBC_INI_DBQ_NAME + DBName +
                ODBC_INI_READONLY + "FALSE" + "\0");

esto siempre me devuelve false...

al importar del API lo hago asi

[DllImport("ODBCCP32.dll")]
private static extern bool SQLConfigDataSource(IntPtr parent, int
request, string driver, string attributes);

Es indispensable que le pase un servidor, el nombre de usuario y
contraseña ya que estos DSN apuntaran a distintos servidores...

Alguna idea de como hacer que funcione?

O alguna idea de como hacer traza de esto para saber en que falla?

Les agradecere cualquier ayuda que me permita terminar esto.

Saludos!

PD: tiene que ser DSN ya que la aplicacion externa esta desarrollada
en 4D y solo se puede conectar a SQL por DSN.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida