昨天在测试程序的时候,出现 SQL 的连接错误。因为之前使用的是 Microsoft SQL Server 2000,现在测试用的是 Microsoft SQL Server 2005 ,所以第一反应感觉应该是连接字符串的改变。
搜索“SQL Server 2005 连接字符串代码”,可以找到很多内容。
因为之前使用的是 OLE DB 连接,所以依然使用这个。
Microsoft SQL Server 2000 下的连接字符串为:
Provider=SQLOLEDB;Data Source=server;Initial Catalog=database;User Id=user;Password=password;
或者
Provider=SQLOLEDB;Server=server;Database=database;Uid=user;Pwd=password;
Microsoft SQL Server 2005 下的连接字符串为:
Provider=SQLNCLI;Data Source=server;Initial Catalog=database;User Id=user;Password=password;
或者
Provider=SQLNCLI;Server=server;Database=database;Uid=user;Pwd=password;
变化,就在于 Provider 后的内容。
SQL Server 2005 连接字符串代码
作者: 来源: 发布日期:2008-04-07
SQL Native Client ODBC Driver
标准安全连接
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
您是否在使用SQL Server 2005 Express? 请在“Server”选项使用连接表达式“主机名称//SQLEXPRESS”。
受信的连接
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
/"Integrated Security=SSPI/" 与 /"Trusted_Connection=yes/" 是相同的。
连接到一个SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Driver={SQL Native Client};Server=myServerName//theInstanceName;Database=myDataBase;Trusted_Connection=yes;
指定用户名和密码
oConn.Properties(/"Prompt/") = adPromptAlways
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;
使用MARS (multiple active result sets)
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MARS_Connection=yes;
/"MultipleActiveResultSets=true/"与MARS_Connection=yes/"是相同的。
使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
验证网络数据
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;
使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Driver={SQL Native Client};Server=.//SQLExpress;AttachDbFilename=c://asd//qwe//mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Driver={SQL Native Client};Server=.//SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
SQL Native Client OLE DB Provider
标准连接
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
您是否在使用SQL Server 2005 Express? 请在“Server”选项使用连接表达式“主机名称//SQLEXPRESS”。
受信的连接
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; [Page]
/"Integrated Security=SSPI/"与/"Trusted_Connection=yes/"相同
连接到SQL Server实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。
Provider=SQLNCLI;Server=myServerName//theInstanceName;Database=myDataBase;Trusted_Connection=yes;
使用帐号和密码
oConn.Properties(/"Prompt/") = adPromptAlways
oConn.Open /"Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;
使用MARS (multiple active result sets)
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MarsConn=yes;
/"MultipleActiveResultSets=true/"和/"MARS_Connection=yes/"是相同的。
使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
验证网络数据
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;
使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Provider=SQLNCLI;Server=.//SQLExpress;AttachDbFilename=c://asd//qwe//mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Provider=SQLNCLI;Server=.//SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
SqlConnection (.NET)
标准连接
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
使用serverName//instanceName作为数据源可以指定SQL Server实例。
您是否在使用SQL Server 2005 Express? 请在“Server”选项使用连接表达式“主机名称//SQLEXPRESS”。
Standard Security alternative syntax
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
受信任的连接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
Trusted Connection alternative syntax
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
连接到一个SQL Server的实例
指定服务器实例的表达式和其他SQL Server的连接字符串相同。 [Page]
Server=myServerName//theInstanceName;Database=myDataBase;Trusted_Connection=True;
来自WinCE设备的安全连接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain//myUsername;Password=myPassword;
仅能用于CE设备。
带有IP地址的连接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
使用MARS (multiple active result sets)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;MultipleActiveResultSets=true;
使用ADO.NET 2.0作为MARS的模块。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
使用附加本地数据库文件的方式连接到本地SQL Server Express实例
Server=.//SQLExpress;AttachDbFilename=c://asd//qwe//mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
使用附加本地数据文件夹中的数据库文件的方式连接到本地SQL Server Express实例
Server=.//SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
为何要使用Database参数?如果同名的数据库已经被附加,那么SQL Server将不会重新附加。
使用在SQL Server Express实例上的用户实例
Data Source=.//SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|//mydb.mdf;User Instance=true;
数据库镜像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
Asynchronous processing
Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;
///
SQL Server 2005 Remote Access
在使用SQL Server 2005的远程连接时,如果遇到连接不上的问题,请按下列步骤操作:
1。server要保证在SQL Server Configuration Manager里的SQL Server 2005 Network Configuration里,确保TCP/IP的protocol是enable的。
2。client也要保证Native的TCP/IP protocol也enable。
3。当然要确保server的sql server服务已经开启。
4。server如果开了firewall,在exceptions里添加1433 port。
ADO连接SQL Server 2005 Express的连接字符串问题?
ADO连接SQL Server 2005 Express(默认实例安装)的字符串(OLE DB provider)如何写的???我是这么写的总是不能成功。
CString strConn="Provider=SQLNCLI;Server=.//SQLExpress;Database=MyTest;Trusted_Connection=yes";
我的SQL server express安装时候选择的是windows安全认证,没有设定sa密码的。
请指点。谢谢!
温柔的大海 发表于 2007-9-12 03:54
更改了一下就可以了,发现如果是默认实例安装,不要指明安装实例名字,否则出错,可能默认实例名字并不是SQLExpress吧。如果是命名实例才需要指明。关于连接字符串,大家可以参考这个网站的总结:www.connectionstrings.com
还发现,如果是默认实例安装,则连接字符串甚至不用给出server信息也可以连接本机SQL库。
strConn="Provider=SQLNCLI;Database=MyTest;Trusted_Connection=yes"也可以成功连接。发现有时候数据库连接很严格,有时候又很宽松,nnd。
try
{
CString strConn="Provider=SQLNCLI;Server=localhost;Database=MyTest;Trusted_Connection=yes;";
BSTR bstrConn=strConn.AllocSysString();
// 打开本地SQL Server 2005 Express
m_pConnection->Open(bstrConn,"","",adModeUnknown);
}
catch(_com_error e)
{
//AfxMessageBox(e.ErrorMessage());
AfxMessageBox(e.Description());
//AfxMessageBox(e.ErrorInfo());
return FALSE;
}
//stdafx.h
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
//主程序初始化函数
BOOL CADO2App::InitInstance()
{
AfxEnableControlContainer();
AfxOleInit();//初始化COM库
//--------------------------------------------
下面是ACCESS的:
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr)) {
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
下面是连接SQL SERVER的
CString strSQL;
HRESULT hr;
try
{
hr=m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TEST;Data Source=yjm";
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open(_bstr_t(strSQL),"","",-1);
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
//AfxMessageBox("connected~~");
其中:
----- ADO连接SQL Server的数据库连接字符串模板 ----------
身份验证模式为:"sql server和windows"
Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名
身份验证模式为:"仅windows"
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=SQL服务器名