Aracılığıyla paylaş


SQL Server yerel istemci ile ado kullanma

' De kullanılmaya başlanan yeni özelliklerden yararlanmak için SQL Server 2005 gibi birden çok etkin sonuç kümeleri (mars), sorgu bildirimleri, kullanıcı tanımlı türler (UDTs) veya yeni xml veri türü, ActiveX Data Objects (ado) kullanan mevcut uygulamalar kullanmak SQL Server yerel istemci ole db sağlayıcı olarak kendi veri erişim sağlayıcı.

Siz de sunulan yeni özellikleri kullanan gerek yoktur, SQL Server 2005, kullanmaya gerek yoktur SQL Server yerel istemci ole db sağlayıcı; sqloledb genellikle olan geçerli veri erişim sağlayıcı, kullanarak devam edebilirsiniz.Varolan bir uygulama geliştirme ve içinde sunulan yeni özellikleri kullanmak zorunda SQL Server 2005, kullanması gereken SQL Server yerel istemci ole db sağlayıcı.

Not

Yeni bir uygulama geliştiriyorsanız, ado kullanmayı düşünün tavsiye edilir.net ve.net Framework veri sağlayıcısı için SQL Server yerine SQL Server Son sürümleri, tüm yeni özellikler erişmek için Native Client SQL Server.Hakkında daha fazla bilgi için.net Framework veri sağlayıcısı için SQL Server, bakın.ado net Framework sdk belgeleri.net.

Son sürümleri yeni özelliklerini kullanmak, ado etkinleştirmek için SQL Server, bazı geliştirmeler yapıldı SQL Server yerel istemci ole db sağlayıcı çekirdek özelliklerini genişletirole db. ado uygulamaları kullanmak Bu geliştirmeler yeni izin SQL Server özellikleri ve iki veri türleri tanıtılan içinde tüketmeyi SQL Server 2005: xml and udt.Bu geliştirmeler de geliştirmeler yararlanma varchar, nvarchar, ve varbinary veri türleri.SQL ServerYerel istemci için dbprop SSPROP_INIT_DATATYPECOMPATIBILITY başlatma özellik eklerküme_SQLSERVERDBINIT özellik küme ado uygulamalar tarafından böylece yeni veri türleri, ado ile uyumlu bir şekilde sunulur.Buna ek olarak, SQL Server de tanımlayan yeni bir bağlantı yerel istemci ole db sağlayıcı dize adlı bir anahtar sözcük DataTypeCompatibility bağlantı ayarlayın dize.

Not

Varolan ado uygulamaları erişebilir ve xml, udt ve sqloledb kullanma büyük değer metin ve ikili alan değerlerini güncelleştirmek sağlayıcı.Yeni daha büyük varchar(max), nvarchar(max), ve varbinary(max) veri türleri ado türü olarak döndürülen adLongVarChar, adLongVarWChar ve adLongVarBinary sırasıyla.xml sütun olarak dönen adLongVarChar, udt sütunları olarak geri gönderilir ve adVarBinary.Bununla birlikte kullanırsanız, SQL Server yerel istemci ole db sağlayıcı (SQLNCLI10) yerine sqloledb duyduğunuz için emin olmak küme DataTypeCompatibility "80" için anahtar sözcük Yeni veri türleri için ado veri türleri doğru biçimde eşleşeceğinden emin.

sql Server yerel İstemcisi'nden ado etkinleştirme

Kullanımını etkinleştirmek için SQL Server Native Client, ado uygulamaları aşağıdaki anahtar sözcükler kendi bağlantı dizeleri uygulamak gerekir:

  • Provider=SQLNCLI10

  • DataTypeCompatibility=80

ado ile ilgili daha fazla bilgi için bağlantıları desteklenen anahtar sözcükler dize SQL Server Native Client, bkz: SQL Server ile yerel istemci bağlantı dizesi anahtar sözcükler kullanma.

Bir ado bağlantı kurma bir örnek şudur dize , tam olarak etkin çalışmak için SQL Server MARS'ın özelliğini etkinleştirme dahil Native Client:

