日期:2014-05-18  浏览次数:20947 次

SqlServer2005用户sa登录失败
调试连接数据库失败。刚装sql2005时,选择windows登录。后面发现在代码中用sa连接数据库失败。于是更改sql设置:
  在sql设置中改为混合模式,用户名为sa,,密码为空。
  默认数据库连接为forcastserver(自己建的库),服务器角色勾选public、sysadmin
  用户映射勾选了forcastserver以及master等系统数据库,角色成员身份勾选db_owner、public
  状态登录选择启用。常规设置中去掉了下次登录必须更改密码。
  但测试还是连接失败。但在sql management studio express 中可以使用sa 连接到数据库。
  在vs2008中服务器资源管理器数据连接的节点中,右键点击akslj\sqlexpress.forcastserver.dbo-》修改连接-》选择使用sql server身份验证,用户名为sa,密码为空,数据库选择forcastserver,点击测试连接 ,提示连接成功。

现在不知道是什么原因了,sql、vs服务器资源管理器都可以通过sa连接数据库,为什么程序运行出错呢?

sql 2005 无法使用特殊主体sa
C# code

        //......上面读取数据代码省略
        string ConStr = "server=(local);user id=sa;pwd=;database=forcastserver";
        SqlConnection conn = new SqlConnection(ConStr);
        conn.Open();//执行到这里就出错 ,提示“未处理 sqlexception ,用户sa登录失败”

       string SqlIns;
       qlIns = "insert into tb_hourdata values('"+SID [i]+"','"+Ri_Shi [i]+"',)";//字段添加列表
       conn.Close();



错误详细信息如下:
C# code

未处理 System.Data.SqlClient.SqlException
  Message="用户 'sa' 登录失败。"
  Source=".Net SqlClient Data Provider"
  ErrorCode=-2146232060
  Class=14
  LineNumber=65536
  Number=18456
  Procedure=""
  Server="(local)"
  State=1
  StackTrace:
       在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
       在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
       在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
       在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
       在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
       在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
       在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory