ADO Connection String.

I am currently having problems with my ADO connection string. I have searched all over the internet for a solution to this problem but I have yet to find a solution. Can someone help me with the proper configuration for a SQL OLEDB connection with a windows authentication? I have attached my C++ code file. I can send a copy of my SQL Server signon screen via e-mail.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147



// ConnectionString.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
// ConnectionStringSampleCpp.cpp
// compile with: /EHsc
//#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
#import "c:\Program Files\Common Files\System\ADO\msado15.dll"    no_namespace rename("EOF", "EOFile")

// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void ConnectionStringX();
_bstr_t GetState(int intState); 
void PrintProviderError(_ConnectionPtr pConnection);
void PrintComError(_com_error &e);

int main() {
   if (FAILED(::CoInitialize(NULL)))
      return 0;

   ConnectionStringX();
   ::CoUninitialize();
}

void ConnectionStringX() {
   // Define Connection object pointers.  Initialize pointers on define.  These are in the ADODB::  namespace
   _ConnectionPtr pConnection1 = NULL;
   _ConnectionPtr pConnection2 = NULL;
   _ConnectionPtr pConnection3 = NULL;
   _ConnectionPtr pConnection4 = NULL;

   // Define Other Variables
   HRESULT hr = S_OK;

   try {
      // Open a connection using OLE DB syntax.
      TESTHR(pConnection1.CreateInstance(__uuidof(Connection)));
      //pConnection1->ConnectionString = "Provider='sqloledb';Data Source='(local)';"
      //   "Initial Catalog='DSNPubs';Integrated Security='SSPI';";
      //pConnection1->ConnectionString = "Provider='sqloledb';Server='PCD-LT-MCERTINI\\SQLEXPRESS';"
	  //  "AttachDbFilename='C:\\SQL Server 2000 Sample Databases\\NORTHWND.mdf';Initial Catalog='northwind';Trusted_Connection=Yes;";
	  pConnection1->ConnectionString = "Provider='SQLOLEDB.1';Persist Security Info='True';User ID='mcertini';Initial Catalog='northwind';Data Source='PCD-LT-MCERTINI\\SQLEXPRESS';";
	  //pConnection1->ConnectionString = "Provider='SQLNCLI10';Data Source='NORTHWND.mdf';";
	  pConnection1->ConnectionTimeout = 30;
      pConnection1->Open("", "", "",adConnectUnspecified);
      printf("cnn1 state: %s\n", (LPCTSTR)GetState(pConnection1->State));

      // Open a connection using a DSN and ODBC tags.
      // It is assumed that you have create DSN 'DataPubs' with a user name as 
      // 'MyUserId' and password as 'MyPassword'.
      //TESTHR(pConnection2.CreateInstance(__uuidof(Connection)));
      //pConnection2->ConnectionString = "DSN=DataPubs;UID=MyUserId;PWD=MyPassword;";
      //pConnection2->Open("", "", "", adConnectUnspecified);
      //printf("cnn2 state: %s\n", (LPCTSTR)GetState(pConnection2->State));

      // Open a connection using a DSN and OLE DB tags.
      //TESTHR(pConnection3.CreateInstance(__uuidof(Connection)));
      //pConnection3->ConnectionString = "Data Source=DataPubs;";
      //pConnection3->Open("", "", "", adConnectUnspecified);
      //printf("cnn3 state: %s\n", (LPCTSTR)GetState(pConnection3->State));

      // Open a connection using a DSN and individual arguments instead of a connection string.
      // It is assumed that you have create DSN 'DataPubs' with a user name as 
      // 'MyUserId' and password as 'MyPassword'.
      //TESTHR(pConnection4.CreateInstance(__uuidof(Connection)));
      //pConnection4->Open("DataPubs", "MyUserId", "MyPassword", adConnectUnspecified);
      //printf("cnn4 state: %s\n", (LPCTSTR)GetState(pConnection4->State));
   }
   catch(_com_error &e) {
      // Notify user of any errors.  Pass a connection pointer accessed from the Connection.
      PrintProviderError(pConnection1);
      if (pConnection2)
         PrintProviderError(pConnection2);

      if (pConnection3)
         PrintProviderError(pConnection3);

      if (pConnection4)
         PrintProviderError(pConnection4);

      PrintComError(e);
   }

   // Cleanup objects before exit.
   if (pConnection1)
      if (pConnection1->State == adStateOpen)
         pConnection1->Close();

   if (pConnection2)
      if (pConnection2->State == adStateOpen)
         pConnection2->Close();

   if (pConnection3)
      if (pConnection3->State == adStateOpen)
         pConnection3->Close();

   if (pConnection4)
      if (pConnection4->State == adStateOpen)
         pConnection4->Close();
}

_bstr_t GetState(int intState) {
   _bstr_t strState; 
   switch(intState) {
   case adStateClosed:
      strState = "adStateClosed";
      break;
   case adStateOpen:
      strState = "adStateOpen";
      break;
   default:
      ;
   }
   return strState;
}

void PrintProviderError(_ConnectionPtr pConnection) {
   // Print Provider Errors from Connection object.
   // pErr is a record object in the Connection's Error collection.
   ErrorPtr  pErr = NULL;

   if ( (pConnection->Errors->Count) > 0) {
      long nCount = pConnection->Errors->Count;

      // Collection ranges from 0 to nCount -1.
      for ( long i = 0 ; i < nCount ; i++ ) {
         pErr = pConnection->Errors->GetItem(i);
         printf("Error number: %x\t%s\n", pErr->Number, (LPCSTR)pErr->Description);
      }
   }
}

void PrintComError(_com_error &e) {
   _bstr_t bstrSource(e.Source());
   _bstr_t bstrDescription(e.Description());

   // Print Com errors.  
   printf("Error\n");
   printf("\tCode = %08lx\n", e.Error());
   printf("\tCode meaning = %s\n", e.ErrorMessage());
   printf("\tSource = %s\n", (LPCSTR) bstrSource);
   printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}


The following is an error code I am receiving:

Error number: 80040e4d Login failed for user 'mcertini'.
Error
Code = 80040e4d
Code meaning = I
Source = Microsoft OLE DB Provider for SQL Server
Last edited on
Check out http://www.connectionstrings.com/.

When you use Windows Authentication you don't specify the username. OLEDB will use the token of the running process to authenticate against the server.
Topic archived. No new replies allowed.