SQL Server 2005 Yerel İstemcisinden Uygulama Güncelleştirme
Önemli
SQL Server Native Client (SNAC) şu şekilde gönderilmez:
- SQL Server 2022 (16.x) ve sonraki sürümleri
- SQL Server Management Studio 19 ve sonraki sürümleri
YENI uygulama geliştirme için SQL Server Yerel İstemcisi (SQLNCLI veya SQLNCLI11) ve SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) önerilmez.
Yeni projeler için aşağıdaki sürücülerden birini kullanın:
- SQL Server için Microsoft ODBC Sürücüsünü
- SQL Server için Microsoft OLE DB Sürücüsünü
SQL Server Veritabanı Altyapısı'nın (sürüm 2012 ile 2019 arasında) bir bileşeni olarak gelen SQLNCLI için, Destek Yaşam Döngüsü özel durumukonusuna bakın.
Bu konu başlığında, SQL Server 2005'te (9.x) SQL Server Yerel İstemcisi'nin bu yana SQL Server Yerel İstemcisi'nde yapılan hataya neden olan değişiklikler açıklanmaktadır.
Microsoft Veri Erişim Bileşenleri'nden (MDAC) SQL Server Yerel İstemcisi'ne yükseltme yaptığınızda bazı davranış farklılıkları da görebilirsiniz. Daha fazla bilgi için bkz. MDAC'den SQL Server Yerel İstemcisine Uygulama Güncelleştirme.
SQL Server Native Client 9.0, SQL Server 2005 (9.x) ile birlikte gönderilir. SQL Server Native Client 10.0, SQL Server 2008 (10.0.x) ile birlikte gönderilir. SQL Server Native Client 10.5, SQL Server 2008 R2 (10.50.x) ile birlikte gönderilir. SQL Server Native Client 11.0, SQL Server 2012 (11.x) ve SQL Server 2014 (12.x) ile birlikte gönderilir.
SQL Server 2005'ten (9.x) bu yana SQL Server Yerel İstemcisinde değişen davranış | Açıklama |
---|---|
OLE DB tuş takımı yalnızca tanımlı ölçeğe yöneliktir. | Dönüştürülen verilerin sunucuya gönderildiği dönüştürmeler için, SQL Server Yerel İstemcisi (SQL Server 2008'de (10.0.x) başlayarak) yalnızca en fazla tarih saat değeri uzunluğuna kadar verilerde sondaki sıfırları kaydeder. SQL Server Native Client 9.0, 9 basamaklıdır. |
ICommandWithParameter::SetParameterInfo için DBTYPE_DBTIMESTAMP doğrulayın. | SQL Server Yerel İstemcisi (SQL Server 2008'de (10.0.x) başlayarak) ICommandWithParameter::SetParameterInfo içindeki bScale için OLE DB gereksinimini DBTYPE_DBTIMESTAMP için kesirli saniye duyarlık değerine ayarlanacak şekilde uygular. |
SQL Server Native Client 10.0'da (SQL Server 2008 (10.0.x)) başlayarak sp_columns saklı yordam artık IS_NULLABLE sütunu için "HAYIR" yerine "HAYIR" döndürür. | |
SQLSetDescRec, SQLBindParameter ve SQLBindCol artık tutarlılık denetimi gerçekleştiriyor. | SQL Server Native Client 10.0'ın öncesinde, SQL_DESC_DATA_PTR ayarı SQLSetDescRec, SQLBindParameter veya SQLBindCol'da herhangi bir tanımlayıcı türü için tutarlılık denetimine neden olmadı. |
SQLCopyDesc artık tanımlayıcı tutarlılık denetimi yapıyor. | SQL Server Native Client 10.0'ın öncesinde SQLCopyDesc, SQL_DESC_DATA_PTR alanı belirli bir kayıtta ayarlandığında tutarlılık denetimi yapmamıştı. |
SQLGetDescRec artık tanımlayıcı tutarlılık denetimi yapmaz. | SQL Server Native Client 10.0'ın öncesinde SQLGetDescRec, SQL_DESC_DATA_PTR alanı ayarlandığında tanımlayıcı bir tutarlılık denetimi gerçekleştirdi. Bu, ODBC belirtimi ve SQL Server Native Client 10.0 (SQL Server 2008 (10.0.x)) ve sonraki sürümlerde gerekli değildi, bu tutarlılık denetimi artık gerçekleştirilmiyor. |
Tarih aralık dışında olduğunda farklı bir hata döndürüldü. |
datetime türü için, SQL Server Yerel İstemcisi (SQL Server 2008'den (10.0.x) başlayarak) aralık dışı bir tarih için önceki sürümlerde döndürülenden farklı bir hata numarası döndürülür. Özellikle, SQL Server Yerel İstemcisi 9.0, datetimeve 10.0 (SQL Server 2008 (10) ile başlayan SQL Server Yerel İstemcisi'ne yapılan dize dönüştürmelerinde aralık dışı tüm yıl değerleri için 22007 döndürdü .0.x)), tarih datetime2 tarafından desteklenen aralık içinde, ancak datetime veya smalldatetimetarafından desteklenen aralığın dışında olduğunda 22008 döndürür. |
tarih saat değeri kesirli saniyeleri kısaltır ve yuvarlama günü değiştirecekse yuvarlamaz. | SQL Server Native Client 10.0'ın öncesinde, sunucuya gönderilen datetime değerlerinin istemci davranışı, bunları saniyenin en yakın 1/300'ünde yuvarlar. SQL Server Native Client 10.0 sürümünden başlayarak, yuvarlama günü değiştirirse bu senaryo kesirli saniyelerin kesilmesine neden olur. |
datetime değeri için saniyelerin kesilmesi mümkündür. | SQL Server 2005 sunucusuna bağlanan SQL Server 2008 (10.0.x) Yerel İstemcisi (veya üstü) ile oluşturulan bir uygulama, DBTYPE_DBTIMESTAMP (OLE DB) veya SQL_TIMESTAMP (ODBC) türü tanımlayıcısı ve 0 ölçeğiyle bir datetime sütununa bağlanırsanız, sunucuya gönderilen verilerin zaman kısmı için saniyeleri ve kesirli saniyeleri kesirli olarak kesirli olarak ayırır. Mesela: Giriş verileri: 1994-08-21 21:21:36.000 Eklenen veriler: 1994-08-21 21:21:00.000 |
OLE DB verilerinin DBTYPE_DBTIME DBTYPE_DATE dönüştürülmesi artık günün değişmesine neden olamaz. | SQL Server Native Client 10.0'ın öncesinde, bir DBTYPE_DATE saat bölümü gece yarısı yarım saniye içindeyse OLE DB dönüştürme kodu günün değişmesine neden oldu. SQL Server Native Client 10.0 sürümünden itibaren gün değişmez (kesirli saniyeler kesilir ve yuvarlanmaz). |
IBCPSession::BCColFmt dönüştürme değişiklikleri. | SQL Server Native Client 10.0 sürümünden başlayarak, SQLDATETIME veya SQLDATETIME'ı dize türüne dönüştürmek için IBCPSession::BCOColFmt kullandığınızda kesirli bir değer dışarı aktarılır. Örneğin, SQLDATETIME türünü SQLNVARCHARMAX türüne dönüştürürken, SQL Server Yerel İstemcisi'nin önceki sürümleri döndürüldü 1989-02-01 00:00:00. SQL Server Native Client 10.0 ve sonraki sürümleri 1989-02-01 00:00:00.00000000 döndürür. |
Gönderilen verilerin boyutu SQL_LEN_DATA_AT_EXEC belirtilen uzunlukla eşleşmelidir. | SQL_LEN_DATA_AT_EXEC kullanırken, verilerin boyutu SQL_LEN_DATA_AT_EXEC ile belirttiğiniz uzunlukla eşleşmelidir. SQL_DATA_AT_EXEC kullanabilirsiniz ancak SQL_LEN_DATA_AT_EXEC kullanmanın olası performans avantajları vardır. |
BCP API'sini kullanan özel uygulamalar artık bir uyarı görebilir. | Veri uzunluğu tüm türler için bir alan için belirtilen uzunluktan büyükse BCP API'si bir uyarı iletisi oluşturur. Daha önce, bu uyarı yalnızca karakter türleri için verilmişti, ancak tüm türler için verilmeyecek. |
Tarih/saat türü olarak bağlı bir sql_variant boş dize eklemek hata oluşturur. | SQL Server Native Client 9.0'da, tarih/saat türü olarak bağlı bir sql_variant boş dize eklemek hata oluşturmadı. SQL Server Native Client 10.0 (ve üzeri) bu durumda doğru bir hata oluşturur. |
Daha katı SQL_C_TYPE _TIMESTAMP ve DBTYPE_DBTIMESTAMP parametre doğrulaması. | SQL Server 2008 (10.0.x) Yerel İstemci'den önce, datetime değerleri SQL Server tarafından tarih saat ölçeğine uyacak şekilde yuvarlanır ve smalldatetime sütunların ölçeğine uyacak şekilde yuvarlanır. SQL Server 2008 (10.0.x) Yerel İstemcisi (ve üzeri), kesirli saniyeler için ODBC çekirdek belirtiminde tanımlanan daha katı doğrulama kurallarını uygular. Bir parametre değeri, sonundaki basamaklar kesilmeden istemci bağlaması tarafından belirtilen veya örtülen ölçek kullanılarak SQL türüne dönüştürülemiyorsa bir hata döndürülür. |
Bir tetikleyici çalıştırıldığında SQL Server farklı sonuçlar döndürebilir. | SQL Server 2008'de (10.0.x) yapılan değişiklikler, NOCOUNT OFF etkinken bir tetikleyicinin çalışmasına neden olan bir deyimden döndürülen farklı sonuçlara sahip bir uygulamaya neden olabilir. Bu durumda uygulamanız bir hata oluşturabilir. Bu hatayı çözmek için tetikleyicide NOCOUNT ON |
Ayrıca Bkz.
SQL Server Yerel İstemci Programlama