Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere 11 - Änderungen und Upgrades » Neue Funktionen in Version 10.0.1 » SQL Anywhere

 

Verhaltensänderungen und veraltete Funktionen

Im Folgenden finden Sie eine nach Kategorien sortierte Liste der Änderungen für SQL Anywhere-Datenbanken und -Datenbankserver in Version 10.0.1.

Verhaltensänderungen
  • Änderungen der Verwendung der abfrageinternen Parallelität   Die abfrageinterne Parallelität wird nicht mehr bei Verbindungen verwendet, für die background_priority aktiviert ist. Außerdem wird die abfrageinterne Parallelität nicht verwendet, wenn die Anzahl der Server-Threads, die aktuell eine Abfrage bearbeiten (Servereigenschaft ActiveReq), die laut Lizenz zulässige Anzahl der vom Datenbankserver verwendbaren CPU-Kerne auf dem Rechner überschritten hat. Weitere Hinweise finden Sie unter Parallelität während der Abfrageausführung.

    Die neue Servereigenschaft ExchangeTasksCompleted gibt die Gesamtanzahl von internen Aufgaben zurück, die seit dem Start der Datenbank für die abfrageinterne Parallelität verwendet wurden. Weitere Hinweise finden Sie unter Datenbankservereigenschaften.

  • Verschlüsselungsergebnisse sind nicht mehr deterministisch   Bislang war das Verschlüsseln von Werten mithilfe der Funktion ENCRYPT deterministisch. Wenn Sie zwei identische Eingabezeichenfolgen und zwei identische Chiffrierschlüssel eingegeben haben, wurden identische Ausgabedaten (Chiffrierungstext) zurückgegeben. Nun können Sie mit der neuen Datenbankoption encrypt_aes_random_iv steuern, ob die Verschlüsselung deterministisch ist. Das neue Standardverhalten ist nicht deterministisch.

    Hinweis

    Databankserver, die nicht über diese Option verfügen (Version 10.0.0 und früher), können Daten aus Datenbanken, die diese Option verwenden, nicht entschlüsseln (auch wenn diese Option auf Off gesetzt ist).

  • ALTER DBSPACE RENAME versucht, den DBSpace zu öffnen, wenn er nicht geöffnet ist   Wenn bislang eine Datenbank, die DBSpaces verwendet, gestartet und einer ihrer DBSpaces nicht gefunden wurde, dann wurde der DBSpace-Name im Katalog durch die Ausführung der Anweisung ALTER DBSPACE ... RENAME für den betreffenden DBSpace aktualisiert. Es wurde jedoch nicht versucht, den DBSpace zu starten. Nun versucht der Datenbankserver, den DBSpace zu öffnen, nachdem der Katalog aktualisiert wurde. Weitere Hinweise finden Sie unter ALTER DBSPACE-Anweisung.

  • Änderungen der Anweisungen CREATE, ALTER und DROP DBSPACE   Die Anweisungen CREATE DBSPACE und DROP DBSPACE akzeptieren nicht mehr die Namen von vordefinierten DBSpaces (SYSTEM, TEMPORARY, TEMP, TRANSLOG und TRANSLOGMIRROR). Wenn ein Benutzer-DBSpace in einer Datenbank, die von einer älteren Version des SQL Anywhere-Datenbankservers erstellt wurde, denselben Namen hat wie einer der vordefinierten DBSpaces, bezieht sich der Datenbankserver immer auf den Benutzer-DBSpace. Weitere Hinweise finden Sie unter Vordefinierte DBSpaces.

  • Änderungen der Ausgabe der Systemprozedur sa_conn_info   Die Ausgabe der Systemprozedur sa_conn_info wurde geändert und gibt nun mehr Informationen über Sperren zurück, auf die Verbindungen warten. Das Feld LockName wurde entfernt. An seiner Stelle wurden die zwei neuen Felder LockRowID und LockIndexID hinzugefügt. Wenn die Verbindung auf eine Sperre wartet, die einer bestimmten Zeilen-ID zugeordnet ist, enthält LockRowID diese Zeilen-ID. Wenn die Verbindung auf eine Sperre wartet, die einem bestimmten Index zugeordnet ist, enthält LockIndexID diese Index-ID. Weitere Hinweise finden Sie unter sa_conn_info-Systemprozedur.

    Um diese Funktion zu verwenden, müssen Sie ein Upgrade Ihrer Datenbank ausführen. Weitere Hinweise finden Sie unter Upgrade von Datenbanken der Version 10 und höher.

  • DBA-Berechtigung für einige Systemprozeduren nicht mehr erforderlich   Für die Ausführung der Systemprozeduren sa_dependent_views, sa_get_dtt, sa_check_commit und sa_materialized_view_info ist die DBA-Berechtigung nicht mehr erforderlich.

  • Standardmaßeinheit für CREATE DATABASE-Anweisung wurde entfernt   Bei der Erstellung einer Datenbank mit der CREATE DATABASE-Anweisung ist die Angabe der Maßeinheit nicht mehr optional, wenn Sie einen Wert für DATABASE SIZE festlegen. Weitere Hinweise finden Sie unter CREATE DATABASE-Anweisung.

  • Neuer Höchstwert für die Option default_timestamp_increment   Der Höchstwert für die Option default_timestamp_increment ist nun 1000000 (1 Sekunde). Weitere Hinweise finden Sie unter default_timestamp_increment-Option [Datenbank] [MobiLink-Client].

  • dbdata10.dll entfernt   Die von der dynamischen Verknüpfungsbibliothek (Dynamic Link Library) dbdata10 bereitgestellte Funktionalität wurde in die DLL des SQL Anywhere .NET-Providers integriert. Aus diesem Grund gibt es nun für Windows CE plattformspezifische Versionen der DLL des SQL Anywhere .NET-Providers.

  • Erhöhte Standard-Cachegröße unter NetWare   Die Standardgröße des Datenbankserver-Caches unter NetWare wurde von 2 MByte auf 8 MByte erhöht. Weitere Hinweise finden Sie unter Serveroption -c.

  • Verhaltensänderungen durch clientseitiges Zwischenspeichern von Anweisungen im Cache   Die folgenden Verhaltensänderungen wurden im Zusammenhang mit der Unterstützung für das clientseitige Zwischenspeichern von Anweisungen im Cache eingeführt:

    • Die DESCRIBE-Anweisung kann falsche Werte liefern, wenn die SQL-Anweisung, die ohne Ergebnismenge beschrieben wurde, zu einem späteren Zeitpunkt eine Ergebnismenge hat. Zum Beispiel:
      CREATE PROCEDURE p() NO RESULT SET BEGIN ... END
      Prepare, Describe, Drop "call p"
      ALTER PROCEDURE p() RESULT( ... ) BEGIN ... END
      Prepare, Describe, Drop "call p"  // describe returns no result set
    • Wenn das clientseitige Zwischenspeichern von Anweisungen im Cache sowie RememberLastStatement (Serveroption -zl) aktiviert sind, ist die LastStatement-Eigenschaft die leere Zeichenfolge, wenn eine im Cache abgelegte Anweisung erneut verwendet wird.
    • Wenn das clientseitige Zwischenspeichern von Anweisungen im Cache aktiviert ist und sa_get_request_times oder sa_get_request_profile zur Verarbeitung des Anforderungsebenenlogs verwendet werden, ist die angegebene Häufigkeit der Verarbeitung einer Anweisung möglicherweise falsch. Weitere Hinweise finden Sie unter max_client_statements_cached-Option [Datenbank].

  • Das Sprachen-Dienstprogramm (dblang) erfordert keine Administratorberechtigungen mehr   In früheren Versionen von SQL Anywhere mussten sich Benutzer als Administrator anmelden, um die Spracheinstellungen für lokalisierte Versionen von SQL Anywhere mithilfe des Dienstprogramms dblang ändern zu können. Diese Anforderung wurde aufgehoben.

  • Schrägstriche in DISH-Dienstnamen nicht mehr zulässig   Um eine Fehlinterpretation von DISH-Dienstnamen zu verhindern, sind Schrägstriche (/) als Teil des Dienstnamens nicht mehr zulässig. Weitere Hinweise finden Sie unter CREATE SERVICE-Anweisung.

  • Änderung des Standardwerts von SACommand.UpdateRowSource   Bislang war der Standardwert von SACommand.UpdatedRowSource der Wert UpdatedRowSource.Both. Nun lautet der Standardwert UpdatedRowSource.OutputParameters. Weitere Hinweise finden Sie unter UpdatedRowSource-Eigenschaft.

  • Änderung des Standardwerts des PrefetchRows-Verbindungsparameters   Bei der Verwendung des .NET-Datenproviders wurde der Standardwert des Verbindungsparameters PrefetchRows zur Verbesserung der Performance von 10 auf 200 gesetzt. Der Standardwert von SAConnectionStringBuilder.PrefetchRow ist nun ebenfalls 200. Prefetch-Vorgänge sind nun deaktiviert, wenn die Ergebnismenge BLOB-Spalten enthält. Weitere Hinweise finden Sie unter PrefetchRows-Verbindungsparameter [PROWS].

  • Authentifizierte Anwendungen verwenden nun authenticate.sql anstelle von saopts.sql   In früheren Versionen der OEM Edition von SQL Anywhere wurde empfohlen, die Authentifizierungsanweisung in der Datei Installationsverzeichnis\scripts\saopts.sql zu speichern, sodass sie immer angewendet wurde, wenn Sie eine Datenbank erstellt, neu aufgebaut oder ein Upgrade der Datenbank durchgeführt haben.

    Nun wird empfohlen, die Authentifizierungszeichenfolge in der Datei Installationsverzeichnis\scripts\authenticate.sql zu speichern. Weitere Hinweise finden Sie unter Upgrade von authentifizierten Datenbanken.

  • Lange Hostnamen werden unter HP-UX nun akzeptiert   Seit dem Update vom September 2004 von HP-UX 11i v2 konnten Systemadministratoren die Unterstützung für 255-Byte-Hostnamen durch das Setzen eines Kernel-Parameters aktivieren. Auf SQL Anywher-Servern auf HP-UX-Computern, auf denen lange Hostnamen aktiviert waren, gaben die Eigenschaft MachineName und der HOST-Schlüssel AppInfo maximal 64 Byte des Hostnamens zurück. Sowohl MachineName als auch AppInfo können nun 255-Byte-Hostnamen zurückgeben.

  • URL-Header des iAnywhere JDBC-Treibers   Wenn in früheren Versionen Anwendungen unter Verwendung des iAnywhere JDBC-Treibers mit SQL Anywhere verbunden wurden, begann der URL, der an den JDBC-Treiber übergeben wurde, mit dem Header jdbc:odbc:. Nun kann der URL-Header auch mit jdbc:ianywhere: beginnen. Es wird emfpohlen, jdbc:ianywhere: zu verwenden, um Konflikte mit der JDBC-ODBC-Brücke von Sun zu vermeiden. Weitere Hinweise finden Sie unter Dem Treiber eine URL bereitstellen.

  • Abfragen einer Liste von Tabellen mit jConnect, wenn der Remarks-Wert länger als 128 Zeichen ist   Wenn bislang eine JDBC-Anwendung mithilfe von jConnect verbunden wurde und eine Liste von Tabellen angefordert hat, war das Ergebnis möglicherweise leer, auch wenn Tabellen vorhanden waren. Dies war der Fall, wenn die Option string_rtruncation auf On gesetzt war, die Anwendung die Methode DatabaseMetaData.getTables verwendet hat und der Remarks-Wert für eine beliebige Tabelle länger als 128 Zeichen war. Nun werden zu lange Remarks-Werte auf 128 Zeichen gekürzt und die Liste der Tabellen wird zurückgegeben. Um diese Änderung nutzen zu können, müssen Sie entweder jcatalog.sql ausführen oder Ihre Datenbank auf die neue Version umstellen. Weitere Hinweise finden Sie unter jConnect-Systemobjekte in einer Datenbank installieren oder Upgrade-Dienstprogramm (dbupgrad).

  • Vergleiche von CHAR- und NCHAR-Werten   Bei SQL Anywhere 10.0.0 führte die Kombination von CHAR- und NCHAR-Domänen zu einem NCHAR-Vergleich. Dies bedeutete jedoch, dass Anwendungen, die auf 10.0.0 umgestellt wurden, unter Umständen unterschiedliche Ergebnisse erzielten oder einen Performanceabfall verzeichneten, wenn gebundene Hostvariable als SQL_C_WCHAR verwendet wurden. In SQL Anywhere 10.0.0 werden Variable, die als SQL_C_WCHAR gebunden sind, als NCHAR dargestellt. In SQL Anywhere 10.0.1 wurden neue Inferenzregeln eingeführt, um die Kompatibilität mit vorhandenen Anwendungen zu verbessern und konsistente, vorhersehbare Ergebnisse zu liefern, wenn CHAR- und NCHAR-Domänen kombiniert werden. Weitere Hinweise finden Sie unter Vergleiche zwischen CHAR und NCHAR.

  • Asynchrone I/O-Vorgänge auf früheren Linux-Kernels als 2.6.12 deaktiviert   Aufgrund eines Fehlers in Linux-Kernels vor Version 2.6.12 sind asynchrone I/O-Vorgänge standardmäßig deaktiviert, wenn Sie einen SQL Anywhere-Datenbankserver auf einem der betreffenden Kernels ausführen. Wenn Sie asynchrone I/O-Vorgänge verwenden möchten, müssen Sie Ihren Kernel auf 2.6.12 oder später umstellen.

  • Dokumentation der OEM Edition verschoben   In früheren Versionen der OEM Edition von SQL Anywhere waren Anleitungen zum Einrichten von authentifizierten Anwendungen in einer separaten .pdf- oder .html-Datei enthalten. Diese Informationen sind jetzt auch an folgenden Stellen verfügbar:

  • Tabellennamen müssen die Groß- und Kleinschreibung nicht mehr berücksichtigen, wenn die Optionen -e und -t des Dienstprogramms Entladen für eine Datenbank verwendet werden, die die Groß- und Kleinschreibung berücksichtigt   In früheren Versionen mussten die Tabellennamen die Groß- und Kleinschreibung berücksichtigen, wenn die Optionen -e und -t des dbunload-Dienstprogramms zum Entladen einer Datenbank, die die Groß- und Kleinschreibung berücksichtigt, verwendet wurden. Die Tabellennamen müssen nun die Groß- und Kleinschreibung nicht mehr berücksichtigen.

  • Daten in temporäre Tabellen laden    Das Verhalten beim Laden von Daten in temporäre Tabellen wurde geändert. Abgesehen von einer mit ON COMMIT DELETE ROWS definierten LOCAL TEMPORARY TABLE-Tabelle wird nun eine temporäre Tabelle vor und nach einer LOAD TABLE-Anweisung automatisch festgeschrieben. Wenn der Ladevorgang fehlschlägt, werden nun alle Zeilen in der temporären Tabelle entfernt, einschließlich der Zeilen, die vor dem Ladevorgang enthalten waren.

    Bei LOCAL TEMPORARY TABLE-Tabellen, die mit ON COMMIT DELETE ROWS definiert wurden, gibt es keine Verhaltensänderung, d.h. es werden keine Festschreibungen durchgeführt. Wenn ein Ladevorgang aufgrund eines Fehlers nur teilweise ausgeführt wird, enthält dieser temporäre Tabellentyp nur einige der geladenen Zeilen, während andere Zeilen, die vor dem Ladevorgang enthalten waren, möglicherweise fehlen.

    Außerdem schlägt das Laden in eine temporäre Tabelle nun fehl, wenn die Tabelle Zeilen enthält, die vom Fremdschlüssel einer anderen Tabelle referenziert werden.

    Es ist nicht möglich, einen Ladevorgang in eine globale temporäre Tabelle (GLOBAL TEMPORARY TABLE) durchzuführen, für die ON COMMIT DELETE ROWS festgelegt ist.

  • Standardmäßige Berücksichtigung von Groß- und Kleinschreibung in japanischen Datenbanken, die die UCA-Kollatierung verwenden   Standardmäßig werden die Groß- und Kleinschreibung und die Akzente der UCA-Kollatierungen bei der Erstellung japanischer Datenbanken nun berücksichtigt. Eine japanische Datenbank ist eine Datenbank, die auf einem japanischen Computer erstellt wird, auf dem die Betriebssystemsprache Japanisch ist, ein japanischer Zeichensatz verwendet wird, oder eine beliebige Datenbank, die mit einer japanischen CHAR-Kollatierung wie z.B. 932JPN oder EUC_JAPAN erstellt wird.

    Standardmäßig wird die Groß- und Kleinschreibung der UCA-Kollatierungen bei der Erstellung nicht-japanischer Datenbanken weiterhin nicht berücksichtigt.

    Die Standardeinstellungen für die Berücksichtigung von Groß- und Kleinschreibung und Akzenten können weiterhin mit den dbinit-Optionen -c und -a (oder -c- und -a-) überschrieben werden, und zwar mithilfe einer Kollatierungsanpassungssyntax oder der Klauseln CASE und ACCENT der CREATE DATABASE-Anweisung. Weitere Hinweise finden Sie unter Dienstprogramm Initialisierung (dbinit) und CREATE DATABASE-Anweisung.

