[英]Need to change sql server database name in MS Access with Linked Tables
[英]Import MS ACCESS database tables into SQL server
我正在尝试将 MS Access 表导入 SQL 服务器。
我尝试了两种方法:
1)当我按照 SQL 服务器中的步骤 => 右键单击数据库名称 => 任务 => 导入数据...我将能够成功导入表。
但它正在删除所有主键和外键约束。
它只导入表列而不是键约束。 我希望将所有主键和外键应用于列,就像它在 MS Access 中一样。
2) 使用 SSMA(如本网站所示: https://support.office.com/en-us/article/migrate-an-access-database-to-sql-server-7bac0438-498a-4f53-b17b-cc22fc42c979 )。 但是 SSMA 版本和 SQL 服务器不匹配,我必须再次安装更高版本的 SQL 服务器。
有没有更简单的方法将所有这些表连同关键约束一起导入 SQL 服务器?
请帮忙。
提前致谢。
您没有提及您拥有的 Access 版本。 而且你也没有提到你有什么版本的 SQL 服务器。 对于 SQL 服务器的任何最新相关版本,您应该能够使用 + 运行 SSMA。 它确实有/让您选择使用哪个版本的 SQL 服务器。 在 Access 2010 之前并包括在内,有一个“内置”数据库导出可与 SQL 服务器一起使用,但在 Access/office 2010 之后,您必须使用 SSMA,因为访问内置的 sql 迁移工具已被删除。
所以,你注意到由于某种原因你不能使用 SSMA,但是没有提到你使用的是什么版本的 access/sql 服务器,那么我们的手(和建议)就被绑在这里了。
希望这会有所帮助,即使它是一个简单的模板。
我不得不将许多公司的访问数据库迁移到 sql 服务器。 我什至构建了工具来协助这个过程。 这是一个巨大的颈部疼痛,但在实际工作方面并不是非常困难。 您可以编写 vba 代码来轻松获取表定义,然后构建此模板将是一件容易的事。
IF OBJECT_ID('tempdb..#yourtableinAccess') IS NOT NULL
DROP TABLE #yourtableinAccess;
CREATE TABLE #yourtableinAccess
(
--Model After your local access table
);
CREATE TABLE yourtableinSQL
(
--Model After your local access table
);
INSERT INTO #yourtableinAccess
SELECT
-- build your select statement
-- be conscious of autoincrements and what not.
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'UNC PATH TO YOUR ACCESS FILE';'admin';'', YourAccessTableName)
MERGE yourtableinSQL AS TargetTable
USING #yourtableinAccess AS SourceTable
ON TargetTable.PRIMARYKEY = SourceTable.PRIMARYKEY
WHEN MATCHED
AND (
ISNULL(TargetTable.COLUMN, 0) <> ISNULL(SourceTable.COLUMN, 0)
OR ISNULL(TargetTable.COLUMN, 0) <> ISNULL(SourceTable.COLUMN, 0)
-- etc etc etc
-- note isnull might not be appropriate. Just review your data structure
)
THEN
UPDATE
SET
TargetTable.[COLUMN] = SourceTable.[COLUMN]
,TargetTable.[COLUMN] = SourceTable.[COLUMN]
-- etc etc etc
-- build your data structure here too
WHEN NOT MATCHED
THEN
INSERT
(
)
VALUES
(
);
注意 - 我使用了合并语句,因为我需要在每个表的迁移过程中获取数据的增量,所以一个简单的插入到 wast 就足够了。
无论如何,快乐的编码!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.