在寻找一些应该很容易的东西时遇到问题。
无论如何,目前我们的访问数据库已将表链接到其他服务器。我需要升级到新的服务器名称和数据库名称。我尝试过,对我来说很棒。
最终用户进行了测试,并说我的ODBC连接设置失败。不确定为什么要这样做。
任何帮助都会很棒。
答案 0 :(得分:2)
默认情况下,访问使用无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是。
因此浏览至我的文档,输入名称并进行保存 例如:
您现在返回此对话框:
我们现在准备开始输入连接信息:
击中完成
:现在要描述-我们不在乎!
但是,对于服务器名称,您必须输入
SERVERNAME \ SQL INSTANCE的名称。
如果在本地运行SQL Express,则可以使用localhost作为服务器名称,而SQL Server的DEFAULT为SQLEXPRESS。您确实确实需要sql实例的名称,还需要服务器名称(在我的示例中,localhost是名称,但可以是server01 \ SQLEXPRESS或其他名称)
输入登录名+密码。 如果您使用的是“ Windows身份验证”,则无需登录。
确保选择/设置正确的数据库。如果该框是灰色的,则您仅有权选择将无法更改的默认选项。
现在点击下一步
现在选择表格。不要忘记单击/选中“保存密码”选项
这就是屏幕截图。 结果是DSN-LESS连接。
========= 编辑2: 对于现有表,并将它们指向新服务器?
现在请务必选择提示输入新位置。 (此选项会强制+允许您选择NEW或 将现有表链接到其他服务器。
此时,您现在就按照 与上述完全相同的步骤来创建新 链接,但这将使您链接+点 到其他服务器以进行现有链接 表。
答案 1 :(得分:1)
如果最终用户的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前端之前手动运行此过程。