2009-09-06 29 views
2

我已经做了MySQL的PHP​​编程公平一点,但我非常新的ASP /接入等移动的MS Access驱动从SQL Server站点jabry.com - 连接字符串问题

这要么是非常容易或不可能!

摘要:

我试图从公司网络上传输的Web应用程序的外部虚拟主机进行测试,不知道如何将网页连接到数据库的新服务器上。

背景:

我已经从公司服务器继承了(MS接入)数据库驱动的网站,并已要求拉开它,记录它,这样有故障问题的无单点与它(原程序员很久以前就消失了)

它位于企业网络上的ms sql服务器上。

我已经在www.jabry.com上获得了一些访问驱动的网站的免费托管,并希望将整个应用程序转移到那里,并将其用作测试平台。

我得到.mdb文件的副本并将其上传到jabry。我的问题是我应该使用什么连接到新的数据库?

这是旧连接指令:

dim objConn 
set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=UKNTHSQL900;UID=****User;PWD=***able8; DATABASE=PropertyRegister" 

JABRY推荐使用:(!)

Dim Conn 
Set Conn = Server.CreateObject("ADODB.Connection") 
strConnection = "DRIVER=Microsoft Access Driver(*.mdb);DBQ=" & Server.MapPath("/USERNAME/db/yourdatabase.mdb") 
oConn.Open(strConnection) 

我已经试过各种排列来得到这个工作,但几个小时后,以为我最好得到一些帮助。

当需要密码时,我可以使用dsnless连接吗?这两种服务器类型完全不兼容吗?请帮忙!

回答

3

此网站应该帮助:http://www.connectionstrings.com/access

dbfile=Server.MapPath("..\YourDB.mdb") 
    Set objConn=Server.CreateObject("ADODB.Connection") 

    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
       "Data Source=" & dbfile & ";Jet OLEDB:Database Password=PW" 

“.. \”部分取决于您正在运行代码的位置以及数据库所在的位置。

编辑注释:您也可以使用ADO来枚举数据库中保存的表和查询。

''cn = Your connection 
    Set rs = cn.OpenSchema(20, Array(Empty, Empty, Empty)) 

    Do While Not rs.EOF 
     '' This is vbscript/vba, as per comments, 
     '' change to rs("Table_Type") for ASP ... 
     If rs!TABLE_TYPE <> "View" Then 
     '' ... and this to rs("TABLE_NAME") ... 
     s = s & rs!TABLE_NAME & vbCrLf 
     End If 
     rs.MoveNext 
    Loop 

    rs.Close 
    Set rs = Nothing 

    '' ... and this to Response.Write s 
    MsgBox s 

更多信息:http://msdn.microsoft.com/en-us/library/aa165325%28office.10%29.aspx

+0

感谢您的快速反应人员。使用了您的建议并得到此错误: Microsoft JET数据库引擎错误'80040e37' Microsoft Jet数据库引擎无法找到输入表或查询'Person'。确保它存在并且它的名称拼写正确。 我猜的意思是它发现数据库正常,但找不到在查询中命名的表'Person'。这听起来正确吗? 现在我想我需要找到一个有权检查数据库的人是它应该是什么! – Derek 2009-09-06 17:16:54

+0

我已经加了一点。 – Fionnuala 2009-09-06 18:39:04

+0

@Derek:在尝试@ Remou建议列出可用表之后,如果在那里列出了Person表,那么您可能需要发布SQL,以及一些代码上下文。如果没有列出,那么你完全有一个不同的问题,可能与线上某处的权限(NTFS权限或Jet ULS)有关。 – 2009-09-06 22:17:46

0

你是如何获取.mdb文件?如果您从SQL Server数据库导出到Access数据库文件,它可能会或可能不会工作,具体取决于SQL Server数据库中使用的功能。如果仅用于“哑”存储,则Access数据库文件可以执行该操作,但如果它使用存储过程,用户定义的函数或触发器等功能,则Access数据库文件无法复制该功能。

如果Access数据库设置了密码,则必须在连接字符串中指定该密码。您指定的用户名是“admin”,所以在连接字符串应该是这个样子:

"Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("/YourUserName/db/TheDatabaseFileName.mdb") & ";Uid=Admin;Pwd=ThePassword;" 

当然,你必须用实际值来替代YourUserNameTheDatabaseFileNameThePassword部分。您还必须将数据库上载到服务器上的db文件夹中,该文件夹设置了正确的文件权限,以便Web应用程序能够写入数据库文件。

Web酒店推荐的是一个ODBC驱动程序,但如果可能的话,我宁愿使用JET驱动程序。你可以在这里找到很多Access连接字符串的例子:http://www.connectionstrings.com/access

+0

感谢您的快速反应。使用了您的建议并得到此错误: Microsoft JET数据库引擎错误'80040e37' Microsoft Jet数据库引擎无法找到输入表或查询'Person'。确保它存在并且它的名称拼写正确。 我猜的意思是它发现数据库正常,但找不到在查询中命名的表'Person'。这听起来正确吗? 现在我想我需要找到一个有权检查数据库的人是它应该是什么! – Derek 2009-09-06 17:17:50

+0

@ Guffa:你说的“JET”驱动程序是什么意思?真的没有这样的事情。当您从ASP或PHP或Access以外的任何其他存取Jet/ACE数据时,必须使用ODBC或OLEDB。没有其他选择。 OLEDB是ASP的常用选择,但也许托管站点为所有服务器端脚本语言提供最低公分母指令,并且可能其中一些不支持OLEDB。 – 2009-09-06 22:15:15

+0

@David:通过JET驱动程序我的意思是名为“Microsoft.Jet.OLEDB.4.0”的驱动程序,所以它是OleDb驱动程序。 – Guffa 2009-09-06 23:16:35

3

无论连接类型如何,Jabry db文件夹都不允许更新查询。他们必须要显示出一点压力才能让他们的工作得以订购!