Podręcznik Application Development Guide: Call Level Interface (CLI)

| | |

Parametr konfiguracyjny Trusted_Connection interfejsu CLI/ODBC

|

|
|
Opis parametru:
|
Umożliwia realizację połączenia z bieżącym uwierzytelnionym użytkownikiem. |
|
Składnia:
|
Trusted_Connection=Yes | |
Uwaga:
|
Ten parametr nie działa, jeśli zostanie ustawiony w pliku db2cli.ini. Należy zamiast tego podać go w łańcuchu połączenia dla funkcji SQLDriverConnect().
|
|
Ustawienie domyślne:
|
interfejs DB2 CLI używa identyfikatora użytkownika i hasła podanego w łańcuchu połączenia dla funkcji SQLDriverConnect(), a nie bieżącego uwierzytelnionego użytkownika. |
|
Informacja o użyciu:
|
|

Aplikacje interfejs DB2 CLI łączące się z bazą danych zazwyczaj łączą się za pomocą funkcji SQLDriverConnect(). Jednym z argumentów wejściowych tej funkcji jest wartość DriverCompletion, która określa, kiedy okno zostanie otwarte. Poniżej zostały podane wartości argumentu DriverCompletion:

| | |
Uwaga:
|
Szczegółowe informacje o argumencie DriverCompletion można znaleźć w dokumentacji funkcji SQLDriverConnect().
|

Niektóre aplikacje, na przykład występujące w środowisku Kerberos, mogą wymagać, aby użytkownik mógł połączyć się z serwerem DB2 UDB bez podawania identyfikatora użytkownika lub hasła. |Jeśli aplikacja używa opcji SQL_DRIVER_NO_PROMPT w wywołaniu funkcji SQLDriverConnect(), następuje próba połączenia bez uwierzytelnienia użytkownika. Wtedy parametr jest niepotrzebny.

|

W przypadku korzystania z aplikacji innej firmy, gdy poziom zapytania używany przez aplikację różni się od SQL_DRIVER_NO_PROMPT, interfejs DB2 CLI otworzy okno z żądaniem podania brakujących informacji. |Ustawienie parametru Trusted_Connection na wartość Yes poprzez podanie go w wejściowym łańcuchu połączenia dla funkcji SQLDriverConnect() ("Trusted_Connection=Yes") spowoduje, że interfejs DB2 CLI zignoruje dowolny łańcuch identyfikatora użytkownika lub hasła (włącznie z pustymi łańcuchami) w łańcuchu połączenia oraz zignoruje poziom zapytania funkcji połączenia. interfejs DB2 CLI używa bieżącego uwierzytelnionego użytkownika podczas próby połączenia z bazą danych. |Jeśli próba połączenia nie powiedzie się, użytkownik zostanie zapytany o identyfikator użytkownika i hasło.

|

Ten parametr jest używany tylko w łańcuchu połączenia funkcji SQLDriverConnect(), ustawienie go w pliku |db2cli.ini nie ma żadnego skutku.

|
|

Aktualizacja tabeli diagnostycznej dla funkcji SQLDescribeParam (CLI)

Funkcja SQLDescribeParam() zwraca opis znacznika parametru powiązanego z przygotowaną instrukcją SQL.

W tabeli diagnostycznej został zaktualizowany stan SQLSTATE HYC00.

Diagnostyka

Tabela 24. Stany SQLSTATE funkcji SQLDescribeParam
SQLSTATE Opis Wyjaśnienie
HYC00 Sterownik nie może wykonać operacji Procedury zapisane w bazie dla funkcji schematu są niedostępne na tym serwerze. Zainstaluj je na serwerze i upewnij się, że są dostępne.

Asynchroniczne wykonywanie funkcji interfejsu CLI

