【问题标题】:Update server name connection access 2013更新服务器名称连接访问 2013
【发布时间】:2018-09-18 16:18:56
【问题描述】:

在寻找应该很容易的东西时遇到问题。

无论如何,目前我们的访问数据库已将表链接到不同的服务器。我需要升级到新的服务器名称和数据库名称。我试过了,效果很好。

最终用户测试并说我设置的 ODBC 连接失败。不知道为什么这样做。

任何帮助都会很棒。

【问题讨论】:

  • 是否在您的 PC 上为新服务器和新链接表设置了具有新名称的新 DSN?是否在用户的 PC 上进行了同样的操作?

标签: ms-access ms-access-2013


【解决方案1】:

默认情况下访问使用无 DSN 连接。

所以你需要启动链接表管理器。如果您按照默认提示创建 DSN(即 FILE dsn),则当 Access 链接表时,它们将转换为无 DSN 链接。

这意味着: 您不需要在启动时运行一些 VBA 代码。

您不需要创建没有 DSN 的连接,因为 Access 默认会创建和使用 DSN 链接。

您不必在每台计算机上设置 DSN。

所以只需启动链接表管理器。获取在您的计算机上工作的链接。一旦您确定链接正常工作,通常下一步就是创建已编译的 accDE。

在上面,以及可选的编译到 accDE 之后(如果你一直在使用的话),那么你可以简单地将新的前端分发到每个工作站,一切都应该很好。

您“可以”选择设置一些 VBA 代码来重新链接,但这不是必需的。

编辑: 这里需要的只是单击鼠标,然后输入 FILE dsn 的名称。 请记住,链接后访问不需要这个。 请记住访问将为您创建无 DSN 连接。 请记住,您不需要在目标计算机上复制或设置 DSN。

步骤如下:

单击 ODBC 按钮 - 功能区 - 外部数据选项卡

我们要链接到 sql server,而不是导入,所以:

现在这可能会绊倒用户,因为经常使用 windows 10,以下文件夹被锁定 - 你没有管理员权限,所以点击新建,不要使用这个默认文件夹,除非你以“管理员”身份启动访问",而你可能没有。所以打新:

现在选择您的 SQL 驱动程序。我使用旧的“sql 驱动程序”。如果您使用更新和更新的数据类型,那么您希望选择“native 11”或更高版本的驱动程序。但是,默认情况下,每个工作站上都​​没有安装这个驱动程序 - 但 sql 是。

所以浏览到我的文档,输入名称并保存 比如这个:

你现在回到这个对话框:

我们现在准备开始输入连接信息:

完成:

现在进行描述 - 我们不在乎!!!

但是,对于服务器名称,您必须输入

SQL 实例的服务器名称\名称。

如果您在本地运行 SQL express,则 localhost 可以用作服务器名称,而 sql server 的默认值是 SQLEXPRESS。您确实需要 sql 实例的名称和服务器名称(在我的示例中,localhost 是名称,但可以是 server01\SQLEXPRESS 或其他名称)

输入您的登录名+密码。 如果您使用“Windows 身份验证”,则无需登录。

确保您选择/设置了正确的数据库。如果该框显示为灰色,则您仅有权使用无法更改的默认选项。

现在点击下一步

现在选择您的桌子。不要忘记单击/检查“保存密码”选项

这就是屏幕截图。 结果是一个 DSN-LESS 连接。

========= 编辑2: 对于 EXISTING 表,并将它们指向新服务器?

您只需启动链接表管理器:

现在请确保您选择新位置的提示。 (此选项强制 + 允许您选择 NEW 或 将现有表链接到的不同服务器。

此时,您现在遵循 与上述完全相同的步骤来创建一个新的 链接,但这会让你链接+点 到现有链接的不同服务器 表格。

【讨论】:

  • 允许我将 DSN 保存为文件很痛苦。我可以只保存一个 OBDC 连接文件(请参阅链接),但是您所说的方法很痛苦。请帮忙? social.technet.microsoft.com/Forums/getfile/1076359
  • 创建 FILE dsn 是默认提示。通常在 Windows 10 上,文件 dsn 的“默认”位置是只读的,因此只需在第一个“选择数据源”对话框中点击“新建”即可。选择“sql server”。在下一个对话框中,点击浏览并使用说“我的文档”(因为默认 loc 在 Windows 10 上是只读的)。浏览到我的文档,输入您想要的任何名称,然后点击保存。现在您可以启动“下一步”按钮对话框来创建 DSN。正如我所说,访问不需要也不使用该 DSN。它仅在重新链接期间使用一次。因此,您不需要编写 VBA 代码等。
  • 另外,你为什么在那个屏幕截图中创建一个“用户”DSN?我说只是使用提供给你的默认值。如果您创建一个 FILE dsn(默认提示),那么您在链接后不需要任何代码或任何东西。
  • 我添加了一系列屏幕截图来显示步骤。对于表的任何服务器链接,其工作原理都是相同的。所以请注意我添加到答案中的新屏幕截图和编辑。
  • 那个 transferDatabase 在代码中有连接字符串。我会更改代码以使用链接表。 (开始一个新问题)。或者你要做的是链接你的表,然后从现有的链接表中“抓取”连接字符串。
【解决方案2】:

如果最终用户的 PC 上没有像您一样在其 PC 上设置 ODBC 数据源名称 (DSN),则连接可能会失败。

为了克服这个要求,我通常在标准模块中使用一些这样的代码

Const MY_CONNECTION As String = "ODBC;DRIVER={SQL Server};SERVER=TheServerName;DATABASE=TheDatabaseName;Trusted_Connection=Yes"

Public Sub ReConnect()

    Dim tdf As TableDef ' for linked tables
    Dim qdf As QueryDef ' for pass through queries

    With CurrentDb
        For Each tdf In .TableDefs
            With tdf
                If (.Attributes And dbAttachedODBC) = dbAttachedODBC Then
                    .Connect = MY_CONNECTION
                    .RefreshLink
                End If
            End With
        Next
        For Each qdf In .QueryDefs
            With qdf
                If .Type = dbQSQLPassThrough Or .Type = dbQSPTBulk Then
                    .Connect = MY_CONNECTION
                End If
                .Close
            End With
        Next
    End With

End Sub

我在分发 Access 前端之前手动运行此过程。

【讨论】:

  • 我可以把这个放在form_load()下面吗
  • 是的,您可以,但如果您在分发 Access 文件之前运行一次,则无需在最终用户的版本上重复运行。
  • 见下面我的回答。如果您过去没有使用过此类代码,则不需要 VBA 重新链接代码。这是一个“可选”的建议。您可以使用链接表管理器,它会为您创建无 DSN 链接。重新链接后,将前端重新分配到每个工作站很简单。如果您在开发工作站上使用链接表管理器创建并使用了默认 FILE dsn,则无需在每个工作站上设置或创建 DSN。使用带有文件 dsn 的链接表管理器时,Access 会自动将链接转换为 DSN。
  • 谢谢阿尔伯特,这对我来说真的很新鲜。我一直认为我必须将连接文件与数据库文件一起分发,因此我一直创建计算机 DSN(显然就像 OP)。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2021-12-08
  • 1970-01-01
  • 2015-09-18
  • 2014-12-22
  • 2020-10-02
  • 2017-01-09
相关资源
最近更新 更多