SQL Server yerel istemci ile ado kullanma

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

Tanıtılan yeni özelliklerinden herhangi birini kullanmanız gerekmez, SQL Server 2005, kullanmaya gerek yok SQL Serveryerel istemci ole db sağlayıcısı; sqloledb genellikle olan geçerli veri erişim sağlayıcının, kullanmaya devam edebilirsiniz. Varolan bir uygulama geliştirme ve tanıtılan yeni özelliklerini kullanmak gerekiyorsa SQL Server 2005, sen-meli kullanma SQL Serveryerel istemci ole db sağlayıcısını.

[!NOT]

Yeni bir uygulama geliştiriyorsanız, ado kullanmayı düşünün önerilir.net ve.net Framework veri sağlayıcısı SQL Serveryerine SQL ServerSon sürümleri tüm yeni özelliklerine erişmek için yerel istemci SQL Server. Hakkında daha fazla bilgi için.net Framework veri sağlayıcısı için SQL Server, bkz.net Framework sdk belgelerine ado.net.

Son sürümleri yeni özelliklerini kullanmak ado etkinleştirmek için SQL Server, bazı geliştirmeler yapılmış SQL Serveryerel istemci ole db sağlayıcısı ole db Çekirdek özelliklerini genişleten. ado uygulamaları kullanmak bu geliştirmeler yeni izin SQL Serverözellikleri ve iki veri türleri tanıttı tüketmeye SQL Server 2005: xml ve udt. Bu geliştirmeler de geliştirmeler yararlanma varchar, nvarchar, ve varbinary veri türü. SQL ServerYerel istemci DBPROPSET_SQLSERVERDBINIT özellik ado uygulamaları tarafından kullanılmak üzere ayarlayabilir, böylece yeni veri türleri, ado ile uyumlu bir şekilde maruz kalan SSPROP_INIT_DATATYPECOMPATIBILITY başlatma özelliği ekler. Ayrıca, SQL Serveryerel istemci ole db sağlayıcısı da adlı bir yeni bağlantı dizesi anahtar sözcüğü tanımlayan DataTypeCompatibilitybağlantı dizesine ayarlayın.

[!NOT]

Varolan ado uygulamaları erişebilir ve xml, udt, büyük bir değer metin ve ikili alan değerlerini sqloledb Sağlayıcısı kullanarak güncelleştirin. Yeni büyük varchar(max), nvarchar(max), ve varbinary(max) veri türleri döndürülen ado türü olarak adLongVarChar, adLongVarWChar ve adLongVarBinary sırasıyla. xml sütun olarak döndürülür adLongVarChar, ve udt sütunları olarak döndürülür adVarBinary. Ancak, eğer SQL Serversqloledb yerine yerel istemci ole db sağlayıcısı (SQLNCLI10) gerekir ayarladığınızdan emin olun DataTypeCompatibility"80" anahtar sözcük böylece yeni veri türleri doğru ado veri türlerine eşlenir.

SQL Server yerel istemci gelen ado etkinleştirme

Kullanımını etkinleştirmek için SQL ServerNative 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 desteklenen anahtar kelimeler bağlantı dize SQL ServerYerel bkz: istemci, SQL Server ile yerel istemci bağlantı dizesi anahtar sözcükler kullanma.

Çalışmak için tam olarak etkin bir ado bağlantı dizesi oluşturma konusunda bir örneği şudur SQL Serveryerli müşteri, dahil mars özelliğini etkinleştirme:

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 con As New ADODB.Connection

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "Server=(local);" _
         & "Database=AdventureWorks;" _ 
         & "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 Serveryerel istemci ole db sağlayıcısını.

xml sütun veri alma

Örneğin, bir kayıt kümesi almak ve bir xml sütunda görüntülemek için kullanılır SQL Server   AdventureWorks ö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=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

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ütun, Recordset süzme desteklenmiyor. Kullanılan, bir hata döndürdü.

xml sütun veri alma

Bu örnekte, bir komut nesne bir udt döndüren bir sql sorgusu çalıştırmak için kullanılan, udt verileri güncellenir ve yeni verileri veritabanına geri sonra eklenir. Bu örnek varsayar noktası udt zaten tescil edilmiş 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=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

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, bağlantı dizesi aracılığıyla mars etkinleştirmek için inşa SQL Serveryerel istemci ole db sağlayıcısını ve ardından iki recordset nesneleri aynı bağlantıyı kullanarak yürütmek 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

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ısı önceki sürümlerinde, bu kodu yalnızca bir etkin sonuç kümesinin tek bir bağlantı açılamadı çünkü ikinci yürütme oluşturulması için örtük bağlantısı neden olur. Örtük bağlantısı olmayan havuza alınmış çünkü ole db bağlantı havuzunda bu ek yükü neden olur. mars özelliğiyle maruz tarafından SQL Serveryerel istemci ole db sağlayıcı, tek bir bağlantı üzerinde birden çok etkin sonuç almak.

Ayrıca bkz.

Diğer Kaynaklar

SQL Server ile yerel istemci uygulamaları oluşturma