Interfejs CLI (Call Level Interface) programu DB2 (DB2 CLI) umożliwia asynchroniczne uruchamianie pewnego podzbioru funkcji. Sterownik interfejsu DB2 CLI zwraca sterowanie do aplikacji po wywołaniu funkcji, ale zanim funkcja zakończy działanie. Funkcja zwraca wartość SQL_STILL_EXECUTING za każdym razem, gdy jest wywoływana, aż zakończy działanie, kiedy to zwraca inną wartość (na przykład SQL_SUCCESS).

Wykonywanie asynchroniczne jest korzystne tylko w jednowątkowych systemach operacyjnych. Aplikacje działające w wielowątkowych systemach operacyjnych powinny uruchamiać funkcje w osobnych wątkach. Asynchronicznie można wykonywać te funkcje, które podczas normalnej pracy wysyłają żądanie do serwera, a następnie czekają na odpowiedź. Funkcja działająca asynchronicznie zamiast czekać zwraca sterowanie do aplikacji. Aplikacja może wykonywać inne zadania albo zwrócić sterowanie do systemu operacyjnego i przy użyciu przerwania odpytywać okresowo funkcję do czasu uzyskania kodu powrotu innego niż SQL_STILL_EXECUTING.

Obsługa wykonywania asynchronicznego funkcji interfejsu CLI jest dostępna w programie DB2 Universal Database (UDB), począwszy od wersji 8.2 z pakietem poprawek 1 (odpowiednika wersji 8.1 z pakietem poprawek 8). Dokumentację tej opcji można znaleźć w Centrum informacyjnym programu DB2 UDB, wersja 7, pod adresem http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp. Wszystkie informacje z dokumentacji wersji 7 odnoszą się również do wersji 8.2 z pakietem poprawek 1 (odpowiadającej wersji 8.1 z pakietem poprawek 8) i nowszych. Centrum informacyjne programu DB2, wersja 8, nie zawiera żadnej dokumentacji dotyczącej tej opcji.

Atrybut połączenia SQL_ATTR_PING_DB

SQL_ATTR_PING_DB (DB2 CLI, wersja 8.2)

Atrybut SQL_ATTR_PING_DB jest to 32-bitowa liczba całkowita, której używa się łącznie z funkcją SQLGetConnectAttr() do uzyskiwania czasu odpowiedzi sieci dla istniejącego połączenia między klientem DB2 UDB a serwerem DB2 UDB. Czas odpowiedzi jest podawany w mikrosekundach.

Jeśli połączenie zostało wcześniej nawiązane, a następnie zerwane przez bazę danych, zwracana jest wartość 0. Jeśli połączenie zostało zamknięte przez aplikację, zgłaszany jest stan SQLSTATE 08003. Ten atrybut połączenia może zostać zwrócony przez funkcję SQLGetConnectAttr(), ale nie można go ustawiać przy użyciu funkcji SQLSetConnectAttr(). Każda próba ustawienia tego atrybutu spowoduje otrzymanie stanu SQLSTATE HYC00 (Sterownik nie może wykonać operacji).

Funkcja SQLBindParameter (CLI)

W dokumentacji funkcji SQLBindParameter opis parametru wejściowego jest niepoprawny. Poprawny opis ma następującą postać:

Parametr wejściowy
Wartość ColumnSize równa 0 oznacza, że interfejs DB2 CLI będzie używał maksymalnej długości dopuszczalnej dla typu SQL dostarczanego jako parametr wielkości kolumny lub procedury zapisanej w bazie. Interfejs DB2 CLI wykona wszelkie niezbędne konwersje, używając tej wielkości.

Funkcja SQLMoreResults (CLI)

W dokumentacji funkcji SQLMoreResults odwołanie do atrybutu instrukcji SQL_ATTR_ROW_ARRAY_SIZE jest niepoprawne. Poprawnym atrybutem instrukcji jest SQL_ATTR_PARAMSET_SIZE. Sekcja opisująca składnię powinna wyglądać następująco:

