运行程序时出现:Microsoft OLE DB Provider for SQL Server 用户登录‘sa’失败
用ADO连接本地数据库SQL Server2008,用VS2010在当前工程下建立了my_data.udl文件,然后双击后,测试数据库连接成功。代码中利用。
HRESULT hr;
  try
  {
  //实例化连接对象
  hr=m_pConnection.CreateInstance(__uuidof(Connection));
  if(SUCCEEDED(hr))
  {
  //设置连接串属性为UDL文件
  m_pConnection->ConnectionString="File Name=my_data1.udl";
  //设置等待连接打开的时间为20秒
 
  m_pConnection->ConnectionTimeout=20;
  hr=m_pConnection->Open("","","",adConnectUnspecified);
  //hr = m_pConnection->Open(strConnect,"","",NULL);
  if(FAILED(hr))
  {
  AfxMessageBox(TEXT("open fail!"));
  return TRUE;
  }
  }
  else 
  {
  AfxMessageBox(TEXT("createinstance of Connection fail!"));
  return TRUE;
  }
  }
  catch (_com_error e) 
  {
  _bstr_t bstrSource(e.Source());
  _bstr_t bstrDescription(e.Description());
  AfxMessageBox(bstrSource+bstrDescription);
  return TRUE;
  }

解决方案 »

  1.   

    将my_data1.udl的内容复制赋值给m_pConnection->ConnectionString试试。
      

  2.   

    OLE初始化了没有,在工程的初始化函数里加上:AfxInitOle();
      

  3.   

    改完以后出现:Microsoft OLE DB Provider for ODBC Drivers[Microsoft][ODBC驱动程序管理器]未发现数据源名称,并且为指定默认驱动程序
      

  4.   

    我在InitInstance里面初始化完COM了。
      

  5.   

    连接字符串里的驱动源改成类似Microsoft OLE DB1.1(具体忘了,就是后面有个版本号1.1),你在控制面板里的数据源里看看你的计算机里都有什么数据源,如果没有你建立一个数据源,但驱动是不变的
      

  6.   

    问题解决了,建立.udl文件的时候,双击.udl文件后,输入sa,当输入密码后,点上“允许保存密码”单选框即可。这样就把密码写入到了.udl文件中了。