c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题.

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题.

2015/3/10

这几天遇到一点问题,无法访问ms sql server .

需要注意几个问题.

1.ms sql 的配置

安装了 sql- server2005 express ,安装默认会关闭网络连接的等.需要打开ip:1433端口.

账户密码需要使用,ms sql–server 登录登录.

2.sqlapi 的使用.

4.0.3 版本缺省使用odbc

Starting from version 4.0.3 SQLAPI++ Library uses ODBC as default API when working with SQL Server. If for some reason you want to use OLE DB or DB-Library, you should set "UseAPI" connection option before specifying SQL Server client or connecting to database:

SAConnection con;
con.setOption( "UseAPI" ) = "DB-Library";
con.setClient( SA_SQLServer_Client );
con.Connect(...);

 

3. 解决  18456  问题解析.

  

第一部分 数据库配置

sql-server 2005 安装.

sql-server 2005 management stduio express .微软这些都是免费的.

连接串:

AP-CHN-LP140098\SQL2005EXPRESS

.\SQL2005EXPRESS

127.0.0.1\SQL2005EXPRESS


错误代码:

28000 [Microsoft][SQL Server Native Client 10.0][SQL Server]?? ' ' ?????

实际原因是
sqlapi 4.0.1 

1     SAConnection con;
2     con.setOption( "UseAPI" ) = "ODBC";
3     SACommand cmd(&con,"select 1   "); 
4     try
5     {
6       con.Connect(dbname,name,pwd,SA_SQLServer_Client);
7       cmd.Execute();

注释掉 con.setOption( "UseAPI" ) = "ODBC";  就解决了。

错误的格式串:

42000 ????????????? "tcp:127.0.0.1\SQL2005EXPRESS,1433"??????
28000 ?? 'vip' ?????


42000 ????????????? "127.0.0.1\SQL2005EXPRESS"??????
28000 ?? 'vip' ?????


正确的sqlapi ++  ms sql server 串 

 char * dbname = "127.0.0.1\\SQL2005EXPRESS@master"; 




请参考 : 

http://www.sqlapi.com/ServerSpecific/SQLServer_OleDb.html#Connecting%20to%20a%20database

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第1张图片

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第2张图片

 

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第3张图片

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第4张图片

 

 

如果这里下面这个服务无法显示, 可能是 sql2013localdb 造成的卸载掉就ok了.

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第5张图片

启动然后端口都开成1433 ,64bit 和32bit都是用这个设置 allip

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第6张图片

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第7张图片

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第8张图片

  

第二部分 sqlapi 代码

 

我在sqlapi中连接串:

127.0.0.1\SQL2005EXPRESS@DaZong

注意是如果是string 里面的 \\ 代表 \

 

 

第三部分 登录失败跟踪

1.请设置登录失败到日志.  ms sql server logon  18456 error

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第9张图片

 

C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG

 

c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题._第10张图片

注意这里是 状态 8 :

清查表:

 

ERROR STATE

ERROR DESCRIPTION

2 and 5

Invalid userid

6

Attempt to use a Windows login name with SQL Authentication

7

Login disabled and password mismatch

8

Password mismatch

9

Invalid password

11 and 12

Valid login but server access failure

13

SQL Server service paused

18

Change password required

 

参考 :

http://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx

你可能感兴趣的:(c++ connect ms sql server sqlapi++ 连接配置 解决登录失败问题.)