Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygunluk
Tanıtılan Sürüm: ODBC 3.0 Standartlarına Uyum: ISO 92
Summary
SQLSetEnvAttr , ortamların yönlerini yöneten öznitelikleri ayarlar.
Syntax
SQLRETURN SQLSetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
EnvironmentHandle
[Giriş] Ortam kontrolü.
Öznitelik
[Giriş] Setin atribeği, "Yorumlar" bölümünde listelenmiştir.
Valueptr
[Giriş] Öznitelik ile ilişkilendirilecek değere işaret edin.
Attribute değerine bağlı olarak, ValuePtr 32 bitlik tam sayı değeri veya null-sonlu bir karakter dizisine işaret eder.
StringLength
[Giriş] Eğer ValuePtr bir karakter dizisine veya ikili tampon işaret ediyorsa, bu argüman *ValuePtr uzunluğu olmalıdır. Karakter dizisi verileri için, bu argüman dizide bayt sayısını içermelidir.
ValuePtr bir tam sayıysa, StringLength göz ardı edilir.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Diagnostics
SQLSetEnvAttr SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri, SQL_HANDLE_ENV HandleType ve EnvironmentHandleile SQLGetDiagRec çağrılarak elde edilebilir. Aşağıdaki tablo, genellikle SQLSetEnvAttr tarafından duygulanan SQLSTATE değerlerini listeler ve her birini bu fonksiyon bağlamında açıklar; "(DM)" gösterimi, Sürücü Yöneticisi tarafından döndürülen SQLSTATE açıklamalarından önce gelir. Aksi belirtilmediği sürece, her SQLSTATE değeriyle ilişkili dönüş kodu SQL_ERROR. Bir sürücü bir ortam özniteliğini desteklemiyorsa, hata yalnızca bağlantı zamanı sırasında geri dönebilir.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Genel uyarı | Sürücüye özgü bilgilendirici ileti. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01S02 | Seçenek değeri değiştirildi | Sürücü, ValuePtr'de belirtilen değeri desteklemedi ve benzer bir değeri değiştirdi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| HY000 | Genel hata | Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğinde SQLGetDiagRec tarafından döndürülen hata iletisi, hatayı ve nedenini açıklar. |
| HY001 | Bellek ayırma hatası | Sürücü, işlevin yürütülmesini veya tamamlanmasını desteklemek için gereken belleği ayıramadı. |
| HY009 | Geçersiz null işaretçi kullanımı | Attribute argümanı, bir dizi değeri gerektiren bir ortam özniteliğini tanımlardı ve ValuePtr argümanı bir null işaretçiydi. |
| HY010 | İşlev dizisi hatası | (DM) EnvironmentHandle üzerinde bir bağlantı komalı tahsis edildi. (DM) SQL_ATTR_ODBC_VERSIONSQLSetEnvAttr ile ayarlanmamış ve AttributeSQL_ATTR_ODBC_VERSION'e eşit değildir. SQLAllocHandleStd kullanıyorsanız SQL_ATTR_ODBC_VERSION açıkça ayarlamanıza gerek yok. |
| HY013 | Bellek yönetimi hatası | Büyük olasılıkla düşük bellek koşulları nedeniyle, temel alınan bellek nesnelerine erişilemediğinden işlev çağrısı işlenemedi. |
| HY024 | Geçersiz öznitelik değeri | Belirtilen Öznitelik değeri verildiğinde, ValuePtr'de geçersiz bir değer belirtilmiştir. |
| HY090 | Geçersiz dize veya arabellek uzunluğu | StringLength argümanı 0'dan küçüktü ama SQL_NTS değildi. |
| HY092 | Geçersiz öznitelik/seçenek tanımlayıcısı | (DM) Attribute argümanı için belirtilen değer, sürücünün desteklediği ODBC sürümü için geçerli değildi. |
| HY117 | Bilinmeyen işlem durumu nedeniyle bağlantı askıya alındı. Yalnızca bağlantıyı kesme ve salt okunur işlevlere izin verilir. | (DM) Askıya alınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi. |
| HYC00 | İsteğe bağlı özellik uygulanmadı |
Argüman Attribute için belirtilen değer, sürücünün desteklediği ODBC sürümü için geçerli bir ODBC ortam öztəniliğiydi ancak sürücü tarafından desteklenmedi. (DM) Özellik argümanı SQL_ATTR_OUTPUT_NTS ve ValuePtr SQL_FALSE. |
Comments
Bir uygulama, yalnızca ortamda herhangi bir bağlantı kolu tahsis edilmemişse SQLSetEnvAttr çağırabilir. Uygulama tarafından ortam için başarıyla belirlenen tüm ortam nitelikleri, SQLFreeHandle ortamda çağrılana kadar devam eder. ODBC 3.x'te birden fazla ortam tutamacı aynı anda tahsis edilebilir.
ValuePtr üzerinden belirlenen bilgi formatı, belirtilen Özniteliğe bağlıdır. SQLSetEnvAttr , öznitelik bilgisini iki farklı formattan birinde kabul eder: null-sonlu karakter dizisi veya 32-bit tam sayı değeri. Her birinin formatı özniteliğin açıklamasında belirtilmiştir.
Sürücüye özgü ortam özellikleri yoktur.
Bağlantı öznitelikleri SQLSetEnvAttr çağrısıyla ayarlanamaz. Bunu yapmaya çalıştığımda SQLSTATE HY092 (Geçersiz öznitelik/seçenek tanımlayıcısı) döner.
| Öznitelik | ValuePtr içeriği |
|---|---|
| SQL_ATTR_CONNECTION_POOLING (ODBC 3.8) | Çevre seviyesinde bağlantı havuzunu etkinleştiren veya devre dışı bırakan 32-bitlik bir SQLUINTeger değeri. Aşağıdaki değerler kullanılır: SQL_CP_OFF = Bağlantı havuzu kapalıdır. Bu varsayılan seçenektir. SQL_CP_ONE_PER_DRIVER = Her sürücü için tek bir bağlantı havuzu desteklenir. Bir havuzdaki her bağlantı bir sürücüyle ilişkilendirilir. SQL_CP_ONE_PER_HENV = Her ortam için tek bir bağlantı havuzu desteklenir. Bir havuzdaki her bağlantı tek bir ortamla ilişkilendirilir. SQL_CP_DRIVER_AWARE = Sürücünün bağlantı havuzu farkındalık özelliğini kullanılabilirse, kullanın. Sürücü bağlantı havuzu farkındalığını desteklemiyorsa, SQL_CP_DRIVER_AWARE göz ardı edilir ve SQL_CP_ONE_PER_HENV kullanılır. Daha fazla bilgi için bkz Driver-Aware Bağlantı Havuzlaması. Bazı sürücülerin bağlantı havuzu farkındalığını desteklediği ve bazı sürücülerin desteklemediği bir ortamda, SQL_CP_DRIVER_AWARE bağlantı-havuzu farkındalık özelliğini destekleyenlerde bağlantı-havuzu farkındalık özelliğini etkinleştirebilir, ancak bu, bağlantı havuzu farkındalık özelliğini desteklemeyen sürücülerde SQL_CP_ONE_PER_HENV ayarlamakla eşdeğerdir. Bağlantı havuzu, SQLSetEnvAttr çağrılıp SQL_ATTR_CONNECTION_POOLING özniteliğini SQL_CP_ONE_PER_DRIVER veya SQL_CP_ONE_PER_HENV olarak ayarlayarak etkinleştirilir. Uygulama, bağlantı havuzunun etkinleştirileceği paylaşılan ortamı ayırmadan önce bu çağrının yapılması gerekir. SQLSetEnvAttr çağrısındaki ortam handle null olarak ayarlanır, bu da SQL_ATTR_CONNECTION_POOLING süreç düzeyinde bir öznitelik yapar. Bağlantı havuzu etkinleştirildikten sonra, uygulama SQLAllocHandle çağrısı ile InputHandle argümanı SQL_HANDLE_ENV olarak ayarlanmış örtük paylaşılan bir ortam atanır. Bağlantı havuzu etkinleştirildikten ve bir uygulama için paylaşılan bir ortam seçildikten sonra, SQL_ATTR_CONNECTION_POOLING o ortam için sıfırlanamaz, çünkü SQLSetEnvAttr bu öznitelik ayarlanırken null bir ortam tutacağı ile çağrılır. Eğer bu öznitelik, bağlantı havuzu paylaşılan bir ortamda zaten etkinleştirilmişken ayarlanmışsa, bu özellik yalnızca sonradan tahsis edilen paylaşılan ortamları etkiler. Ayrıca bir ortamda bağlantı havuzunu etkinleştirmek de mümkündür. Ortam bağlantı havuzu hakkında aşağıdakilere dikkat edin: - NULL bir handle üzerinde bağlantı havuzunu etkinleştirmek, süreç düzeyinde bir özniteliktir. Sonrasında tahsis edilen ortamlar paylaşılan bir ortam olur ve süreç düzeyinde bağlantı havuzlama ayarını devralır. - Bir ortam tahsis edildikten sonra, bir uygulama bağlantı havuzu ayarını değiştirmeye devam edebilir. - Eğer ortam bağlantı havuzu etkinleştirilmişse ve bağlantının sürücüsü sürücü havuzunu kullanıyorsa, ortam havuzu tercih edilir. SQL_ATTR_CONNECTION_POOLING Sürücü Yöneticisi içinde uygulanır. Bir sürücünün SQL_ATTR_CONNECTION_POOLING uygulamasına gerek yoktur. ODBC 2.0 ve 3.0 uygulamaları bu ortam özniteliğini ayarlayabilir. Daha fazla bilgi için bakınız ODBC Bağlantı Havuzu. |
| SQL_ATTR_CP_MATCH (ODBC 3.0) | Bir bağlantı havuzundan nasıl seçileceğini belirleyen 32-bitlik bir SQLUINTEGER değeri.
SQLConnect veya SQLDriverConnect çağrıldığında, Sürücü Yöneticisi havuzdan hangi bağlantının tekrar kullanılacağını belirler. Sürücü Yöneticisi, çağrıdaki bağlantı seçeneklerini ve uygulamanın belirlediği bağlantı niteliklerini havuzdaki bağlantıların anahtar kelimeleri ve bağlantı nitelikleriyle eşleştirmeye çalışır. Bu özniteliğin değeri, eşleşme kriterlerinin hassasiyet seviyesini belirler. Bu özniteliğin değerini ayarlamak için aşağıdaki değerler kullanılır: SQL_CP_STRICT_MATCH = Yalnızca çağrıdaki bağlantı seçenekleriyle tam olarak eşleşen bağlantılar ve uygulama tarafından belirlenen bağlantı özellikleri yeniden kullanılır. Bu varsayılan seçenektir. SQL_CP_RELAXED_MATCH = Anahtar kelimeleri eşleşen bağlantı dizesi bağlantılar kullanılabilir. Anahtar kelimeler eşleşmeli, ancak tüm bağlantı özellikleri eşleşmemeli. Driver Manager'ın havuzlu bağlantıya bağlanırken eşleşmeyi nasıl gerçekleştirdiğine dair daha fazla bilgi için SQLConnect'e bakınız. Bağlantı havuzu hakkında daha fazla bilgi için bkz. ODBC Bağlantı Havuzu. |
| SQL_ATTR_ODBC_VERSION (ODBC 3.0) | Belirli işlevlerin ODBC 2.x veya ODBC 3.x davranışı gösterip göstermediğini belirleyen 32 bitlik tam sayı. Bu özniteliğin değerini ayarlamak için aşağıdaki değerler kullanılır: SQL_OV_ODBC3_80 = Sürücü Yöneticisi ve sürücü aşağıdaki ODBC 3.8 davranışını sergiler: - Sürücü, tarih, saat ve zaman damgası için ODBC 3.x kodlarını geri döndürür ve bekler. - Sürücü, SQLError, SQLGetDiagField veya SQLGetDiagRec çağrıldığında ODBC 3.x SQLSTATE kodlarını döndürür. - SQLTables çağrısındaki CatalogName argümanı arama desenini kabul eder. - Driver Manager C veri tipi genişletilebilirliğini destekler. C veri tipi genişletilebilirliği hakkında daha fazla bilgi için ODBC'deki C Veri Tipleri'ne bakınız. Daha fazla bilgi için ODBC 3.8'de Yenilikler Nelerdir bölümüne bakabilirsiniz. SQL_OV_ODBC3 = Sürücü Yöneticisi ve sürücü aşağıdaki ODBC 3.x davranışını sergiler: - Sürücü, tarih, saat ve zaman damgası için ODBC 3.x kodlarını geri döndürür ve bekler. - Sürücü, SQLError, SQLGetDiagField veya SQLGetDiagRec çağrıldığında ODBC 3.x SQLSTATE kodlarını döndürür. - SQLTables çağrısındaki CatalogName argümanı arama desenini kabul eder. - Driver Manager C veri tipi genişletilebilirliğini desteklemez. SQL_OV_ODBC2 = Sürücü Yöneticisi ve sürücü aşağıdaki ODBC 2.x davranışını sergiler. Bu özellikle, ODBC 3.x sürücüsüyle çalışan bir ODBC 2.x uygulaması için faydalıdır. - Sürücü, tarih, saat ve zaman damgası için ODBC 2.x kodlarını geri döndürür ve bekler. - Sürücü, SQLError, SQLGetDiagField veya SQLGetDiagRec çağrıldığında ODBC 2.x SQLSTATE kodlarını döndürür. - SQLTables çağrısındaki CatalogName argümanı arama desenini kabul etmez. - Driver Manager C veri tipi genişletilebilirliğini desteklemez. Bir uygulama, SQLHENV argümanı olan herhangi bir fonksiyonu çağırmadan önce bu ortam özniteliğini ayarlamalıdır, aksi takdirde çağrı SQLSTATE HY010 (Fonksiyon dizisi hatası) döndürecektir. Bu çevresel bayraklar için ek davranışların olup olmadığı sürücüye özgüdür. - Daha fazla bilgi için, Uygulamanın ODBC Versiyonunun Bildirilmesi ve Davranışsal Değişiklikler bölümlerine bakınız. |
| SQL_ATTR_OUTPUT_NTS (ODBC 3.0) | Sürücünün dizi verisini nasıl döndürdüğünü belirleyen 32 bitlik tam sayı. Eğer SQL_TRUE ise, sürücü dizi verisini null-sonlandırılmış olarak döndürür. Eğer SQL_FALSE ise, sürücü dizi verisini null-termin olarak döndürmez. Bu özellik varsayılan olarak SQL_TRUE. SQLSetEnvAttr'ye SQL_TRUE ayarlamak için yapılan bir çağrı SQL_SUCCESS döndürür. SQLSetEnvAttr'ye SQL_FALSE ayarlamak için yapılan bir çağrı SQL_ERROR ve SQLSTATE HYC00 döndürür (Isteğe bağlı özellik uygulanmamıştır). |
İlgili Fonksiyonlar
| Hakkında bilgi için | Bkz: |
|---|---|
| Bir tutacağa tahsis etmek | SQLAllocHandle Fonksiyonu |
| Bir ortam özniteliğinin ayarını döndürmek | SQLGetEnvAttr Function |