Aracılığıyla paylaş


SQL Server yerel istemci ile ADO kullanma

' De sunulan yeni özelliklerden yararlanmak için SQL Server 2005 birden çok etkin bir sonuç kümesi'ni (MARS), sorgu bildirimleri, kullanıcı tanımlı türler (UDTs) veya yeni gibi XML veri türü, ActiveX Data Objects (ADO) kullanan varolan uygulamaların kullanmalısınızSQL Server Yerel istemci OLE DB sağlayıcısı olarak kendi verilerini sağlayıcı erişin.

' De sunulan yeni özellikleri kullanan gereksiniminiz varsa SQL Server 2005, kullanmaya gerek yoktur SQL Server Yerel istemci OLE DB sağlayıcı; genelde SQLOLEDB olan geçerli veri erişim sağlayıcınız, kullanarak devam edebilirsiniz. Varolan bir geliştirme ve uygulama olarak yeni özelliklerini kullanmak gerekir SQL Server 2005, kullanmanız gereken SQL Server Yerel istemci OLE DB sağlayıcı.

Not

Yeni bir uygulama geliştiriyorsanız, ADO.NET ve .NET Framework veri sağlayıcı'nı kullanarak değerlendirmeniz önerilir SQL Server yerine SQL Server Son sürümleri, tüm yeni özelliklerine erişmek için yerel istemci SQL Server. .NET Framework veri sağlayıcı hakkında daha fazla bilgi için SQL Server, ADO.NET .NET Framework SDK belgelerine bakın.

Yeni özellikler son sürümlerinden birini kullanmak, ADO etkinleştirmek için SQL Server, bazı geliştirmeler yapıldı SQL Server OLE DB Çekirdek özelliklerini genişleten yerel istemci OLE DB sağlayıcı. Bu geliştirmeler kullanmak, ADO uygulamaları yeni izin ver SQL Server Özellikler ve iki veri türleri de kullanılmaya başlandı kullanmak için SQL Server 2005: XML and UDT.Bu geliştirmeler, geliştirmeler de yararlanma varchar, nvarchar, and varbinary veri türleri.SQL Server Yerel istemci DBPROPküme_SQLSERVERDBINIT özellikne SSPROP_INIT_DATATYPECOMPATIBILITY başlatma özellik ekler küme ADO uygulamalar tarafından kullanılması için yeni veri türleri, ADO ile uyumlu bir biçimde sunulur.Buna ek olarak, SQL Server Yerel istemci OLE DB sağlayıcı da yeni bir tanımlayan bağlantı dizesi adlı bir anahtar sözcük DataTypeCompatibility küme bağlantı dizesi.

Not

Varolan bir ADO uygulamaları erişebilir ve XML, UDT, büyük bir değer metin ve ikili alan değerleri SQLOLEDB sağlayıcı kullanarak güncelleştirmek.Yeni daha büyük varchar(max), nvarchar(max), and varbinary(max) ADO türü veri türleri döndürülenadLongVarChar, adLongVarWChar and adLongVarBinary sırasıyla.XML sütunları verilir adLongVarCharUDT sütunları ve gönderiliradVarBinary.Ancak, kullandığınız SQL Server Yerel istemci OLE DB sağlayıcı (SQLNCLI10) SQLOLEDB yerine için emin olmak gereken küme DataTypeCompatibility"80" anahtar, yeni veri türleri doğru ADO veri türleri ile eşler.

SQL Server yerel istemciden ADO etkinleştirme

Kullanımını etkinleştirmek için SQL Server Yerel istemci, ADO uygulamalar aşağıdaki anahtar sözcükler, bağlantı dizeleri uygulamanız gerekir:

  • Provider=SQLNCLI10

  • DataTypeCompatibility=80

ADO bağlantılar hakkında daha fazla bilgi için dize desteklenen anahtar sözcük SQL Server Yerel istemci için bkz: SQL Server ile yerel istemci bağlantı dizesi anahtar sözcükler kullanma.

Bir ADO bağlantı kurmanın bir örnek aşağıda verilmektedir dize, tam olarak çalışmak için etkin SQL Server ' ın MARS özelliğini etkinleştirme dahil olmak üzere yerel istemci:

Dim con As New ADODB.Connection

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

Örnekler

ADO ile nasıl kullanabileceğinizi gösteren örnekler aşağıdaki bölümlerde SQL Server Yerel istemci OLE DB sağlayıcı.

XML sütun veri alınıyor

In this example, a recordset is used to retrieve and display the data from an XML column in the SQL ServerAdventureWorks sample database.

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

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

con.Open

' Get the xml data as a recordset.
Set rst.ActiveConnection = con
rst.Source = "SELECT AdditionalContactInfo FROM Person.Contact " _
   & "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ütunlarla Recordset süzme işlemi desteklenmiyor.Bu seçenek kullanılırsa, bir hata döndürdü.

UDT sütun veri alınıyor

Bu örnekte, bir Command nesnesidir için kullanılan yürütmek bir UDT döndüren bir SQL sorgusu UDT veriler güncelleştirilir ve verileri yeni veritabanına geri sonra eklenir.Bu örnek, varsayar Nokta UDT, veritabanında zaten kaydettirildi.

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=AdventureWorks;" _ 
         & "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, MARS aracılığıyla etkinleştirmek için bağlantı dizesi oluşturulur SQL Server Yerel istemci OLE DB sağlayıcı ve ardından iki recordset nesnesi, aynı bağlantıyı kullanarak çalıştırmak için oluşturulur.

Dim con As New ADODB.Connection

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks;" _ 
         & "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 ikinci yürütülmesi için oluşturulacağı örtülü bir bağlantı neden yalnızca bir etkin küme sonuçlarnı tek bir bağlantı açılamadı.Örtülü bağlantı değil havuza alınmış için OLE DB bağlantı havuzunda bu ek yükü neden olur.MARS özelliğiyle, tarafından gösterilen SQL Server Yerel istemci OLE DB sağlayıcı, bir bağlantıda birden çok etkin sonucu alırsınız.