日期:2014-05-17  浏览次数:20508 次

[求助]如何将远程服务器数据库中的部分数据读取到另外一个远程服务器数据库中
需要写.net后台,不是在sql中操作!
错误提示,Named Pipes Provider, error: 40 。设置没有问题,用sql可以连接,所以还是程序的问题。小弟初到公司乍到,各位大侠给看看吧
我的思路是,先连接一个远程服务器,然后在上面建立链接服务器,然后进行数据操作,应该没有错吧?
//创建链接服务器
        string linkserver = "EXEC master.dbo.sp_addlinkedserver @server = N'Link',@srvproduct=N'ms',@provider=N'SQLOLEDB',@datasrc=N'*.*.*.*:*'";
        string linklogin = "EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'Link',@locallogin = NULL,@useself = N'false',@rmtuser=N'*admin',@rmtpassword='*";
//这个没有用到,需要怎么操作?
        //判断链接服务器是否存在
        string linkexist = "select count(*) from master..sysservers where srvname='Link'";
        //链接字符串
        string connstring = "Server=Link;Database=Book;User ID=caijiadmin;PassWord=caiji@159.com";//远程数据库1
        string connstring1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename=d:\sun\Desktop\Admin2\App_Data\Database.mdf;Integrated Security=True;User Instance=True";//本地数据库1

        
        if(IsLink(connstring1,linkexist))//判断链接服务器是否存在。存在:进行数据读取;不存在:创建
        {
            int datanums = GetCounts(connstring, "select count(*) from Link.Book.dbo.BookInfo");
            count.Text = datanums.ToString();
        }
        else
        {
            if (LinkData(connstring1, linkserver))//创建链接服务器.创建成功:读数据;失败:
            {
                int datanums = GetCounts(connstring, "select count(*) from Link.Book.dbo.BookInfo");
                count.Text = datanums.ToString();
            }
            else
            { }
        }
    }
    //返回表的记录总数
    public int GetCounts(string connstring, string cmdstring)
    {
        using (SqlConnection conn = new SqlConnection(connstring))
        {
            SqlCommand cmd = new SqlCommand(cmdstring, conn);
            try
            {
                conn.Open();
 &nb