Database metadata/pl
English · Polski
Metadane bazy danych to dane o bazie danych. W tym artykule omówimy również informacje o połączeniu do bazy danych oraz o serwerze i kliencie bazy danych.
Contents
- 1 SQLDB
- 1.1 Informacje o serwerze i kliencie
- 1.1.1 Specyfika Firebird/Interbase
- 1.2 Informacje o schemacie
- 1.2.1 Propozycja rozszerzenia/ujednolicenia
- 1.2.2 Narzędzie metadanych TSQLQuery w Lazarusie
- 1.3 Informacje o schemacie słownika danych
- 1.1 Informacje o serwerze i kliencie
- 2 Informacje specyficzne dla bazy danych
- 3 Zobacz także
SQLDB
Informacje o serwerze i kliencie
W wersjach rozwojowych FPC z listopada 2012 r. można użyć funkcji „GetConnectionInfo”. Zobacz dokumentację GetConnectionInfo Wyjaśnienie:
- citServerVersion : wersja serwera jest zwracana w postaci ciągu sformatowanego jako liczba (np. 0205 reprezentuje 2.5)
jeśli T*Connection, o którym mowa, tego (tej części) nie obsługuje, to funkcje zwrócą puste wartości.
Specyfika Firebird/Interbase
- citServerVersion zwraca liczby starsze (major) i młodsze (minor) tylko dla Firebirda (np. 0205 dla wersji 2.5.1); zwraca 3 liczby dla Interbase
- citClientVersion nie jest obsługiwany i prawdopodobnie nigdy nie będzie obsługiwany przez Firebird w systemie Linux/*Nix ze względu na brakującą funkcjonalność
Oprócz powyższych funkcji, od grudnia 2012 r. złącze Firebird udostępnia funkcję GetODS , która pokazuje starszą (major) wersję ODS bazy danych, z którą jesteś połączony. Ta wersja ODS określa, jakie funkcje są dostępne do użycia – ponieważ możesz m.in. użyć bazy danych utworzonej za pomocą Firebird 2.1 z serwerem Firebird 2.5, ale funkcje będą ograniczone do funkcjonalności 2.1.
Informacje o schemacie
Schemat znany jest również jako język DDL bazy danych (Data Definition Language). Schemat jest reprezentacją tabel, widoków, procedur i innych obiektów, które tworzą bazę danych.
Zobacz dokumentacja pobierania informacji o schemacie
GetSchemaInfoSQL nie jest zaimplementowany w równym stopniu dla każdego połączenia; połączenie do Firebird ma obecnie większość zaimplementowanych funkcjonalności; pozostałe (np. MS SQL, Sybase, Oracle) mają mniejszą funkcjonalność. Łatki są mile widziane.
Propozycja rozszerzenia/ujednolicenia
Note: Na liście mailingowej FPC były dyskusje/propozycje jak ujednolicić i rozszerzyć pobieranie metadanych dla SQLDB. Proszę zaktualizować poniżej wszystkie wyniki tej dyskusji:
Zasugeruj zbieżność do standardowego nazewnictwa kolumn INFORMATION_SCHEMA SQL w istniejącym GetSchemaInfoSQL. Więc dla:
- stTables używają INFORMATION_SCHEMA.TABLES z następującymi nazwami kolumn:
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE ('BASE TABLE', 'VIEW', 'GLOBAL TEMPORARY', 'LOCAL TEMPORARY'), ...(dla baz, które nie implementują widoków INFORMATION_SCHEMA pozostaw zapytania do tabel systemowych, ale używaj w/w nazewnictwa kolumn)
- stColumns używają INFORMATION_SCHEMA.COLUMNS z następującymi nazwami kolumn:
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, ..., CHARACTER_SET_NAME, COLLATION_NAME, DOMAIN_NAME, ..., IS_IDENTITY, IS_GENERATED- stProcedures używają INFORMATION_SCHEMA.ROUTINES z następującymi nazwami kolumn:
SPECIFIC_CATALOG, SPECIFIC_SCHEMA, SPECIFIC_NAME, ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE ('PROCEDURE', 'FUNCTION',...), ...Uwaga: Z drugiej strony Delphi używa nieco innego nazewnictwa kolumn, opisanego w Struktura zbiorów danych metadanych Jednak testy ze sterownikami Delphi XE MySQL i Interbase DBX pokazują wyniki niezgodne z tą specyfikacją (np. dla stTables zwracane są takie kolumny: CatalogName, SchemaName, TableName, TableType (bez "_") i bez kolumny RECNO), a dla metody ADO OpenSchema zwracane są takie kolumny:
siTables (adSchemaTables): TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE(widestring)
siColumns (adSchemaColumns): TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, ..., CHARACTER_SET_NAME, COLLATION_NAME, DOMAIN_NAME, ..., IS_COMPUTED
siIndexes (adSchemaIndexes): TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, INDEX_CATALOG, INDEX_SCHEMA, INDEX_NAME, PRIMARY_KEY(boolean), UNIQUE(boolean), CLUSTERED(boolean), TYPE(word), FILL_FACTOR, ..., ORDINAL_POSITION, COLUMN_NAME, ... (jeden wiersz na ka??d?? kolumn?? w indeksie)
siProcedures (adSchemaProcedures): PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME, PROCEDURE_TYPE(Smallint), ...
siSchemata (adSchemaSchemata): CATALOG_NAME, SCHEMA_NAME, SCHEMA_OWNER, ...Narzędzie metadanych TSQLQuery w Lazarusie
GetSchemaInfoSQL jest używany w Lazarusie w trybie projektowania, jeśli używasz Inspektora obiektów do edycji właściwości SQL TSQLQuery , w którym połączenie z bazą danych jest aktywne, to możesz nie tylko edytować tekst zapytania SQL w zakładce Kod SQL, ale także pobrać informacje w zakładce Metadane, wypełniając niektóre szczegóły i naciskając klawisz Play/Go:
Informacje o schemacie słownika danych
Istnieje oddzielny pakiet słownika danych FPC, który obsługuje informacje o schemacie. Ten pakiet jest używany w projekcie lazdatadesktop dostarczanym z Lazarusem.
Informacje specyficzne dla bazy danych
Wiele baz danych ma albo
- tabele/widoki systemowe (z których można wybierać) lub
- procedury składowane
które pokazują informacje o obiektach bazy danych, wersji serwera itp.
Przykładami są zmienne @@VERSION w serwerach MS SQL Server i Sybase.
Jeśli twoja biblioteka połączeń z bazą danych nie obsługuje innych sposobów uzyskania tych informacji, możesz jej użyć (i przesłać prośbę o poprawkę/ulepszenie do odpowiedniego narzędzia do śledzenia błędów w celu włączenia do bazy danych SQL/Zeos itp.)
Zobacz także
- Praca z TSQLQuery, gdzie znajdziesz więcej informacji o zapytaniach SQL
From the Free Pascal wiki, page "Database metadata/pl", as the Internet Archive kept it on 2023-09-24, last changed on 2022-10-04. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.

