Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 访问SQL copy_Sql Server 2005_Ms Access - Fatal编程技术网

Sql server 2005 访问SQL copy

Sql server 2005 访问SQL copy,sql-server-2005,ms-access,Sql Server 2005,Ms Access,我们有一个Access DB,它有一组本地表和输入表单等,用户在其中维护他们的数据 我们还有一个SQL数据库,它具有相同的表,用于在web搜索表单中显示数据 允许用户在保留本地工作副本的同时对SQL db进行修改的最佳方式是什么,这样用户就可以脱机工作,然后在对新版本的数据满意时推送文件 我的第一个想法是将SQL表添加为链接表,然后我可以截断(access就是这样做的)或删除每个表中的内容,然后对每个表进行插入 我是否可以从SQL上的access调用SP来截断表,因为我在运行删除时遇到问题 我真

我们有一个Access DB,它有一组本地表和输入表单等,用户在其中维护他们的数据

我们还有一个SQL数据库,它具有相同的表,用于在web搜索表单中显示数据

允许用户在保留本地工作副本的同时对SQL db进行修改的最佳方式是什么,这样用户就可以脱机工作,然后在对新版本的数据满意时推送文件

我的第一个想法是将SQL表添加为链接表,然后我可以截断(access就是这样做的)或删除每个表中的内容,然后对每个表进行插入

我是否可以从SQL上的access调用SP来截断表,因为我在运行删除时遇到问题

我真的很想让运行可重复的宏/sql调用的用户来决定


感谢您的帮助

您应该能够使用ADODB.Command对象来执行存储过程

编辑:

此示例是从


永远不要将MS Access链接表与MS SQL一起使用

它们不仅速度慢,而且访问会在引用的表上留下开放的客户端写游标。这是一种创建大量死锁的非常愚蠢的方法,但Access无论如何都会这样做

Microsoft在添加Access数据项目时显著改进了这一点,在这些项目中,整个后端都被SQL取代,Access只提供表单

如果您希望用户操作直接写回,那么ADP是目前为止最好的方法


如果您想在Access数据库中本地缓存更改,然后将它们发送到SQL,那么您将遇到一个更复杂的问题。您需要更具体地说明您希望如何实现同步—例如,如果两个用户进行脱机更改,并且在连接时谁获胜?

我不明白您为什么不直接链接到SQL Server数据并直接使用它,而不费力气维护它的第二个副本。这是做事情的标准访问方式——为什么您要抵制您正在使用的工具的自然功能?

单用户无需同步只需转储当前SQL数据并从Access文件中推送新数据(或仅推送更改的方式),然后我选择ADP选项。链接表(通过ODBC)使用SQL Server,Access可以正常工作。事实上,这是Microsoft推荐的使用Access作为SQL Server前端的场景:请参阅“Access数据项目(ADP)”标题下的内容。这很有趣。大约5年前,我将一个20人的DBA团队从Access迁移到SQL2000,发现链接表是一场灾难。也许这是他们在Access 2007中改进的东西,但从描述来看,它仍然像是先将所有数据下载到Jet。你有Access中的例子吗
Sub ADO_COMMAND_CONNECTION_TEST()
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
Dim strConn As String

    cmd.ActiveConnection = " DRIVER={SQL Server};" & _
      "Server=UKDUDE;DATABASE=pubs;UID=sa;PWD=;"
    cmd.CommandText = "byroyalty"
    cmd.CommandType = adCmdStoredProc
    cmd.Parameters.Refresh
    cmd.Parameters(1).Value = 25

    Set rs = cmd.Execute

' Recordset now has authors with 25% royalty.....

End Sub