SQL SERVER数据库在远端计算机上要求通过程序能够从本地远程访问SQL SERVER,将其中数据库TEST中的TEST_table1,TEST_table2,……TEST_table6等6张表中的数据导到本地access文件中1、本地access文件能否通过程序创建?
2、access文件中的表能否通过程序创建?
3、有的表数据记录会比较多,要求导出到本地的速度不能太慢欢迎提出解决思路
2、access文件中的表能否通过程序创建?
3、有的表数据记录会比较多,要求导出到本地的速度不能太慢欢迎提出解决思路
3、VC创建连接对象,分别连接SQL\Aceess,ADO的连接方式网上很多。然后就是SQL的读与Access的写了。至于速度,得看你如何优化了。
呵呵,以前没做过VC的数据库设计,没办法,进度有要求通过程序创建Access文件已经搞定了,就不麻烦了现在的问题是怎么把远端SQL的数据导入到本地access文件中?m_pCommand->CommandText = (_bstr_t)"insert into openrowset('Microsoft.Jet.OLEDB.4.0','TEST.mdb';'admin';'',TEST_table1) select * from TEST";上面这句通不过啊?
2 创建表也肯定是可以的,不过如果是想从SQLSever中读取表的信息,然后通过程序在access文件中自动生成表,是会有问题的,一是字段类型名不一样,需要添加判断替换过程,二是access中创建表的语句列名数是有限制的,至少office2003的access是如此。
3 用insert into openrowset。这样的语句有个问题,因为你的access文件在本地,所以你讲这个查询字符串提交远端SQL执行的时候,access文件的本地路径对远端的sql来说是没有意义的。据说可以通过共享,设置共享连接路径来解决,但我没有验证过。
一般的方法就是本机分别创建SQL和access的连接对象和记录集,先从远端SQLSever中查询出某表的字符集,逐列读取信息,然后用access的连接对象实现插入。
{
m_pRecordset_access->AddNew();
for (int i = 0; i < m_pRecordset_sql->Fields->Count; i++)
{
vValue = m_pRecordset_sql->GetCollect(_variant_t((long)i));
m_pRecordset_access->PutCollect(_variant_t((long)i), vValue);
}
m_pRecordset_access->Update();
m_pRecordset_sql->MoveNext();
}
在程序中采用dtsrun 命令提示实用工具执行包。