Ta funkcja może być używana do sekwencyjnego zwracania wielu wyników w tabeli wynikowej w przypadku wykonywania:

Dodatkowe atrybuty środowiska

Poniższe atrybuty połączenia interfejsu CLI są również obsługiwane jako atrybuty środowiska interfejsu CLI:

Informacje na temat tych atrybutów można znaleźć w dokumentacji atrybutów połączeń interfejsu CLI w Centrum informacyjnym DB2 lub w podręczniku CLI Guide and Reference Volume 2.

Wymagania dotyczące dynamicznych kursorów przewijalnych

Aby możliwe było wykonywanie operacji aktualizacji i usuwania wierszy w tabeli wynikowej dynamicznego kursora przewijalnego, instrukcja UPDATE lub DELETE musi zawierać wszystkie kolumny co najmniej jednego klucza unikalnego w tabeli podstawowej. Może to być klucz podstawowy lub dowolny inny klucz unikalny.

Parametr konfiguracyjny RetCatalogAsCurrServer interfejsu CLI/ODBC

Opis parametru:
Funkcje katalogu zwracają dla kolumn katalogu wartość CURRENT SERVER zamiast wartości pustej.
Składnia parametru w pliku db2cli.ini:
RetCatalogAsCurrServer= 0 | 1
Ustawienie domyślne:
Jeśli docelowy menedżer DBMS zwróci wartość pustą dla kolumn katalogu, wartość CURRENT SERVER nie zostanie zapełniona.
Informacja o użyciu:
Jeśli funkcje katalogu dla docelowego menedżera DBMS zwrócą wartość pustą dla kolumn katalogu, nadanie parametrowi RetCatalogAsCurrServer wartości 1 spowoduje, że menedżer DBMS zwróci w zamian wartość CURRENT SERVER.

Załóżmy na przykład, że funkcja katalogu SQLTables() zwraca tabelę wynikową, w której wartości w kolumnie TABLE_CAT są puste. Nadanie parametrowi RetCatalogAsCurrServer wartości 1 spowoduje, że menedżer DBMS zwróci w kolumnie TABLE_CAT wartość CURRENT SERVER.

Uwaga:
Ten parametr jest obsługiwany przez program DB2 UDB dla systemów Linux, UNIX(R) i Windows(R) w wersji 8.2 z pakietem poprawek 3 (odpowiednik wersji 8.1 z pakietem poprawek 10) i w wersjach nowszych.

Parametr konfiguracyjny ReceiveTimeout interfejsu CLI/ODBC

Opis parametru:
Określa (w sekundach) czas oczekiwania na odpowiedź serwera przez nawiązane połączenie, po jakim próba zostanie zakończona i wygenerowany zostanie błąd przekroczenia limitu czasu komunikacji.
Składnia parametru w pliku db2cli.ini:
ReceiveTimeout = 0 | 1 | 2 | ... | 32767
Ustawienie domyślne:
Klient czeka przez nieograniczenie długi czas na odpowiedź z serwera przez nawiązane połączenie.
Równoważny atrybut połączenia:
SQL_ATTR_RECEIVE_TIMEOUT
Informacja o użyciu:
Wartość domyślna 0 oznacza, że klient będzie czekał na odpowiedź przez nieograniczenie długi czas. Limit czasu odbioru nie obowiązuje podczas nawiązywania połączenia; parametr ten jest obsługiwany tylko w przypadku protokołu TCP/IP i jest ignorowany dla wszystkich innych protokołów.

Atrybut połączenia SQL_ATTR_RECEIVE_TIMEOUT

