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
如果这里下面这个服务无法显示, 可能是 sql2013localdb 造成的卸载掉就ok了.
启动然后端口都开成1433 ,64bit 和32bit都是用这个设置 allip
第二部分 sqlapi 代码
我在sqlapi中连接串:
127.0.0.1\SQL2005EXPRESS@DaZong
注意是如果是string 里面的 \\ 代表 \
第三部分 登录失败跟踪
1.请设置登录失败到日志. ms sql server logon 18456 error
C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
注意这里是 状态 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