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.
ODBC sürücüsü indirme
Bu makale, Linux veya macOS üzerinde SQL Server için Microsoft ODBC Sürücüsü kullanan uygulamalarla ilgili programlama hususlarını açıklar. Bazı bağlantılar SQL Server Native Client materyaline işaret ediyor. Bu sayfalar tarihsel API bağlamı sağlar.
Bir sürücü versiyonu seçin
Yeni geliştirme için mevcut sürücü hattı olan SQL Server için Microsoft ODBC Driver 18 kullanın. Microsoft ODBC Driver 17 for SQL Server, destek yaşam döngüsünde tanımlandığı gibi, zaten onu dağıtan uygulamalar için desteklenmeye devam ediyor. SQL Server 2017 ile birlikte gelen ODBC Driver 13, yalnızca genişletilmiş destek anlaşması kapsamında 12 Ekim 2027'ye kadar genişletilmiş destek için uygundur.
Kurulumlu sürücü adını, bağlantı dizenizde, braketlerle birlikte belirtin:
Driver={ODBC Driver 18 for SQL Server}
Driver={ODBC Driver 17 for SQL Server}
Bir veri kaynağı adında (DSN) odbc.ini, adı küme parantezleri olmadan kullanın, örneğin Driver = ODBC Driver 18 for SQL Server. DSN sözdizimi için bkz. Bağlantı dizesi anahtar kelimeleri ve veri kaynağı adları (DSN'ler).
Sürüme özgü bağlantı ayarları için bkz. Büyük sürüm farklılıkları. Destek tarihleri ve işletim sistemi uyumluluğu için bkz. Destek yaşam döngüsü ve Sistem gereksinimleri.
Uygulama oluşturun
Başlık konumları, sıra, derleyici komutları, kitaplık adları ve bir C++ örneği için ODBC sürücüsüyle C ve C++ uygulamaları geliştirme ve C++ ve ODBC ile bağlanma ve sorgulama bölümlerine bakın.
Bir ODBC uygulaması, unixODBC başlıklarının (sqltypes.h, sqlext.h, sqlucode.h ve msodbcsql.h) sonrasına sql.h ekleyerek Çoklu Etkin Sonuç Kümeleri'ni (MARS) ve SQL Server'a özgü diğer özellikleri kullanabilir. Windows ODBC uygulamalarında kullandığınız SQL Server'a özgü öğeler için aynı sembolik isimleri kullanın.
Sürücü özelliklerini bul
Standart uygulama programlama arayüzü (API) için ODBC Programcı Referansı ile başlayın. Sonra sürücüye özgü davranış için mevcut sürücü dokümantasyonunu kullanın.
Microsoft ODBC Driver for SQL Server genel bakışı, sürücü belgelerine bağlantı verir. Aşağıdaki SQL Server Native Client makaleleri, sürücüyü Linux ve macOS'ta kullanan uygulamalar için API bağlamı sağlar:
- SQL Server ile İletişim Kurma (ODBC)
- Bağlantı ve sorgu zaman aşımı desteği
- Cursors
- Tarih/saat iyileştirmeleri (ODBC)
- Sorgu yürütme (ODBC)
- Hataları ve mesajları işleme
- Kerberos kimlik doğrulaması
- Büyük ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türler (ODBC)
- İşlemlerin gerçekleştirilmesi (ODBC). Linux ve macOS'ta dağıtık işlemler için DTC ile XA işlemleri kullanabilirsiniz.
- İşleme sonuçları (ODBC)
- Saklı yordamları çalıştırma
- Seyrek sütunlar desteği (ODBC)
- Doğrulama olmadan şifreleme kullanımı
- Tablo değerli parametreler
- Komut ve veri API'si için UTF-8 ve UTF-16
- Katalog fonksiyonlarının kullanımı
Limitations
Linux ve macOS'ta ODBC sürücüsünde aşağıdaki özelliklerin doğru çalıştığı doğrulanmamıştır:
- Failover kümesi bağlantısı.
- ODBC Sürücüsü 17'den önce Şeffaf Ağ IP Çözümlemesi.
- ODBC Driver 17.3 öncesinde Linux ve macOS ODBC Driver Built-In Diagnostics (BID) izleme
Desteklenmeyen özellikler
Linux ve macOS'ta ODBC sürücüsünde aşağıdaki özellikler mevcut değildir:
SQL_ATTR_ENLIST_IN_DTCözniteliği aracılığıyla dağıtılmış işlemler. Sürücü, Microsoft Dağıtılmış İşlem Düzenleyicisi (DTC) aracılığıyla XA işlemlerini destekler. Daha fazla bilgi için bkz. DTC ile XA işlemlerini kullanma.Veritabanı yansıtma.
FILESTREAM.
SQLSetConnectAttr'da ele alınan ODBC sürücüsü performansının profillenmesi ve performansla ilgili şu bağlantı öznitelikleri:
SQL_COPT_SS_PERF_DATASQL_COPT_SS_PERF_DATA_LOGSQL_COPT_SS_PERF_DATA_LOG_NOWSQL_COPT_SS_PERF_QUERYSQL_COPT_SS_PERF_QUERY_INTERVALSQL_COPT_SS_PERF_QUERY_LOG
SQLBrowseConnectSürüm 17.2'den önce.SQL_C_INTERVAL_YEAR_TO_MONTHbölümünde belgelenen, gibi C aralık türleri.SQL_ATTR_ODBC_CURSORSöğesininSQLSetConnectAttrözniteliğininSQL_CUR_USE_ODBCdeğeri.
Karakter verilerinin işlenmesi
Linux ve macOS'ta, yerel SQLWCHAR türü yerine ODBC geniş karakterli API'leriyle UTF-16 wchar_t tamponları kullanın. Sürücü arayüzü 16-bit kod birimleri kullanır.
Karakter kodlamaları
ODBC Sürücü 13 ve 13.1 için SQLCHAR verileri için UTF-8 kullanmalısınız. Bu sürümler başka hiçbir kodlamayı desteklemiyor.
ODBC Sürücü 17'den itibaren desteklenen karakter setleri ve veri kodlamaları SQLCHAR şunlardır:
Uyarı
musl ve iconv arasındaki glibc farklar nedeniyle, bu bölgelerin çoğu Alpine Linux'ta desteklenmiyor. Daha fazla bilgi için bkz. glibc ile işlevsel farklılıklar.
| İsim | Description |
|---|---|
| UTF-8 | Unicode |
| CP437 | MS-DOS Latin ABD |
| CP850 | MS-DOS Latince 1 |
| CP874 | Latin/Tay dili |
| CP932 | Japonca (Windows kod sayfası 932) |
| CP936 | Basitleştirilmiş Çince, GBK |
| CP949 | Korece (Windows kod sayfası 949) |
| CP950 | Geleneksel Çince, Big5 |
| CP1250 | Orta Avrupa |
| CP1251 | Kiril |
| CP1252 | Batı Avrupa |
| CP1253 | Yunanca |
| CP1254 | Türkçe |
| CP1255 | İbranice |
| CP1256 | Arapça |
| CP1257 | Baltık |
| CP1258 | Vietnamca |
| ISO-8859-1 | Latin-1 |
| ISO-8859-2 | Latin-2 |
| ISO-8859-3 | Latin-3 |
| ISO-8859-4 | Latin-4 |
| ISO-8859-5 | Latin/Kiril |
| ISO-8859-6 | Latin/Arapça |
| ISO-8859-7 | Latin/Yunanca |
| ISO-8859-8 | İbranice |
| ISO-8859-9 | Türkçe |
| ISO-8859-13 | Latin-7 |
| ISO-8859-15 | Latin-9 |
Bağlandığınızda, sürücü yüklendiği sürecin mevcut yerel ayarını algılar. Yerel ayar listelenen kodlamalardan birini kullanıyorsa, sürücü SQLCHAR (dar karakterli) verileri için o kodlamayı kullanır. Aksi takdirde, varsayılan olarak UTF-8 olur. İşlemler varsayılan olarak C yerel ayarında başlar, bu da sürücünün varsayılan olarak UTF-8 kullanmasına neden olur. Bir uygulamanın listelenen kodlamalardan birine ihtiyacı varsa, bağlanmadan önce setlocale çağrısını yapın. Yerel konumu açıkça belirtin veya ortamın yerel ayarlarını kullanmak için boş bir dize (örneğin, setlocale(LC_ALL, "")) kullanın.
Kodlamanın UTF-8 olduğu tipik bir Linux veya macOS ortamında, 13 veya 13.1'den ODBC Driver 17'ye yükselten kullanıcılar fark görmezler. Listelenen UTF-8 dışı bir kodlama setlocale kullanan uygulamalar, sürücüye giden ve gelen veriler için UTF-8 yerine bu kodlamayı kullanmak zorundadır.
Veri için SQLWCHAR UTF-16LE (küçük endian) kullanmalısınız.
Giriş parametrelerini SQLBindParameter kullanarak bağladığınızda, dar bir karakter SQL türü, örneğin SQL_VARCHAR, belirtirseniz, sürücü sağlanan veriyi istemci kodlamasından o parametre için sunucu tarafı kodlamasına dönüştürür. Kodlama karşılaştırma düzenine bağlıdır; her zaman kod sayfası 1252 değildir. Çıkış parametreleri için sürücü, verilerle ilişkili harmanlama bilgilerinde belirtilen kodlamadan istemci kodlamasına dönüştürür. Hedef kodlamada temsil edilemeyen kaynak kodlamadaki karakterler soru işaretine (?). dönüştürülür.
Giriş parametreleri bağlanırken bu veri kaybını önlemek için, örneğin SQL_WVARCHARbir Unicode SQL karakter türü belirtin. Sürücü, istemci kodlamasını UTF-16'ya dönüştürür ve bu da tüm Unicode karakterlerini temsil edebilir. Hedef sütun veya parametre ayrıca Unicode tipi (nchar, nvarchar veya ntext) veya tüm orijinal kaynak verilerini temsil edebilen bir harmanlama ya da kodlama içeren bir tür olmalıdır. Çıkış parametreleri için, bir Unicode SQL tipi ve şu seçeneklerden birini belirtin: sürücünün veriyi UTF-16 olarak döndürmesine neden olan bir Unicode C tipi (SQL_C_WCHAR) veya kaynak veriyi temsil edebilen istemci kodlamasına sahip dar bir C tipi. UTF-8 her zaman bu veriyi temsil edebilir.
Karşılaştırmalar ve kodlamalar hakkında daha fazla bilgi için Collation and Unicode support sayfasına bakınız.
Windows ile Linux veya macOS iconv sürümleri arasında dönüşüm farklılıkları vardır:
- Kod sayfası 1255 için,
0xCAbaytı Windows'ta0x00CAUTF-16 kod noktasına, macOS ve Linux'ta ise0x05BA'ün 1.15'ten önceki sürümlerindelibiconvUTF-16 kod noktasına dönüştürülür. - 2003 tarihli Big5/CP950 revizyonu olmayan Linux
BIG5-2003kütüphaneleri, o revizyonda eklenen karakterleri (iconv) doğru şekilde dönüştürmez. - Kod sayfası 932 (Japonca, Shift-JIS) için, kodlama standardında tanımlanmayan karakterlerin çözülmesi farklılık gösterir. Örneğin, bayt
0x80Windows'ta U+0080'e dönüştürülür ve Linux ile macOS'taiconvsürüme bağlı olarak U+30FB’ye dönüşebilir.
ODBC Sürücü 13 ve 13.1'de, UTF-8 çok baytlı karakterler veya UTF-16 surrogate çiftlerini tamponlar SQLPutData arasında bölmek veri bozulmasına yol açar. Kısmi karakter kodlamalarıyla bitmeyen akış tamponları kullanın. Bu sınırlama ODBC Sürücü 17'de kaldırılmıştır.
Karakter kodlama, dönüştürme, parametre bağlama ve tampon boyutlandırma için Bilinen sorunlar bölümüne bakın.
OpenSSL
ODBC Sürücü 17.4'ten itibaren sürücü OpenSSL'i dinamik olarak yükler; bu da ayrı sürücü dosyaları olmadan 1.0 veya 1.1 sürümlü sistemlerde çalışmasını sağlar. Sürüm 17.9'dan başlayarak sürücü, önceki sürümlere ek olarak OpenSSL 3.0'ı da destekler. OpenSSL'in birden fazla sürümü bulunduğunda, sürücü kütüphane arama yollarından desteklenen bir sürümü yüklemeye çalışır.
| Sürücü sürümü | Desteklenen OpenSSL sürümleri |
|---|---|
| 17.4'ten 17.8'e kadar | 1.0, 1.1 |
| 17.9 ve sonraki 17.x sürümleri ile tüm Driver 18 sürümleri | 1.0, 1.1, 3.0 |
OpenSSL 4 desteklenmiyor. macOS'ta, OpenSSL 4'e işaret eden bir Homebrew openssl bağlantısı, OpenSSL 3 yüklü olsa bile sürücünün OpenSSL’yi yüklemesini engelleyebilir. Kütüphane yolunu ve yüklü sürümleri kontrol edin.
Uyarı
Sürücüyü veya bileşenlerinden birini kullanan uygulama, OpenSSL'in farklı bir sürümüne bağlanır veya dinamik olarak yüklerse potansiyel bir çakışma meydana gelebilir. Sistemde birkaç OpenSSL sürümü varsa ve uygulama bunu kullanıyorsa, uygulamanın yüklediği sürüm ile sürücünün uyuştuğundan emin olun. Hatalar belleği bozabilir ve bariz ya da tutarlı şekillerde ortaya çıkmayabilir.
Alpine Linux
musl içindeki yeni iş parçacıkları için varsayılan yığın boyutu, yürütülebilir dosya daha büyük bir varsayılan istemedikçe 128 KB'dır. Bir iş parçacığı, sürücüyü çağırdığında bu sınırı aşabilir. Alpine Linux'ta bir ODBC uygulamasını, daha büyük bir varsayılan iş parçacığı yığını istemek için -Wl,-z,stack-size=<size_in_bytes> ile bağlayın. Açık bir stack boyutuna sahip iş parçacığı oluşturan uygulamalar da bu iş parçacıkları için yeterli bir boyut seçmelidir.
Ana iş parçacığı yığını ile yeni iş parçacıkları için varsayılan yığın aynı ayar değil.
glibc sistemlerde, yeni iş parçacıkları için varsayılan değer genellikle sürecin yığın kaynak sınırını takip eder, ancak bu sınır sınırsız olduğunda mimariye özgü bir yedek yöntem vardır. Linux sistemlerinde sabit 2 MB varsayılanı olduğunu varsaymayın.
Ek notlar
Bir ODBC uygulamasından özel bir yönetici bağlantısı (DAC) oluşturmak için bağlantı dizesi içinde Server=tcp:<server>,<dac_port> değerini ayarlayın. Keşfedilen DAC bağlantı noktasını kullanın, örneğin normal bağlantı noktasını değil. Örneğin, DAC portu 33000 ise, Server=tcp:<server>,33000 olarak ayarlayın. Bu bağlantı dizisi parçaları yalnızca uç noktayı belirtir, kimlik doğrulamayı değil. Kimlik doğrulama ve sunucu-sertifika doğrulamasını ayrı ayrı yapılandırın.
Oturum açma hesabı, sysadmin sunucu rolünün bir üyesi olmalıdır. Uzaktan erişim için sunucunun uzaktan yönetici bağlantıları seçeneğinin etkinleştirilmiş olması gerekir. Erişim gereksinimleri, sunucu yapılandırması ve komut satırı yönetimi prosedürleri için veritabanı yöneticileri için tanı bağlantısı bölümünü inceleyebilirsiniz. Port keşfi için DAC portuna bakın.
unixODBC sürücü yöneticisi, deyim özniteliklerini SQLSetConnectAttr aracılığıyla Windows Sürücü Yöneticisi ile aynı şekilde işler. ODBC 2.x deyim seçenekleri, örneğin SQL_ATTR_QUERY_TIMEOUT ve SQL_ATTR_MAX_ROWS, bağlantıdaki mevcut ve yeni deyimler için geçerlidir. ODBC 3.x yalnızca deyime özgü öznitelikler, örneğin SQL_ATTR_ROW_ARRAY_SIZE ve SQL_ATTR_PARAMSET_SIZE, SQLSTATE HY092'yi geri getirir. Hem bağlantı hem de ifade seviyelerinde tanımlanan öznitelikler, örneğin SQL_ATTR_METADATA_ID, her iki seviyede de de ayarlanabilir. Bağlantı seviyesinde yalnızca deyime özgü öznitelikler ayarlamak ODBC 3.x'te kullanımdan kaldırılmıştır, bu yüzden bunun yerine SQLSetStmtAttr çağırın. Daha fazla bilgi için SQLSetConnectAttr fonksiyonuna bakınız.
Çok fazla iş parçacıklı uygulamalarda, unixODBC handle doğrulaması performans darboğazı haline gelebilir. unixODBC’yi --enable-fastvalidate ile derlemek performansı artırabilir. Ancak bu seçenek, geçersiz tutamaçları ODBC API'lerine gönderen uygulamaların SQL_INVALID_HANDLE döndürmek yerine çökmesine neden olabilir.
Platform kurulumu ve yapılandırma adımları için bkz:
- ODBC sürücüsünü Linux'a yükleyin.
- macOS'a ODBC sürücüsünü yükleyin.
- unixODBC sürücü yöneticisini kurun.
- Bağlantı dizelerini ve DSN'leri yapılandırın.
- Sistem gereksinimlerini gözden geçirin.