SQL_ATTR_RECEIVE_TIMEOUT (interfejs CLI DB2 wersja 8)
32-bitowa wartość całkowita określająca w sekundach czas oczekiwania na odpowiedź serwera przez nawiązane połączenie, po jakim próba zostanie zakończona i wygenerowany zostanie błąd przekroczenia limitu czasu komunikacji. Wartość domyślna 0 oznacza, że klient będzie czekał na odpowiedź przez nieograniczenie długi czas. Limit czasu odbioru nie obowiązuje podczas nawiązywania połączenia; parametr ten jest obsługiwany tylko w przypadku protokołu TCP/IP i jest ignorowany dla wszystkich innych protokołów. Dozwolone są wartości całkowite z zakresu od 0 do 32767.

Parametr konfiguracyjny Reopt interfejsu CLI/ODBC

Opis parametru:
Włącza optymalizację zapytań lub ponowną optymalizację instrukcji SQL, które zawierają rejestry specjalne lub znaczniki parametrów.
Składnia parametru w pliku db2cli.ini:
Reopt = 2 | 3 | 4
Ustawienie domyślne:
W czasie wykonywania zapytania nie jest przeprowadzana optymalizacja. W odniesieniu do rejestrów specjalnych lub znaczników parametrów używane są domyślne wartości oszacowane, wybrane przez kompilator.
Równoważna instrukcja i atrybut połączenia:
SQL_ATTR_REOPT
Informacja o użyciu:
Optymalizacja polega na przypisaniu rejestrom specjalnym lub znacznikom parametrów wartości dostępnych w czasie wykonywania zapytania zamiast domyślnych wartości oszacowanych, wybieranych przez kompilator. Poprawne wartości parametru to: "NULLIDR1" i "NULLIDRA" to zarezerwowane nazwy zbiorów pakietów; gdy są one używane, niejawnie ustawiana jest odpowiednio opcja REOPT ONCE lub REOPT ALWAYS. Te zbiory pakietów należy utworzyć jawnie przy użyciu następujących komend:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
W razie jednoczesnego określenia parametrów Reopt i CurrentPackageSet, parametr CurrentPackageSet ma pierwszeństwo.

Instrukcja SQL_ATTR_REOPT i atrybut połączenia

SQL_ATTR_REOPT (DB2 CLI v8)
32-bitowa wartość całkowita, która umożliwia optymalizację zapytań dla instrukcji SQL zawierających rejestry specjalne lub znaczniki parametrów. Optymalizacja polega na przypisaniu rejestrom specjalnym lub znacznikom parametrów wartości dostępnych w czasie wykonywania zapytania zamiast domyślnych wartości oszacowanych, wybieranych przez kompilator. Poprawne wartości atrybutu to: "NULLIDR1" i "NULLIDRA" to zarezerwowane nazwy zbiorów pakietów; gdy są one używane, niejawnie ustawiana jest odpowiednio opcja REOPT ONCE lub REOPT ALWAYS. Te zbiory pakietów należy utworzyć jawnie przy użyciu następujących komend:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
Atrybuty SQL_ATTR_REOPT i SQL_ATTR_CURRENT_PACKAGE_SET wykluczają się nawzajem, jeśli zatem jeden z nich jest ustawiony, użycie drugiego jest niedozwolone.

Parametr konfiguracyjny CurrentPackageSet interfejsu CLI/ODBC

Opis parametru:
Powoduje wywołanie instrukcji SET CURRENT PACKAGESET po każdym połączeniu.
Składnia parametru w pliku db2cli.ini:
CurrentPackageSet = nazwa schematu
Ustawienie domyślne:
Klauzula nie jest dodawana.
Równoważny atrybut połączenia:
SQL_ATTR_CURRENT_PACKAGE_SET
Informacja o użyciu:

Ta opcja powoduje wywoływanie polecenia SET CURRENT PACKAGESET SQL z wartością CurrentPackageSet po każdym połączeniu z bazą danych. Domyślnie klauzula ta nie jest dołączana.

Instrukcja SET CURRENT PACKAGESET SQL określa nazwę schematu (identyfikator kolekcji) używany do wybierania pakietu dla następnych instrukcji SQL.