Nicht weiterentwickelte und nicht mehr unterstützte Funktionen
  • SQL Flagger-Unterstützung für den SQL/1992-Standard   Die SQL Flagger-Unterstützung für SQL:1992 (alle Ebenen) ist veraltet und wurde nicht mehr weiterentwickelt.

  • dbinit-Option -e wird nicht weiterentwickelt   Die Option -e von dbinit, mit der bei der Datenbankerstellung die einfache Verschlüsselung festgelegt wurde, ist nun veraltet und wird nicht mehr weiterentwickelt. Verwenden Sie stattdessen die Option -ea (d.h. "-ea simple"), um die einfache Verschlüsselung festzulegen. Weitere Hinweise finden Sie unter Dienstprogramm Initialisierung (dbinit).

  • SADbType.oldbit-Datentyp wurde entfernt   Die SADbType.oldbit-Enumerationskonstante wurde aus dem SQL Anywhere .NET-Provider entfernt.

  • -gx-Serveroption wird nicht weiterentwickelt   Auf Windows-PC-Plattformen versucht der Datenbankserver-Scheduler nun, die Affinität von Anforderungen zu verwalten, um den CPU-Cache zu verwenden. Dadurch werden Anforderungen soweit möglich auf einer CPU ausgeführt. Zudem wird die Serveroption -gx, mit der die Anzahl der Betriebssystem-Threads für den Datenbankserver festgelegt wurde, nicht weiterentwickelt. Diese Option wird nun vom Datenbankserver ignoriert.

  • CASE- und ACCENT-Klauseln der CREATE DATABASE-Anweisung veraltet   Aufgrund der Unterstützung der Kollatierungsanpassungen mithilfe von COLLATION und NCHAR COLLATION der CREATE DATABASE-Anweisung sind die Klauseln CASE und ACCENT dieser Anweisung nun veraltet. Weitere Hinweise finden Sie unter CREATE DATABASE-Anweisung.