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”。