日期:2014-05-16 浏览次数:20531 次
注:找这个解决方法很辛苦,有些笨拙,但还好,可以解决问题。适用于SQL Server 2000
原文出自:如何在链接服务器中使用 SQL Server 7.0 分布式查询来访问受保护的 Access 数据库(http://support.microsoft.com/?kbid=246255)
?
Microsoft SQL Server 7.0 版提供了通过使用 OLE DB 提供程序对不同数据库执行查询的功能。可以使用以下方式查询数据库:
要将链接服务器设置为访问受保护的 Microsoft Access 数据库,请使用下列步骤:
- 或 -
查询受保护的 Microsoft Access 数据库的步骤
注意:在运行此代码之前,必须将 User ID=<User ID> 和 password=<Strong Password> 更改为正确的值。请确保该用户 ID 具有在数据库中执行此操作所需的适当权限。
Dim adorst As New ADODB.Recordset
Dim adoconn As New ADODB.Connection
Private Sub Command1_Click()
Dim strConn As String
adoconn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=master;User Id=<User ID>;Password=<Strong Password>;"
adoconn.Execute "EXEC sp_addlinkedserver 'SecuredJetLS', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'c:\.....\MyDatabase.mdb'"
adoconn.Execute "EXEC sp_addlinkedsrvlogin 'SecuredJetLS', FALSE, NULL, 'UserName', 'Password'"
adoconn.Close
MsgBox "Successful Setup"
End Sub
Private Sub Command2_Click()
Dim SQL As String
' Using OpenQuery syntax.
SQL = " Select a.* from OPENQUERY(SecuredJetLS, 'Select * from MyTable') a"
' Using OpenRowset syntax.
' SQL = "SELECT * From OpenRowset('Microsoft.Jet.OLEDB.4.0','c:\....\MyDatabase.mdb'; 'UserName';'Password', MyTable)"
' Using four-part name syntax.
' SQL = "Select * from SecuredJetLS...MyTable"
adoconn.CursorLocation = adUseClient
adoconn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=master;User Id=<User ID>;Password=<Strong Password>;"
adorst.Open SQL, adoconn, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = adorst
End Sub
Private Sub Form_Load()
Command1.Caption = "Setup Linked Server"