当前位置:编程学习 > C#/ASP.NET >>

SqlBulkCopy 无法访问目标表“NEWS_PRESS1”。

利用SqlBulkCopy 从服务器复制数据到本机  为什么无法访问本机的表   这是怎么回事?   是权限不够吗?  还是什么?   权限不够的话怎么设置.  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Webtest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string strsql = "select top 500000 Guid, NewsID, BigClassName, SmallClassName, Title, Corp, Author, StockCode, Original, UpdateTime, Content  from NEWS_PRESS";

                string connstring = "Data Source=服务器的连接 IP ;Database=服务器的数据库;Persist Security Info=True;User ID=ReportDBWriter;Password=#8AghRC]=r}^7M;MultipleActiveResultSets=True";

                string connstring1 = "Data Source=.   本机的;Initial Catalog=NewsDB;Persist Security Info=True;User ID=sa;Password=sasasa;MultipleActiveResultSets=True";

                DataTable dt = getStrToDt(connstring, strsql);

                if (dt != null && dt.Rows.Count > 0)
                {
                    AddDataTableToDB(connstring1, dt, "NEWS_PRESS1");
                }

            }
        }

        public bool AddDataTableToDB(string sDBconn, DataTable source, string tableName)
        {
            SqlTransaction tran = null;//声明一个事务对象.
            try
            {
                using (SqlConnection conn = new SqlConnection(sDBconn))
                {
                   conn.Open();//打开链接.
                    using (tran = conn.BeginTransaction())
                    {
                        using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))
                        {
                            copy.DestinationTableName = tableName;  //指定服务器上目标表的名称.
                            copy.BulkCopyTimeout = 1000;
                            copy.WriteToServer(source);             //执行把DataTable中的数据写入DB.
                            tran.Commit();                          //提交事务.
                            return true;                            //返回True 执行成功!
                        }
                       
                    }
                }
            }
            catch (Exception ex)   
            {
                if (null != tran)
                    tran.Rollback();
                return false;//返回False 执行失败!  
            }
        }

        public DataTable getStrToDt(string connString, string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            DataSet ds = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds);
            return ds.Tables[0];
        }

    }
}

报出异常  无法访问目标表“NEWS_PRESS1”。 --------------------编程问答-------------------- connstring1对应的数据库不存在这张表。
或是该表有架构,你没有加上架构名称。 --------------------编程问答-------------------- 关于批量插入的介绍网上一大把,这种问题要自己分析和解决。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,