简介(tldr;下面的问题)
首先,是的,我知道DAO:
所以按照这些思路回答对问题无济于事。
很久以来,我一直将偏好设置转移到nHibernate和其他连接数据的方式。但是,我在一个旧项目中,该计划的第一步是将数据从许多Access数据库迁移到单个SQL Server实例。很简单。 数据迁移已经完成并且可以正常工作。
但是,该应用程序是使用DAO连接到Access的VB6代码,在第一阶段中,我需要对此进行最小的更改。下一阶段(很快)是将整个应用程序转换为正确命中SQL的ASP.MVC站点。
当我四处寻找如何正确构造DAO OpenDatabase()函数以命中SQL Server时,所有答案都是上述的“您为什么要这样做?” “您应该学习ADODB!” “ DAO是给傻瓜的!” 胡说八道,从不解决所提出的实际问题。不幸的是,即使在特定论坛等站点上将其标记为“已解决”,原始问题仍保留在搜索引擎中。
如此...问题
鉴于所有这些,还有谁还记得如何使用DAO OpenDatabase连接到Sql Server吗?
是的,这相当于用支撑和钻头在一块木头上钻孔?当然,电钻会更好,更智能,更快,并且具有所有优点……但是有时需要采用旧的方法。
答案 0 :(得分:3)
我认为您可以使用的一种方法是使用ODBC连接。 在“管理工具”窗体控制面板y上,可以将ODBC源添加到SQL Server。 完成之后,您可以尝试以下操作:
Dim worksp As Workspace
Dim conexString As String
Dim base As Variant
Set worksp = DBEngine.Workspaces(0)
Let conexString = "OBDC;DSN=SQLDNSNAME;UID=;PWD="
Set base = worksp.OpenDatabase("BDDNAME", False, False, conexString)
答案 1 :(得分:3)
最近我不得不将具有DAO应用程序的VB6从SQL7迁移到SQL 2016,该过程几乎很简单。除了现在已过时的旧SQL语法外,我没有对代码进行任何更改。
我使用了ODBC。因此,这里是我如何使用DAO打开SQL连接:
connect = "DSN=<odbcname>;UID=<username>;PWD=<password>;DATABASE=<database>"
Set datab = rdoEnvironments(0).OpenConnection("", rdDriverCompleteRequired, False, connect)
这是我们的解决方案,因为在旧应用程序中所做的更改较少。请注意,这不是唯一的方法。
请记住,您必须使用32位ODBC驱动程序。如果您使用的是64位系统,请选择一个好的(C:\Windows\SysWOW64\odbcad32.exe
)。而且我想我已经使用了SQL Server
驱动程序。 SQL Native Client对于DAO来说太新了(我认为)。您可能需要尝试很多。