none
SOS!vc#连接远端Sql server2000的问题。 RRS feed

  • 问题

  •       小弟最近要写一个VC#程序,数据库服务端放在远程的服务器上面。由于我对vc#连接远端数据库不熟悉,所以我先在本地局域网上面的一台电脑上面安装了SQL SERVER2000做一下远端访问的测试,在网络该机IP为192.168.1.121,我已经在这台机子打了SQL Server SP4补丁,并且在SQL SERVER2000网络服务器那里启用了TCP/IP协议(端口为1433),命名管道协议.我写了下面的两个函数,一直发生SqlException异常,我已经把192.168.1.121的防火墙杀毒软件都关了,我把该代码拷贝到192.168.1.121机子上面运行却没有发生异常。我在网上看见有人说1433端口不能被监听(Listening)也会引起远端访问不成功,我用netstat -an 看了一下真的是1433没有被监听。请大家帮帮我是什么原因引起的,如果是1433没有被监听引起的那怎么才能让该端口被监听呢?帮我解答一下,万分感谢。

    public SqlConnection Conn()
            {
             
                string con_str="Data Source=192.168.1.121;Initial Catalog=Repair;uid=sa;pwd=sa;";/*密码为空;Repair为数据库名字*/
    /*

    换下面这两种写法也会发生异常:string con_str="Data Source=192.168.1.121;Initial Catalog=Repair;Integrated Security=SSPI;";

    string con_str="server=192.168.1.121;database=Repair;uid=sa;pwd=sa;";

    */


                try
                {
                    SqlConnection conn = new SqlConnection(con_str);             
                    return conn;
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }
    public int ExecSQL()
            {
                Program p = new Program();//Program为类的名字,
                SqlConnection conn = new SqlConnection();
                try
                {         
                conn=p.Conn();
                    conn.Open();
                string sql="insert into stu values('sss','sss')";  /*stu表有两个字段,分别为sno,sname,均为char类型,此表只是做测试用而已*/
                SqlCommand sqlCmd = new SqlCommand(sql, conn);

                int ret = (int)sqlCmd.ExecuteNonQuery();
                conn.Close();
                return ret;
                }
                catch(Exception ex)
                {
                    throw ex;
                }
            }

    2008年6月16日 4:50

答案

  • 在连接字符串中server字段的ip后面加上端口号,用逗号隔开。再看一下你的服务器远程连接设置是否打开。

    2008年6月17日 1:53