Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Important
SQL Server Native Client (SNAC) není dodáván s:
- SQL Server 2022 (16.x) a novější verze
- SQL Server Management Studio 19 a novější verze
Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).
Pro nové projekty použijte jeden z následujících ovladačů:
Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.
Aby bylo možné využít nové funkce zavedené v SQL Server 2005 (9.x), jako jsou více aktivních sad výsledků (MARS), oznámení o dotazech, uživatelsky definované typy (UDT) nebo nový typ dat xml, měly by stávající aplikace využívající ActiveX Data Objects (ADO) využívat poskytovatele SQL Server Native Client OLE DB jako poskytovatele přístupu k datům.
Pokud nemusíte používat žádné z nových funkcí představených v SQL Server 2005 (9.x), není nutné používat poskytovatele SQL Server Native Client OLE DB; můžete pokračovat ve využívání svého současného poskytovatele přístupu k datům, kterým je obvykle SQLOLEDB. Pokud vylepšujete stávající aplikaci a potřebujete využít nové funkce představené v SQL Server 2005 (9.x), měli byste použít poskytovatele SQL Server Native Client OLE DB.
Note
Pokud vyvíjíte novou aplikaci, doporučuje se zvážit použití ADO.NET a .NET Framework Zprostředkovatel dat for SQL Server místo SQL Server Native Client pro přístup ke všem novým funkcím novějších verzí SQL Server. Pro více informací o .NET Framework Zprostředkovatel dat for SQL Server viz dokumentaci .NET Framework SDK pro ADO.NET.
Aby bylo možné ADO využívat nové funkce novějších verzí SQL Server, byly provedeny některé vylepšení poskytovatele SQL Server Native Client OLE DB, která rozšiřují základní funkce OLE DB. Tato vylepšení umožňují ADO aplikacím využívat novější funkce SQL Serveru a využívat dva datové typy zavedené v SQL Server 2005 (9.x): xml a udt. Tato vylepšení také využívají vylepšení datových typů varchar, nvarchar a varbinár. SQL Server Native Client přidává inicializační vlastnost SSPROP_INIT_DATATYPECOMPATIBILITY do sady DBPROPSET_SQLSERVERDBINIT pro použití ADO aplikacemi, aby nové datové typy byly vystaveny způsobem kompatibilním s ADO. Kromě toho poskytovatel SQL Server Native Client OLE DB také definuje nové klíčové slovo připojovací řetězec s názvem DataTypeCompatibility (Kompatibilita), které je nastaveno v připojovací řetězec.
Note
Stávající ADO aplikace mohou přistupovat k XML, UDT a hodnotám textových a binárních polí s velkými hodnotami pomocí poskytovatele SQLOLEDB a aktualizovat je. Nové větší datové typy varchar(max), nvarchar(max) a varbinary(max) se vracejí jako ADO typy adLongVarChar, adLongVarWChar a adLongVarBinary . XML sloupce se vracejí jako adLongVarChar a sloupce UDT jako adVarBinary. Pokud však použijete poskytovatele SQL Server Native Client OLE DB (SQLNCLI11) místo SQLOLEDB, musíte nastavit klíčové slovo DataTypeCompatibility na "80", aby nové datové typy správně odpovídaly ADO datovým typům.
Zapnutí SQL Server Native Client z ADO
Aby bylo možné používat nativního klienta SQL Server, budou ADO aplikace muset implementovat následující klíčová slova ve svých spojovacích řetězcích:
Provider=SQLNCLI11DataTypeCompatibility=80
Pro více informací o klíčových slovech ADO connections string podporovaných v SQL Server Native Client viz Použití klíčových slov connection string s SQL Server Native Client.
Následuje příklad nastavení ADO připojovací řetězec, který je plně povolen pro práci s SQL Server Native Client, včetně povolení funkce 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
Následující sekce poskytují příklady, jak můžete použít ADO s poskytovatelem SQL Server Native Client OLE DB.
Získávání XML sloupcových dat
V tomto příkladu se k načtení a zobrazení dat z XML sloupce v SQL Server AdventureWorks ukázkové databázi používá sada záznamů.
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
Note
Filtrování souborů záznamů není podporováno u XML sloupců. Pokud je použito, vrátí se chyba.
Získávání UDT sloupcových dat
V tomto příkladu se objekt příkazu použije k vykonání SQL dotazu, který vrátí UDT, data UDT jsou aktualizována a nová data jsou následně vložena zpět do databáze. Tento příklad předpokládá, že bod UDT již byl v databázi registrován.
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
Zapnutí a využití MARS
V tomto příkladu je připojovací řetězec vytvořen tak, aby umožnil MARS prostřednictvím poskytovatele SQL Server Native Client OLE DB, a poté jsou vytvořeny dva objekty souboru záznamů pro spuštění se stejným spojením.
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
V předchozích verzích poskytovatele OLE DB tento kód způsoboval vytvoření implicitního spojení při druhém vykonání, protože na jedno spojení bylo možné otevřít pouze jednu aktivní sadu výsledků. Protože implicitní spojení nebylo zařazeno do poolu spojení OLE DB, způsobilo to další režii. S funkcí MARS, kterou poskytuje poskytovatel SQL Server Native Client OLE DB, získáte více aktivních výsledků na jednom připojení.