Sql server 在MS Access中创建SQLserver表的structureonly副本

Sql server 在MS Access中创建SQLserver表的structureonly副本,sql-server,ms-access,vba,structure,Sql Server,Ms Access,Vba,Structure,我正在寻找如何将SQL数据库中的一个表的结构复制为同一数据库中的另一个表的想法 我有一个SQL数据库(statistics),其中包含大量与Access数据库链接的大型事务表(即远高于2Gb)。我需要定期归档当前数据,并在SQL数据库中创建具有相同结构的新表 我可以通过“tbl课程会话详细信息”链接从CurrentDb导航到基础SQL“dbo.tbl课程会话详细信息”表,并通过连接字符串导航到SQL数据库 我已经研究了如何使用DoCmd.TransferDatabase来实现使用以下代码的结果:

我正在寻找如何将SQL数据库中的一个表的结构复制为同一数据库中的另一个表的想法

我有一个SQL数据库(statistics),其中包含大量与Access数据库链接的大型事务表(即远高于2Gb)。我需要定期归档当前数据,并在SQL数据库中创建具有相同结构的新表

我可以通过“tbl课程会话详细信息”链接从CurrentDb导航到基础SQL“dbo.tbl课程会话详细信息”表,并通过连接字符串导航到SQL数据库

我已经研究了如何使用DoCmd.TransferDatabase来实现使用以下代码的结果:-

dbsA As Database

sTableName = "tbl LESSON SESSION DETAILS"
dbType = "ODBC Database"
sDatabasePath = CurrentDb.TableDefs(sTableName).Connect
Set dbsA = DBEngine(0).OpenDatabase("MyDB", dbDriverCompleteRequired, _
             False, sDatabasePath)
sTableName = dbsA.TableDefs(sTableName).Name
sTableNameNew =  sTableName & "_New"

DoCmd.TransferDatabase acExport, dbType, _
      strTAbleName, acTable, dbsA, sTableNameNew, structureonly:=True

但是,当我运行此代码时,它失败了,因为“acExport”希望sTableName在CurrentDB中,而sTableNameNew在dbsA数据库中。更改CurrentDB可能是一个选项,但我没有找到任何方法。请在数据库端编写存储过程:

SELECT TOP 1 * INTO [tbl_LESSON_SESSION_DETAILS_NEW] FROM [tbl_LESSON_SESSION_DETAILS];
DELETE FROM [tbl_LESSON_SESSION_DETAILS_NEW];
然后从代码中执行存储的过程。您可以替换表名/w变量,然后从代码中可以随意命名新表

您可能想考虑将指针保存在原始表中,并将其存档到一个新的“备份”版本中,然后将其擦拭干净:

SELECT * INTO [tbl_LESSON_SESSION_DETAILS_BAK_05152011] FROM [tbl_LESSION_SESSION_DETAILS];
DELETE [FROM tbl_LESSION_SESSION_DETAILS];

在从原始表中删除新表之前,您可能希望加强这一点,以确保新表中仍然有数据…

您的一些参数顺序错误。您将数据库名称和源参数混合在一起。请尝试以下操作:

DoCmd.TransferDatabase acExport, dbType, strTAbleName, acTable, dbsA, sTableNameNew, structureonly:=True

上面的示例是VB.NET,下面是VBA: