1. 配置SQL Server外围应用服务器,开启SQL Server 2005远程连接功能:

 “配置工具”->“SQL Server外围应用配置器”-> 选择“服务和连接的外围应用配置器”->选择Database Engine节点下的 “远程连接”-> 选择“本地连接和远程连接”-> 选择“同时使用TCP/IP和named pipes”-> 点击确定,重新启动数据库服务。

2. 把登陆设置改为SQL Server 和 Windows 身份验证模式:

  打开SQL Server Management Studio管理器,点击服务器上面右键然后查看属性,在安全性选项里面对服务身份验证选择“SQL Server 和 Windows 身份验证模式”。

3.修改SQL Server sa的密码:

  在SQL Server Management Studio管理器中,展开服务器上的“安全性”->登陆名->在sa帐号上点右键属性,这样在“常规”的选择页中更改sa登陆帐号的密码。注意SQL Server2005中,不允许密码设置简单,否则会通不过。然后在选择页的“状态”的登录修改为启用。

4.设置SQL Server 的端口号

在SQL Server Configuration Manager管理器中,展开SQL Server 2005 Network Configuration项目 -> 单击下面的 Protocols for 'dbname' -> 在右侧的窗口中,右键单击"TCP/IP"项,选择"属性" -> 打开"TCP/IP properties"窗口 - > 单击"IP Address"选项卡 -> 将所有IP地址下面的 "TCP Port" 值设置成1433

5.确保开启SQL Server服务

在SQL Server Configuration Manager管理器中, 选中SQL Server 2005 Services,在右侧的窗口中启动SQL Server ('YourInstance'),

6. 修改连接字符串,在字符串中加入SQl Server 服务的端口号.

strConnection.Format("driver={SQL Server};Server=xx.xx.xx.xx,1433;DATABASE=mydatabase;UID=name;PWD=pwd");

7.连接coder:

stdafx.h中引用:

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

添加方法:

 

//   错误处理的   

inline void TESTHR(HRESULT _hr)    

 {

  if FAILED(_hr)   _com_issue_error(_hr);

}

void initADO()

{

try{

_RecordsetPtr  pRs("ADODB.Recordset");

_ConnectionPtr pCn("ADODB.Connection");

_variant_t     vtTableName("authors"), vtCriteria;

long           ix[1];SAFEARRAY      *pSa = NULL;
pCn->Open("Provider=SQLOLEDB;Server=127.0.0.1,1433;Database=MyTest;User ID=sa;pwd=sa;Integrated Security=SSPI","","",adModeUnknown);

//   Note   2,   Note   3

pSa = SafeArrayCreateVector(VT_VARIANT, 1, 4);

if (!pSa) _com_issue_error(E_OUTOFMEMORY);
//   为第三个元素赋值TABLE_NAME(索引值2).ix[0] = 2;

TESTHR(SafeArrayPutElement(pSa,   ix,   &vtTableName));
//由于Variant没有SafeArray的构造函数,所以手工设置Variant的数据类型和值。   

vtCriteria.vt = VT_ARRAY | VT_VARIANT;vtCriteria.parray = pSa;
pRs = pCn->OpenSchema(adSchemaColumns, vtCriteria, vtMissing);
long limit = pRs->GetFields()->Count;

for(long x = 0; x < limit; x++)

   printf("%d:   %s\n",   x+1,     ((char*)   pRs->GetFields()->Item[x]->Name));   //   Note   4  

 pRs->Close();

pCn->Close();

AfxMessageBox(_T("成功"));

}

 catch(_com_error &e)

{      

 printf("Error:\n"); 

 printf("Code = %08lx\n", e.Error());

 printf("Code meaning = %s\n", (char*)e.ErrorMessage()); 

 printf("Source = %s\n", (char*)e.Source());

printf("Description = %s\n", (char*)e.Description());

AfxMessageBox(_T("初始化失败"));}CoUninitialize();

}


// 错误处理的
inline void TESTHR(HRESULT _hr)
{
if FAILED(_hr) _com_issue_error(_hr);
}
void initADO()
{
try
{
_RecordsetPtr pRs("ADODB.Recordset");
_ConnectionPtr pCn("ADODB.Connection");
_variant_t vtTableName("authors"), vtCriteria;
long ix[1];
SAFEARRAY *pSa = NULL;
pCn->Open("Provider=SQLOLEDB;Server=127.0.0.1,1433;Database=MyTest;User ID=sa;pwd=sa;Integrated Security=SSPI","","",adModeUnknown);
// Note 2, Note 3
pSa = SafeArrayCreateVector(VT_VARIANT, 1, 4);
if (!pSa) _com_issue_error(E_OUTOFMEMORY);
// 为第三个元素赋值TABLE_NAME(索引值2).
ix[0] = 2;
TESTHR(SafeArrayPutElement(pSa, ix, &vtTableName));
//由于Variant没有SafeArray的构造函数,所以手工设置Variant的数据类型和值。
vtCriteria.vt = VT_ARRAY | VT_VARIANT;
vtCriteria.parray = pSa;
pRs = pCn->OpenSchema(adSchemaColumns, vtCriteria, vtMissing);
long limit = pRs->GetFields()->Count;
for(long x = 0; x < limit; x++)
printf("%d: %s\n", x+1,
((char*) pRs->GetFields()->Item[x]->Name));
// Note 4
pRs->Close();
pCn->Close();
AfxMessageBox(_T("成功"));
}
catch(_com_error &e)
{
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Code meaning = %s\n", (char*)e.ErrorMessage());
printf("Source = %s\n", (char*)e.Source());
printf("Description = %s\n", (char*)e.Description());
AfxMessageBox(_T("初始化失败"));
}
CoUninitialize();
}