Sql server 2008 使用OleDb提供程序从SQL Server插入ms Access
In Remou很好地描述了如何使用以下语法将数据从SQL Server表大容量插入MS Access表:Sql server 2008 使用OleDb提供程序从SQL Server插入ms Access,sql-server-2008,c#-4.0,ms-access,ado.net,ms-access-2003,Sql Server 2008,C# 4.0,Ms Access,Ado.net,Ms Access 2003,In Remou很好地描述了如何使用以下语法将数据从SQL Server表大容量插入MS Access表: SELECT fld1, fld2 INTO accessTable FROM [sql connection string].sqltable 在他文章中的示例中,Remou使用了ODBC关键字。如果我们要使用而不是 例如,我尝试了以下方法,但不起作用。它在调用ExecuteOnQuery()时给出错误“找不到可安装的ISAM”。AccessConn工作正常,因为我已经用Remou的O
SELECT fld1, fld2 INTO accessTable FROM [sql connection string].sqltable
在他文章中的示例中,Remou使用了ODBC关键字。如果我们要使用而不是
例如,我尝试了以下方法,但不起作用。它在调用ExecuteOnQuery()时给出错误“找不到可安装的ISAM”。AccessConn工作正常,因为我已经用Remou的ODBC示例对它进行了测试。问题似乎与SQL Server的连接字符串有关
OleDbConnection AccessConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\\TestFolder\\Test.mdb'");
OleDbCommand AccessCmd = new OleDbCommand("INSERT INTO Table2 SELECT * FROM [OLEDB;Provider=SQLNCLI10;Server=MyServer\\SQLEXPRESS;Database=TestDb1;Uid=TestUser;Pwd=TestPassword].Table1", AccessConn);
AccessCmd.ExecuteNonQuery();
AccessConn.Close();
谢谢。我怀疑使用OLEDB根本无法实现您所描述的功能 我测试了以下VBA代码,它成功了:
Sub odbcTest()
Dim cdb As DAO.Database, sql As String
Set cdb = CurrentDb
sql = _
"SELECT ID, LastName INTO myContacts " & _
"FROM [ODBC;Driver={SQL Server Native Client 10.0};Server=.\SQLEXPRESS;Database=myDb;Trusted_Connection=yes;].dbo.myContacts"
cdb.Execute sql, dbFailOnError
End Sub
然后,我测试了(我希望是)OLEDB等价物,它失败了,出现了与您相同的错误(“找不到可安装的ISAM”)
但是请注意ODBC编码>和OLEDB代码>方括号内的前缀:建立“正常”连接时不需要它们。下面的代码可以工作
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
…但是当我添加一个ODBC连接字符串开头的代码>子句
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "ODBC;Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
…由于“[Microsoft][ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”,因此失败
因此,ODBC上面的第一个子odbcTest()
代码示例中的code>前缀提示说,[ODBC;…]
方法只是从ODBC数据源中拉入数据的访问快捷方式,而无需显式创建链接表。(方括号内的内容是链接表的TableDef
对象的.Connect
属性。)
因此,据我所知,Access只支持ODBC链接表(而不支持OLEDB链接表),因此将此方法用于OLDEB将不起作用
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "ODBC;Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub