Adatforráshoz való csatlakozás (ODBC)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Miután kiosztotta a környezetet és a kapcsolati kezelőket, valamint beállította a kapcsolati attribútumokat, az alkalmazás csatlakozik az adatforráshoz vagy illezőgéphez. Három funkcióval lehet összekapcsolni:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

További információért az adatforráshoz való csatlakozásokról, beleértve a különböző elérhető kapcsolati karakterlánc opciókat, lásd a Connection String Keywords használatával az SQL Server Native Client használatával.

SQLConnect

Az SQLConnect a legegyszerűbb kapcsolati függvény. Három paramétert fogad el: adatforrás nevet, felhasználói azonosítót és jelszót. Használd az SQLConnect-et , ha ez a három paraméter tartalmazza az adatbázishoz való csatlakozáshoz szükséges összes információt. Ehhez SQLDataSources segítségével állítsunk fel adatforrások listáját; kérje meg a felhasználót adatforrást, azonosítót és jelszót; majd hívja az SQLConnect-et.

Az SQLConnect feltételezi, hogy egy adatforrás neve, felhasználói azonosító és jelszó elegendő az adatforráshoz való csatlakozáshoz, és hogy az ODBC adatforrás tartalmazza az összes többi információt, amire az ODBC illesztőprogramnak szüksége van a kapcsolat létrehozásához. Az SQLDriverConnect-től és SQLBrowseConnect-től eltérően az SQLConnect nem használ kapcsolati karakterlánc-et.

SQLDriverConnect

Az SQLDriverConnect-et akkor használják, ha több információra van szükség az adatforrás nevén, felhasználói azonosítónál és jelszónél. Az SQLDriverConnect egyik paramétere egy kapcsolati karakterlánc, amely illesztő-specifikus információkat tartalmaz. Az alábbi okokból használhatod az SQLDriverConnect-et az SQLConnect helyett:

  • A csatlakozás idején megadni a driver-specifikus információkat.

  • Hogy kérje a meghajtót a felhasználótól a kapcsolati információkért.

  • Hogy ODBC adatforrás nélkül csatlakozzunk.

Az SQLDriverConnect kapcsolati karakterlánc kulcsszó-érték párok sorozatát tartalmazza, amelyek megadják az ODBC illesztőprogram által támogatott összes kapcsolati információt. Minden illesztőprogram támogatja a szabványos ODBC kulcsszavakat (DSN, FILEDSN, DRIVER, UID, PWD és SAVEFILE), valamint az illesztőgép-specifikus kulcsszavakat az illesztőprogram által támogatott összes kapcsolati információhoz. Az SQLDriverConnect adatforrás nélkül is használható a kapcsolatra. Például egy olyan alkalmazás, amely "DSN nélküli" kapcsolatot hozhat létre egy SQL Server példányához, hívhatja az SQLDriverConnectet egy olyan kapcsolati karakterlánc-vel, amely meghatározza a bejelentkezési azonosítót, jelszót, hálózati könyvtárat, szervernevet, amelyhez csatlakozhat, és az alapértelmezett adatbázist.

SQLDriverConnect használatakor két lehetőség van arra, hogy a felhasználótól bármilyen szükséges kapcsolati információt kérjünk:

  • Alkalmazás párbeszédablak

    Létrehozhatsz egy alkalmazási párbeszédablakot, amely kapcsolati információkat kér, majd az SQLDriverConnect-et NULL ablak fogantyúval és a DriverCompletion SQL_DRIVER_NOPROMPT-re állítva hívhatod. Ezek a paraméterbeállítások megakadályozzák, hogy az ODBC illezser saját párbeszédablakot nyissa. Ezt a módszert akkor használják, amikor fontos az alkalmazás felhasználói felületének irányítása.

  • Driver párbeszédablak

    Az alkalmazást úgy kódolhatod, hogy egy érvényes ablak handle-t továbbítson SQLDriverConnect-nek , és beállíthatod a DriverCompletion paramétert SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT vagy SQL_DRIVER_COMPLETE_REQUIRED-re. Ezután az illesztőprogram létrehoz egy párbeszédablakot, amely a felhasználó számára a kapcsolati információkat kéri. Ez a módszer leegyszerűsíti az alkalmazás kódját.

SQLBrowseConnect

Az SQLBrowseConnect, például az SQLDriverConnect egy kapcsolati sztringet használ. Az SQLBrowseConnect használatával azonban egy alkalmazás képes teljes kapcsolati karakterlánc-et építeni iteratív módon az adatforrással a futásidőben. Ez két dolgot tesz lehetővé az alkalmazás számára:

  • Saját párbeszédablakokat építs, hogy kérje ezt az információt, így megtartja az irányítást a felhasználói felület felett.

  • Keresse meg a rendszert az adott illesztőprogram által használható adatforrások között, akár több lépésben is.

    Előfordulhat például, hogy a felhasználó először a kiszolgálók hálózatában tallózik, majd a kiszolgáló kiválasztása után megkeresi a kiszolgálót az illesztőprogram által elérhető adatbázisok között.

Amikor az SQLBrowseConnect sikeres kapcsolatot teljesít, egy kapcsolati karakterlánc jelenik meg, amely a következő SQLDriverConnect hívásokon használható.

A SQL Server Native Client ODBC illeszerző mindig visszaadja SQL_SUCCESS_WITH_INFO egy sikeres SQLConnect, SQLDriverConnect vagy SQLBrowseConnect esetén. Amikor egy ODBC alkalmazás az SQLGetDiagRec-et a SQL_SUCCESS_WITH_INFO megszerzése után hívja az SQLGetDiagRec-et , a következő üzeneteket kaphatja:

5701
Azt jelzi, hogy az SQL Server a felhasználó kontextusát az adatforrásban definiált alapértelmezett adatbázisba helyezte, vagy a kapcsolat során használt bejelentkezési azonosító alapértelmezett adatbázisába, ha az adatforrásnak nem volt alapértelmezett adatbázisa.

5703
Jelzi, hogy a szerveren használt nyelv van.

Az alábbi példa mutatja, hogy a rendszergazdák sikeresen visszaküldött üzenetet adják vissza:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

Az 5701 és 5703 üzeneteket figyelmen kívül hagyhatod; Csak információs jellegűek. Azonban nem szabad figyelmen kívül hagyni a SQL_SUCCESS_WITH_INFO visszaküldési kódot, mert a 5701-en vagy 5703-on kívüli üzenetek is visszaküldhetők. Például, ha egy illedens csatlakozik egy szerverhez, amely egy SQL Server példányt futtat, elavult katalógusban tárolt eljárásokkal, az egyik hiba, amely SQLGetDiagRec-en keresztül egy SQL_SUCCESS_WITH_INFO után visszatér:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

Az alkalmazás hibakezelő funkciója SQL Server kapcsolatokhoz SQLGetDiagRec-et hív, amíg vissza nem adja SQL_NO_DATA. Ezután minden más üzenetre is reagálnia kell, kivéve azokra, amelyeknek pfNative kódja 5701 vagy 5703.