Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 将链接到SQL Server上的表的访问表,在访问数据更改时更新_Sql Server_Excel_Ms Access_Azure Sql Database - Fatal编程技术网

Sql server 将链接到SQL Server上的表的访问表,在访问数据更改时更新

Sql server 将链接到SQL Server上的表的访问表,在访问数据更改时更新,sql-server,excel,ms-access,azure-sql-database,Sql Server,Excel,Ms Access,Azure Sql Database,我有一个Access数据库,可以链接多个Excel文件,还可以连接到Google Analytics 我创建了一个Unison查询,将所有文件和表合并到一个表中 我需要此表能够被多个其他用户访问和刷新,通常是通过excel powerpivot表。我设置了一个Azure SQL server,并执行了导出向导来移动数据,这很有效,但我无法使用新数据更新数据(我需要每天进行更新)。简单地共享access db是行不通的,因为不是每个人都有相同的文件结构 如何获取Access中的表以链接到SQL,这

我有一个Access数据库,可以链接多个Excel文件,还可以连接到Google Analytics

我创建了一个Unison查询,将所有文件和表合并到一个表中

我需要此表能够被多个其他用户访问和刷新,通常是通过excel powerpivot表。我设置了一个Azure SQL server,并执行了导出向导来移动数据,这很有效,但我无法使用新数据更新数据(我需要每天进行更新)。简单地共享access db是行不通的,因为不是每个人都有相同的文件结构


如何获取Access中的表以链接到SQL,这样当它在Access中更新时,SQL中的表会更新?

手动将表导出到Azure SQL Server后,只需将该表链接到MS Access应用程序中,然后通过代码手动或自动运行操作查询以进行日常更新

  • 这是MSAccess.exe的一项众所周知的功能,它能够连接到几乎任何符合ODBC/OLEBD的数据源,从Oracle和SQL Server到Quickbooks和Salesforce。要求包括:

    • Azure SQL Server ODBC驱动程序或以前创建的
    • 确保连接的用户具有读/写表权限(在服务器上分配)
    • 初始设置的漫游向导(请参见“外部数据”下的ODBC数据库选项)

  • 动作查询

    SQL(另存为MS Access存储查询,可以双击对象手动运行)

    INSERT
    SELECT
    子句中的列数应相等,并且每个对应类型应匹配(省略自动编号)

    或者,如果需要在两个表源之间运行要求匹配列的
    UPDATE
    查询

    UPDATE mySQLServerTable s
    INNER JOIN myExceltable e ON e.MatchColumn = s.MatchColumn
    SET s.Col1 = e.Col1, s.Col2 = e.Col2, s.Col3 = e.Col3, ...
    
    VBA(在MS Access中自动运行存储查询)

    ”警告用户要插入/更新的行的NUMEBR
    DoCmd.OpenQuery“myActionQuery”
    '不警告用户
    执行“myActionQuery”,DbFailOneError
    

  • 相反,您可以运行SQL Server查询,使用从外部MS Access源插入到表中。这假设数据库可以从SQL Server所在的位置访问

    INSERT INTO INSERT INTO mySQLServerTable (Col1, Col2, Col3, ...)
    SELECT e.Col1, e.Col2, e.Col3, ... 
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                    'C:\path\to\myDatabase.accdb', 'admin', '', myExcelTable) AS e
    

    我会走另一条路。在Access中创建链接表,并将所有数据保留在一个位置。那么您的数据总是最新的。但是由于公式从数据中提取信息,我需要能够更新excel中的数据?请设置链接excel和SQL Server的MS Access应用程序。然后,运行“附加查询”将Excel链接表迁移到SQL Server链接表。@Parfait您有关于此链接的详细信息吗?这听起来是一个很好的解决方案,谢谢!
    INSERT INTO INSERT INTO mySQLServerTable (Col1, Col2, Col3, ...)
    SELECT e.Col1, e.Col2, e.Col3, ... 
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                    'C:\path\to\myDatabase.accdb', 'admin', '', myExcelTable) AS e