Aplikacje CLI/ODBC wywołują dynamiczne instrukcje SQL. Opisywana opcja umożliwia sterowanie uprawnieniami, z jakimi instrukcje te są wykonywane:

Instrukcje SQL uruchamiane z aplikacji CLI/ODBC będą teraz działały w tym określonym schemacie ze zdefiniowanymi w nim uprawnieniami.

Następujące nazwy zbiorów pakietów są zarezerwowane: "NULLID", "NULLIDR1", "NULLIDRA".

W razie jednoczesnego określenia parametrów Reopt i CurrentPackageSet, parametr CurrentPackageSet ma pierwszeństwo.

Atrybut połączenia SQL_ATTR_CURRENT_PACKAGE_SET

SQL_ATTR_CURRENT_PACKAGE_SET (DB2 CLI v5)
Łańcuch znaków zakończony znakiem o kodzie zero określający nazwę schematu (identyfikator kolekcji) służącego do wybierania pakietu dla następnych instrukcji SQL. Ustawienie tego atrybutu powoduje wywołanie instrukcji SQL SET CURRENT PACKAGESET. Jeśli atrybut ten zostanie ustawiony przed połączeniem, instrukcja SQL SET CURRENT PACKAGESET zostanie wywołana w czasie połączenia.

Aplikacje CLI/ODBC wywołują dynamiczne instrukcje SQL. Opisywany atrybut połączenia umożliwia sterowanie uprawnieniami, z jakimi instrukcje te są wykonywane:

Instrukcje SQL uruchamiane z aplikacji CLI/ODBC będą teraz działały w tym określonym schemacie ze zdefiniowanymi w nim uprawnieniami.

Alternatywną metodą określenia nazwy schematu jest ustawienie parametru konfiguracyjnego CLI/ODBC CURRENTPACKAGESET.

Następujące nazwy zbiorów pakietów są zarezerwowane: "NULLID", "NULLIDR1", "NULLIDRA".

Atrybuty SQL_ATTR_REOPT i SQL_ATTR_CURRENT_PACKAGE_SET wykluczają się nawzajem, jeśli zatem jeden z nich jest ustawiony, użycie drugiego jest niedozwolone.

Parametr konfiguracyjny MapBigintCDefault interfejsu CLI/ODBC

Opis parametru:
Określa domyślny typ C kolumn BIGINT i znaczników parametrów.
Składnia parametru w pliku db2cli.ini:
MapBigintCDefault = 0 | 1 | 2
Ustawienie domyślne:
Domyślna reprezentacja typu C dla danych BIGINT to SQL_C_BIGINT.
Informacja o użyciu:
 

Parametr MapBigintCDefault steruje typem C używanym, gdy dla kolumn i znaczników parametrów typu BIGINT określono reprezentację SQL_C_DEFAULT. Ten parametr powinien być używany przede wszystkim z aplikacjami firmy Microsoft, takimi jak Microsoft Access, które nie obsługują 8-bajtowych liczb całkowitych. Parametr MapBigintCDefault ustawia się w następujący sposób:

Parametr ten ma wpływ na zachowanie funkcji interfejsu CLI, gdzie jako typ C może być określona reprezentacja SQL_C_DEFAULT, na przykład SQLBindParameter(), SQLBindCol() i SQLGetData().

Parametr konfiguracyjny DescribeOutputLevel interfejsu CLI/ODBC

Opis parametru:
Określa poziom informacji opisowych kolumny wyjściowej, której wymaga sterownik CLI podczas żądań przygotowania lub opisu.
Składnia parametru w pliku db2cli.ini:
DescribeOutputLevel = 0 | 1 | 2 | 3
Ustawienie domyślne:
Żąda informacji opisowych wymienionych na poziomie 2 (patrz Tabela 25).
Informacja o użyciu:
 

