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.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
OLE DB sürücüsünü indirme
SQL Server 2005 (9.x)'te getirilen çoklu aktif sonuç kümeleri (MARS), sorgu bildirimleri, kullanıcı tanımlı türler (UDT) veya yeni xml veri tipi gibi yeni özelliklerden yararlanmak için, ActiveX Veri Nesneleri (ADO) kullanan mevcut uygulamalar, veri erişim sağlayıcısı olarak SQL Server için OLE DB Sürücüsünü kullanmalıdır.
ADO'nun SQL Server'ın son sürümlerinin yeni özelliklerini kullanmasını sağlamak için, OLE DB Sürücüsü for SQL Server'da bazı iyileştirmeler yapıldı ve bu da OLE DB'nin temel özelliklerini genişletti. Bu geliştirmeler, ADO uygulamalarının daha yeni SQL Server özelliklerini kullanmasına ve SQL Server 2005 (9.x)'de tanıtılan iki veri tipini tüketmesine olanak tanır: xml ve udt. Bu geliştirmeler ayrıca varchar, nvarchar ve varbinary veri tiplerindeki iyileştirmelerden de yararlanır. SQL Server için OLE DB Sürücüsü, SSPROP_INIT_DATATYPECOMPATIBILITY başlatma özelliğini ADO uygulamaları tarafından kullanılmak üzere DBPROPSET_SQLSERVERDBINIT özellik setine ekler; böylece yeni veri türleri ADO ile uyumlu şekilde açığa çıkarılır. Ayrıca, SQL Server için OLE DB Sürücüsü, bağlantı dizisinde ayarlanan DataTypeCompatibility adlı yeni bir bağlantı dizisi anahtar kelimesi tanımlar.
Uyarı
Mevcut ADO uygulamaları, SQLOLEDB sağlayıcısını kullanarak XML, UDT ve büyük değerli metin ile ikili alan değerlerine erişebilir ve güncelleyebilmektedir. Yeni daha büyük varchar(max), nvarchar(max) ve varbinary(max) veri türleri sırasıyla adLongVarChar, adLongVarWChar ve adLongVarBinary olarak döndürülür. XML sütunları adLongVarChar olarak, UDT sütunları ise adVarBinary olarak döner. Ancak, SQLOLEDB yerine SQL Server için OLE DB Driver (MSOLEDBSQL19 veya MSOLEDBSQL) kullanıyorsanız, yeni veri tiplerinin ADO veri tiplerine doğru eşlemesi için DataTypeCompatibility anahtar kelimesini "80" olarak ayarladığınızdan emin olmalısınız.
ADO'dan SQL Server için OLE DB Sürücüsünü etkinleştirmek
SQL Server için OLE DB Sürücüsünün kullanılmasını mümkün kılmak için, ADO uygulamalarının bağlantı dizislerinde aşağıdaki anahtar kelimeleri uygulamaları gerekecektir:
Provider=MSOLEDBSQL19DataTypeCompatibility=80
OLE DB Driver for SQL Server'da desteklenen ADO bağlantıları dizisi anahtar kelimeleri hakkında daha fazla bilgi için Bağlantı Dizisi Anahtar Kelimelerini SQL Server için OLE DB Sürücüsü ile Kullanılma'na bakınız.
Aşağıdaki kod, OLE DB Driver for SQL Server ile çalışmak üzere tamamen etkinleştirilmiş bir ADO bağlantı dizisi kurmanın örneğidir; MARS özelliğinin etkinleştirilmesi de dahildir:
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=MSOLEDBSQL19;" _
& "Server=(local);" _
& "Database=AdventureWorks;" _
& "Use Encryption for Data=Optional;" _
& "Integrated Security=SSPI;" _
& "DataTypeCompatibility=80;" _
& "MARS Connection=True;"
con.Open
Örnekler
Aşağıdaki bölümler, OLE DB Driver for SQL Server ile ADO'yu nasıl kullanabileceğinize dair örnekler sunmaktadır.
XML sütun verisinin alınması
Bu örnekte, bir kayıt seti, SQL Server AdventureWorks örnek veritabanındaki bir XML sütunundan veri almak ve görüntülemek için kullanılır.
Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sXMLResult As String
con.ConnectionString = "Provider=MSOLEDBSQL19;" _
& "Server=(local);" _
& "Database=AdventureWorks;" _
& "Use Encryption for Data=Optional;" _
& "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
Uyarı
Kayıt kümesi filtreleme XML sütunlarıyla desteklenmez. Kullanılırsa hata geri dönecektir.
UDT sütun verilerinin alınması
Bu örnekte, bir Command nesnesi bir SQL sorgusunu çalıştırmak için kullanılır; bu sorgu UDT döndürür, UDT veri güncellenir ve ardından yeni veri veritabanına geri eklenir. Bu örnek, Point UDT'nin zaten veritabanında kayıtlı olduğunu varsayar.
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=MSOLEDBSQL19;" _
& "Server=(local);" _
& "Database=AdventureWorks;" _
& "Use Encryption for Data=Optional;" _
& "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
MARS'ı etkinleştirmek ve kullanmak
Bu örnekte, bağlantı dizisi SQL Server için OLE DB Sürücüsü aracılığıyla MARS'ı etkinleştirecek şekilde oluşturulmuş ve ardından aynı bağlantı kullanılarak çalıştırılacak iki kayıt seti nesnesi oluşturulur.
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=MSOLEDBSQL19;" _
& "Server=(local);" _
& "Database=AdventureWorks;" _
& "Use Encryption for Data=Optional;" _
& "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ının önceki sürümlerinde, bu kod ikinci yürütmede örtük bir bağlantı oluşturulmasına neden olurdu çünkü tek bir bağlantı için yalnızca bir aktif sonuç seti açılabilirdi. Örtük bağlantı OLE veritabanı bağlantı havuzunda havuzlanmadığı için bu davranış ekstra yük yaratır. OLE DB Driver for SQL Server tarafından ortaya çıkarılan MARS özelliğiyle, tek bir bağlantıda birden fazla aktif sonuç elde ediyorsunuz.