Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用SQLConfigDataSource创建SQL Server DSN失败:关键字-值对无效_C++_Sql Server_Winapi_Odbc - Fatal编程技术网

C++ 使用SQLConfigDataSource创建SQL Server DSN失败:关键字-值对无效

C++ 使用SQLConfigDataSource创建SQL Server DSN失败:关键字-值对无效,c++,sql-server,winapi,odbc,C++,Sql Server,Winapi,Odbc,当Trusted\u Connection=yes并且没有用户id和密码时,它会工作。但当使用用户id和密码时,它会失败并显示错误消息: 关键字值对驱动程序的ConfigDSN、ConfigDriver或 ConfigTranslator失败 我尝试了UID字段的“用户id”、“UID”和“用户名”以及密码字段的“密码”、“PWD”,但都失败了。驱动程序不允许将用户名和密码存储为DSN的一部分,因为这不安全。因此,在创建DSN时不要指定UID和PWD属性,这些属性应该在连接阶段指定 static

Trusted\u Connection=yes
并且没有用户id和密码时,它会工作。但当使用用户id和密码时,它会失败并显示错误消息:

关键字值对驱动程序的ConfigDSN、ConfigDriver或

ConfigTranslator失败


我尝试了UID字段的“用户id”、“UID”和“用户名”以及密码字段的“密码”、“PWD”,但都失败了。

驱动程序不允许将用户名和密码存储为DSN的一部分,因为这不安全。因此,在创建DSN时不要指定UID和PWD属性,这些属性应该在连接阶段指定

static bool DBBase::CreateDSN(const TCHAR* sDriver, const TCHAR * sCreateDsnString)
{
    if (SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, sDriver, sCreateDsnString))
    {
        return true;
    }
    else
    {
        WORD wErrNum = 1;
        WORD cbRet;
        DWORD pErr;
        TCHAR szErrMsg[SQL_MAX_MESSAGE_LENGTH];
        while (SQLInstallerError(wErrNum, &pErr, szErrMsg, SQL_MAX_MESSAGE_LENGTH, &cbRet) != SQL_NO_DATA)
        {
            _WRITELOGN(szErrMsg);
            wErrNum++;
        };
        return false;
    }
}

    void test()
{
    const TCHAR* sDriver = _T("SQL Server");
    const TCHAR* sCreateDsnString = _T("DSN=myDSN\0Server=myIP\\MyDbInstance\0Database=myDB\0Trusted_Connection=no\0UID=sa\0PWD=sa\0\0");
    DBBase::CreateDSN(sDriver, sCreateDsnString);
}