[AccessD] [dba-SQLServer] DSN Less Tables - Could not find installable ISAM

Gustav Brock gustav at cactus.dk
Fri Dec 20 00:49:04 CST 2019


Hi David

As the syntax is:

    UID=Username at YourInstanceName

I believe you should use:

    UID=SUPPORT-Dalyn at Healthcarenz.co.nz@prism-uat

If that will work - with the doubled ampersands - I don't know.

/gustav

-----Oprindelig meddelelse-----
Fra: David Emerson <newsgrps at dalyn.co.nz> 
Sendt: 19. december 2019 21:36
Til: 'Access Developers discussion and problem solving' <accessd at databaseadvisors.com>
Cc: Gustav Brock <gustav at cactus.dk>
Emne: RE: [AccessD] [dba-SQLServer] DSN Less Tables - Could not find installable ISAM

Hi Gustav,

I have confirmed that my user ID is SUPPORT-Dalyn at Healthcarenz.co.nz.  This is the reply from the IT guy:
" Can you please confirm that my UID for Azure is SUPPORT-Dalyn at Healthcarenz.co.nz.  It has been questioned that this looks like an email address."
" Yes it is, I have changed the uon to reflect the. Co.nz vs local."

He also confirmed that he installed the 64 bit version of the driver.

I cut and pasted your code into my application.

I used this call:
    Call AttachSqlServer("prism-uat.database.windows.net", "PRISM-UAT", "SUPPORT-Dalyn at Healthcarenz.co.nz", "MYPASSWORD")

This gave a connection string of:
ODBC;DRIVER=SQL Server Native Client
17.0;Description=Prism_UAT;APP=Microsoft® Access;SERVER= prism-uat.database.windows.net;DATABASE=
PRISM-UAT;UID=SUPPORT-Dalyn at Healthcarenz.co.nz@prism-uat.database.windows.ne
t;PWD=MYPASSWORD;Trusted_Connection=No;

This gave error 3151 - ODCB--connection to 'SQL Server Native Client 17.0prism-uat.database.windows.net' failed.

I also tried this call and got the same error message 3151:

    Call AttachSqlServer("prism-uat.database.windows.net", "PRISM-UAT", "SUPPORT-Dalyn", "MYPASSWORD")


Changing the connection string to this had the same result:
ODBC;DRIVER=SQL Server Native Client
17.0;Description=Prism_UAT;APP=Microsoft® Access;SERVER= prism-uat.database.windows.net;DATABASE=
PRISM-UAT;UID=SUPPORT-Dalyn at Healthcarenz.co.nz;PWD=MYPASSWORD;Trusted_Connec
tion=No;


I know I can connect to the data base because the following connection string works:

gADODBConnection.ConnectionString = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:prism-uat.database.windows.net,1433;Database=Prism-UAT;Ui
d=SUPPORT-Dalyn at Healthcarenz.co.nz;Pwd=MYPASSWORD;Encrypt=yes;TrustServerCer
tificate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword"

Any more thoughts?

Regards

David


-----Original Message-----
From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock via AccessD
Sent: Thursday, 19 December 2019 8:16 p.m.
To: 'Access Developers discussion and problem solving'
Cc: Gustav Brock
Subject: Re: [AccessD] [dba-SQLServer] DSN Tables - Could not find installable ISAM

Hi David

> "[ODBC Driver manager] data source name not found and no default 
> driver
specified"

That error means that the Data Source Name (DSN) you are specifying in your connection configuration is not being found in the windows registry.

But my connection method is DSN-less, so you are mixing the two methods.

Also, your UID seems to be an email address; Azure SQL knows nothing about that.
So, at least as a starting point, stick with the exact syntax from my example.

As for the driver install, and as I recall it, it installs by default both 32-bit and 64-bit if Windows is 64-bit. But you can install the 32-bit only, thus - if you run a 64-bit application - that will fail.

/gustav

-----Oprindelig meddelelse-----
Fra: David Emerson <newsgrps at dalyn.co.nz>
Sendt: 18. december 2019 22:49
Til: 'Access Developers discussion and problem solving'
<accessd at databaseadvisors.com>
Cc: Gustav Brock <gustav at cactus.dk>
Emne: RE: [AccessD] [dba-SQLServer] DSN Tables - Could not find installable ISAM

Hi Gustav,

I have had the Tech guy install SQL Server Native Client 17.0.

When I use a connection testing program this connection string connects to the server:

Driver={ODBC Driver 17 for SQL
Server};Server=tcp:prism-uat.database.windows.net,1433;Database=Prism-UAT;Ui
d=SUPPORT-Dalyn at Healthcarenz.co.nz;Pwd=MYPASSWORD;Encrypt=yes;TrustServerCer
tificate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword

But I am still getting the "Could not find installable ISAM" error when I use this in my table linking code.

When I use this one from your example in the connection test program it doesn't connect:

DRIVER=SQL Server Native Client 17.0;Description=PRISM;APP=Microsoft®
Access;SERVER=tcp:prism-uat.database.windows.net,1433;DATABASE=Prism-UAT;Tru
sted_Connection=No;UID=SUPPORT-Dalyn at Healthcarenz.co.nz;PWD=MYPASSWORD