Dim con As New ADODB.Connection

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks2008R2;" _ 
         & "Integrated Security=SSPI;" _
         & "DataTypeCompatibility=80;" _
         & "MARS Connection=True;"
con.Open

Örnekler

Aşağıdaki bölümlerde ile ADO'yu nasıl kullanabileceği örnekleri SQL Server yerel istemci ole db sağlayıcı.

xml sütun veri alma

Bu örnekte, bir kayıt kümesi almak ve xml verilerini görüntülemek için kullanılan sütun , AdventureWorks2008R2 örnek veritabanı.

Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sXMLResult As String

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks2008R2;" _ 
         & "Integrated Security=SSPI;" _ 
         & "DataTypeCompatibility=80;"

con.Open

' Get the xml data as a recordset.
Set rst.ActiveConnection = con
rst.Source = "SELECT AdditionalContactInfo FROM Person.Person " _
   & "WHERE AdditionalContactInfo IS NOT NULL"
rst.Open

' Display the data in the recordset.
While (Not rst.EOF)
   sXMLResult = rst.Fields("AdditionalContactInfo").Value
   Debug.Print (sXMLResult)
   rst.MoveNext
End While

con.Close
Set con = Nothing

Not

xml sütunları içeren Recordset süzme desteklenmiyor.Kullandıysanız, bir hata döndürdü.

udt sütun veri alma

Bu örnekte, bir komut nesnesi için kullanılan yürütmek bir udt döndüren bir sql sorgusu udt veri güncelleştirildiğinde ve yeni verileri veritabanına geri sonra eklenir.Bu örnek varsayar noktası udt zaten kayıtlı olup veritabanında.

Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Dim strOldUDT As String
Dim strNewUDT As String
Dim aryTempUDT() As String
Dim strTempID As String
Dim i As Integer

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks2008R2;" _ 
         & "Integrated Security=SSPI;" _
         & "DataTypeCompatibility=80;"

con.Open

' Get the UDT value.
Set cmd.ActiveConnection = con
cmd.CommandText = "SELECT ID, Pnt FROM dbo.Points.ToString()"
Set rst = cmd.Execute
strTempID = rst.Fields(0).Value
strOldUDT = rst.Fields(1).Value

' Do something with the UDT by adding i to each point.
arytempUDT = Split(strOldUDT, ",")
i = 3
strNewUDT = LTrim(Str(Int(aryTempUDT(0)) + i)) + "," + _
   LTrim(Str(Int(aryTempUDT(1)) + i))

' Insert the new value back into the database.
cmd.CommandText = "UPDATE dbo.Points SET Pnt = '" + strNewUDT + _
   "' WHERE ID = '" + strTempID + "'"
cmd.Execute

con.Close
Set con = Nothing

Etkinleştirme ve MARS'ı kullanma

Bu örnekte, bağlantı dize aracılığıyla mars etkinleştirmek için oluşturulmuş SQL Server yerel istemci ole db sağlayıcısını ve ardından iki recordset nesneleri oluşturulduğu yürütmek kullanarak aynı bağlantı.

Dim con As New ADODB.Connection

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks2008R2;" _ 
         & "Integrated Security=SSPI;" _
         & "DataTypeCompatibility=80;" _
         & "MARS Connection=True;"
con.Open

Dim recordset1 As New ADODB.Recordset
Dim recordset2 As New ADODB.Recordset

Dim recordsaffected As Integer
Set recordset1 =  con.Execute("SELECT * FROM Table1", recordsaffected, adCmdText)
Set recordset2 =  con.Execute("SELECT * FROM Table2", recordsaffected, adCmdText)

con.Close
Set con = Nothing

ole db sağlayıcı önceki sürümlerinde, bu kod tek bir bağlantı yalnızca bir active sonuçlar küme açılamadı çünkü ikinci yürütme üzerinde oluşturulacak bir örtük bağlantısı neden olur.Dolaylı bağlantısı olmayan etkisinden ole db bağlantı havuzunda bu ek bir yüke neden olur.mars özelliği ile açık olarak SQL Server yerel istemci ole db sağlayıcı, aldığınız birden çok active sonuçlar üzerinde bir bağlantı.