Ten parametr steruje wielkością informacji, których wymaga sterownik CLI w żądaniach przygotowania lub opisu. Domyślnie, gdy serwer odbiera żądanie opisu, zwraca w odpowiedzi informacje zawarte na poziomie 2 (patrz Tabela 25) dla kolumn tabeli wynikowej. Jednak aplikacja może nie potrzebować wszystkich tych informacji lub może potrzebować informacji dodatkowych.

Przypisanie parametrowi DescribeOutputLevel poziomu odpowiedniego dla potrzeb aplikacji może poprawić wydajność, ponieważ wielkość danych opisu przesyłanych między klientem i serwerem zostaje ograniczona do minimum wymaganego przez aplikację. Jeśli przypisany parametrowi DescribeOutputLevel poziom będzie zbyt niski, może to zakłócić funkcjonowanie aplikacji (zależnie od jej wymagań). Funkcje interfejsu CLI przeznaczone do pobierania informacji opisowych nie muszą zakończyć działania niepowodzeniem, ale zwrócone przez nie informacje mogą być niekompletne.

Obsługiwane ustawienia parametru DescribeOutputLevel to:

W poniższej tabeli przedstawiono listę pól, które tworzą informacje opisowe zwracane przez serwer w odpowiedzi na żądanie przygotowania lub opisu. Pola te pogrupowano w poziomy, a parametr konfiguracyjny interfejsu CLI/ODBC DescribeOutputLevel steruje numerem poziomu informacji, których żąda sterownik CLI.

Uwaga:
Niektóre serwery DB2 nie obsługują wszystkich poziomów informacji opisowych. Wszystkie poziomy informacji opisowych są obsługiwane przez następujące serwery DB2: DB2 Universal Database (UDB) dla systemów Linux, UNIX i Windows, wersja 8 i nowsze, DB2 UDB for z/OS, wersja 8 i nowsze oraz DB2 UDB for iSeries, wersja 5 wydanie 3 i nowsze. Wszystkie pozostałe serwery DB2 obsługują tylko wartości 2 lub 0 parametru DescribeOutputLevel.
Tabela 25. Poziomy informacji opisowych.
Poziom 1 Poziom 2 Poziom 3
SQL_DESC_COUNT
SQL_COLUMN_COUNT
SQL_DESC_TYPE
SQL_DESC_CONCISE_TYPE
SQL_COLUMN_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_LENGTH
SQL_DESC_PRECISION
SQL_COLUMN_PRECISION
SQL_DESC_SCALE
SQL_COLUMN_SCALE
SQL_DESC_DISPLAY_SIZE
SQL_DESC_NULLABLE
SQL_COLUMN_NULLABLE
SQL_DESC_UNSIGNED
SQL_DESC_SEARCHABLE
SQL_DESC_LITERAL_SUFFIX
SQL_DESC_LITERAL_PREFIX
SQL_DESC_CASE_SENSITIVE
SQL_DESC_FIXED_PREC_SCALE
wszystkie pola poziomu 1
oraz:
SQL_DESC_NAME
SQL_DESC_LABEL
SQL_COLUMN_NAME
SQL_DESC_UNNAMED
SQL_DESC_TYPE_NAME
SQL_DESC_DISTINCT_TYPE
SQL_DESC_REFERENCE_TYPE
SQL_DESC_STRUCTURED_TYPE
SQL_DESC_USER_TYPE
SQL_DESC_LOCAL_TYPE_NAME
SQL_DESC_USER_DEFINED_
         TYPE_CODE
wszystkie pola poziomów 1,
2 oraz:
SQL_DESC_BASE_COLUMN_NAME
SQL_DESC_UPDATABLE
SQL_DESC_AUTO_UNIQUE_
         VALUE
SQL_DESC_SCHEMA_NAME
SQL_DESC_CATALOG_NAME
SQL_DESC_TABLE_NAME
SQL_DESC_BASE_TABLE_NAME
[ Początek strony |Poprzednia strona | Następna strona | Spis treści ]