Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Ważna
Klient natywny SQL Servera (SNAC) nie jest dostarczany z:
- SQL Server 2022 (16.x) i nowsze wersje
- SQL Server Management Studio 19 i nowsze wersje
Program SQL Server Native Client (SQLNCLI lub SQLNCLI11) oraz starszy dostawca microsoft OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku tworzenia nowych aplikacji.
W przypadku nowych projektów użyj jednego z następujących sterowników:
- Sterownik ODBC firmy Microsoft dla programu SQL Server
- Sterownik OLE DB firmy Microsoft dla programu SQL Server
W przypadku programu SQLNCLI dostarczanego jako składnik aparatu bazy danych programu SQL Server (wersje 2012–2019), proszę sprawdzić wyjątek cyklu wsparcia .
Aby skorzystać z nowych funkcji wprowadzonych w SQL Server 2005 (9.x), takich jak wiele aktywnych zestawów wyników (MARS), powiadomienia o zapytaniach, typy zdefiniowane przez użytkownika (UDT) czy nowy typ danych xml, istniejące aplikacje korzystające z ActiveX Data Objects (ADO) powinny korzystać z dostawcy natywnej klientowej bazy danych SQL Server jako dostawcy dostępu do danych.
Jeśli nie musisz korzystać z nowych funkcji wprowadzonych w SQL Server 2005 (9.x), nie musisz korzystać z dostawcy SQL Server Native Client OLE DB; możesz nadal korzystać z obecnego dostawcy dostępu do danych, którym jest zazwyczaj SQLOLEDB. Jeśli ulepszasz istniejącą aplikację i potrzebujesz korzystać z nowych funkcji wprowadzonych w SQL Server 2005 (9.x), powinieneś skorzystać z dostawcy SQL Server Native Client OLE DB.
Uwaga / Notatka
Jeśli tworzysz nową aplikację, zaleca się rozważenie korzystania z ADO.NET oraz .NET Framework Dostawca danych for SQL Server zamiast SQL Server Native Client, aby uzyskać dostęp do wszystkich nowych funkcji najnowszych wersji SQL Server. Aby uzyskać więcej informacji o .NET Framework Dostawca danych for SQL Server, zobacz dokumentację .NET Framework SDK dla ADO.NET.
Aby umożliwić ADO korzystanie z nowych funkcji najnowszych wersji SQL Server, wprowadzono pewne ulepszenia w dostawcy SQL Server Native Client OLE DB, rozszerzając podstawowe funkcje OLE DB. Te ulepszenia pozwalają aplikacjom ADO korzystać z nowszych funkcji SQL Server oraz korzystać z dwóch typów danych wprowadzonych w SQL Server 2005 (9.x): xml i udt. Te ulepszenia wykorzystują również ulepszenia do typów danych varchar, nvarchar i varbinary . SQL Server Natywny Klient dodaje właściwość inicjalizacji SSPROP_INIT_DATATYPECOMPATIBILITY do zestawu właściwości DBPROPSET_SQLSERVERDBINIT do użytku przez aplikacje ADO, aby nowe typy danych były udostępniane w sposób zgodny z ADO. Dodatkowo, dostawca SQL Server Native Client OLE DB definiuje nowe słowo kluczowe parametry połączenia o nazwie DataTypeCompatibility (DataTypeCompatiable), które jest ustawiane w parametry połączenia.
Uwaga / Notatka
Istniejące aplikacje ADO mogą uzyskać dostęp i aktualizować XML, UDT oraz tekstowe i binarne wartości z dużą wartością za pomocą dostawcy SQLOLEDB. Nowe, większe typy danych varchar(max),nvarchar(max) i varbinary(max) zwracane są jako typy ADO adLongVarChar, adLongVarWChar i adLongVarBinary odpowiednio. Kolumny XML zwracane są jako adLongVarChar, a kolumny UDT jako adVarBinary. Jednak jeśli używasz dostawcy SQL Server Native Client OLE DB (SQLNCLI11) zamiast SQLOLEDB, musisz ustawić słowo kluczowe DataTypeCompatibility na "80", aby nowe typy danych poprawnie odpowiadały typom danych ADO.
Włączanie natywnego klienta SQL Server z ADO
Aby umożliwić korzystanie z natywnego klienta SQL Server, aplikacje ADO będą musiały zaimplementować następujące słowa kluczowe w swoich łańcuchach połączeń:
Provider=SQLNCLI11DataTypeCompatibility=80
Aby uzyskać więcej informacji o słowach kluczowych ADO connections obsługiwanych w SQL Server Native Client, zobacz Using Connection String Keywords with SQL Server Native Client.
Poniżej znajduje się przykład ustanowienia parametry połączenia ADO, który jest w pełni włączony do pracy z natywnym klientem SQL Server, włączając funkcję MARS:
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=SQLNCLI11;" _
& "Server=(local);" _
& "Database=AdventureWorks;" _
& "Integrated Security=SSPI;" _
& "DataTypeCompatibility=80;" _
& "MARS Connection=True;"
con.Open
Examples
Poniższe sekcje przedstawiają przykłady, jak można używać ADO z dostawcą SQL Server Native Client OLE DB.
Pobieranie danych kolumn XML
W tym przykładzie zestaw rekordów służy do pobierania i wyświetlania danych z kolumny XML w przykładowej bazie SQL Server AdventureWorks .
Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sXMLResult As String
con.ConnectionString = "Provider=SQLNCLI11;" _
& "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
Uwaga / Notatka
Filtrowanie zbiorów rekordów nie jest obsługiwane przez kolumny XML. Jeśli zostanie użyty, zostanie zwrócony błąd.
Pobieranie danych kolumnowych UDT
W tym przykładzie obiekt Command służy do wykonania zapytania SQL, które zwraca UDT, dane UDT są aktualizowane, a następnie nowe dane są wstawiane z powrotem do bazy danych. Ten przykład zakłada, że punktowy UDT został już zarejestrowany w bazie danych.
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=SQLNCLI11;" _
& "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
Włączanie i korzystanie z MARS
W tym przykładzie parametry połączenia jest konstruowany tak, aby umożliwić MARS przez dostawcę SQL Server Native Client OLE DB, a następnie tworzone są dwa obiekty rekordów do wykonania przy użyciu tego samego połączenia.
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=SQLNCLI11;" _
& "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
W poprzednich wersjach dostawcy OLE DB ten kod powodował utworzenie połączenia domyślnego przy drugim wykonaniu, ponieważ na jedno połączenie można było otworzyć tylko jeden aktywny zestaw wyników. Ponieważ połączenie niejawne nie było zgrupowane w puli połączeń OLE DB, powodowało to dodatkowe narzuty. Dzięki funkcji MARS udostępnionej przez natywnego klienta OLE DB SQL Server, otrzymujesz wiele aktywnych wyników na jednym połączeniu.