The error message is "[ODBC Driver manager] data source name not found and no default driver specified"

I am using system.data.odbc as the provider.

What am I doing wrong?

Regards

David

-----Original Message-----
From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock via AccessD
Sent: Wednesday, 18 December 2019 8:02 p.m.
To: Access Developers discussion and problem solving
Cc: Gustav Brock
Subject: Re: [AccessD] [dba-SQLServer] DSN Tables - Could not find installable ISAM

Hi David

Yes. Use the latest ODBC driver and a connection string like:

DRIVER=SQL Server Native Client 17.0;Description=Your application name;APP=Microsoft® Access;SERVER=tcp:YourInstanceName.database.windows.net,1433;DATABASE=YourDb
Name;Trusted_Connection=No;UID=Username at YourInstanceName;PWD=YourPassword;

We have these two functions to control that and relink the tables and PT
queries:

<code>
' Create ODBC connection string from its variable elements.
'
' 2018-10-02. Cactus Data ApS, CPH.
'
Public Function ConnectionString( _
    ByVal Hostname As String, _
    ByVal Database As String, _
    ByVal Username As String, _
    ByVal Password As String) _
    As String

    Const AzureDomain   As String = ".windows.net"
    Const OdbcConnect   As String = _
        "ODBC;" & _
        "DRIVER=SQL Server Native Client 11.0;" & _
        "Description=Cactus TimeSag og Finans;" & _
        "APP=Microsoft® Access;" & _
        "SERVER={0};" & _
        "DATABASE={1};" & _
        "UID={2};" & _
        "PWD={3};" & _
        "Trusted_Connection={4};"
        
'    Examples (Note, optional encryption):
'        "ODBC;Driver=SQL
Server;Server=tcp:b8uros8p4x.database.windows.net;Database=cactus;UID=cactus
@ b8uros8p4x;Pwd=Password;Encrypt=yes"
'
'        "ODBC;Driver=SQL Server Native Client
17.0;Server=(localdb)\MSSQLLocalDB;Database=Test;Trusted_Connection=Yes"

    Dim FullConnect     As String
    
    If Right(Hostname, Len(AzureDomain)) = AzureDomain Then
        ' Azure SQL connection.
        ' Append servername to username.
        Username = Username & "@" & Split(Hostname)(0)
    End If
    FullConnect = OdbcConnect
    FullConnect = Replace(FullConnect, "{0}", Hostname)
    FullConnect = Replace(FullConnect, "{1}", Database)
    FullConnect = Replace(FullConnect, "{2}", Username)
    FullConnect = Replace(FullConnect, "{3}", Password)
    FullConnect = Replace(FullConnect, "{4}", IIf(Username & Password = "", "Yes", "No"))
    
    ConnectionString = FullConnect

End Function


' Attach all tables linked via ODBC to SQL Server or Azure SQL.
'
' 2016-04-24. Cactus Data ApS, CPH.
'
Public Function AttachSqlServer( _
    ByVal Hostname As String, _
    ByVal Database As String, _
    ByVal Username As String, _
    ByVal Password As String) _
    As Boolean

    Const cstrDbType    As String = "ODBC"
    Const cstrAcPrefix  As String = "dbo_"

    Dim dbs             As DAO.Database
    Dim tdf             As DAO.TableDef
    Dim qdf             As DAO.QueryDef
    
    Dim strConnect      As String
    Dim strName         As String
    
    On Error GoTo Err_AttachSqlServer
    
    Set dbs = CurrentDb
    strConnect = ConnectionString(Hostname, Database, Username, Password)
    
    For Each tdf In dbs.TableDefs
        strName = tdf.Name
        If Asc(strName) <> Asc("~") Then
            If InStr(tdf.Connect, cstrDbType) = 1 Then
                If Left(strName, Len(cstrAcPrefix)) = cstrAcPrefix Then
                    tdf.Name = Mid(strName, Len(cstrAcPrefix) + 1)
                End If
                tdf.Connect = strConnect
                tdf.RefreshLink
                Debug.Print Timer, tdf.Name, tdf.SourceTableName, tdf.Connect
                DoEvents
            End If
        End If
    Next
    
    For Each qdf In dbs.QueryDefs
        If qdf.Connect <> "" Then
            Debug.Print Timer, qdf.Name, qdf.Type, qdf.Connect
            qdf.Connect = strConnect
        End If
    Next
    Debug.Print "Done!"
    
    AttachSqlServer = True
    
Exit_AttachSqlServer:
    Set tdf = Nothing
    Set dbs = Nothing
    Exit Function
    
Err_AttachSqlServer:
    Call ErrorMox
    Resume Exit_AttachSqlServer
    
End Function
</code>

/gustav

-----Oprindelig meddelelse-----
Fra: AccessD <accessd-bounces at databaseadvisors.com> På vegne af David Emerson
Sendt: 17. december 2019 19:30
Til: 'Access Developers discussion and problem solving'
<accessd at databaseadvisors.com>
Emne: Re: [AccessD] [dba-SQLServer] DSN Tables - Could not find installable ISAM

Does anyone have experience with linking tables to Azure? 




More information about the AccessD mailing list