Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Este artigo descreve as opções disponíveis para trabalhar com o tipo de dados xml em sua aplicações. O artigo contém informações sobre o seguinte:
Identificar o XML de uma coluna de tipo xml usando o ADO e o SQL Server Native Client
Tratando XML de uma coluna de tipo xml usando o ADO.NET
Tratando tipo xml em parâmetros usando o ADO.NET
Identificador XML de uma coluna de tipo xml ao usar o ADO e o SQL Server Native Client
Para usar componentes MDAC para acessar os tipos e recursos introduzidos no SQL Server 2005 (9.x), a propriedade de inicialização DataTypeCompatibility deve estar definida na cadeia de conexão do ADO.
Por exemplo, o exemplo a seguir do Visual Basic Scripting Edition (VBScript) mostra os resultados de uma consulta em uma coluna de tipo de dados xml , Demographics
, na tabela Sales.Store
do banco de dados AdventureWorks2022
de exemplo. Especificamente, a consulta procura o valor da instância dessa coluna para a linha em que o CustomerID
é igual a 3
.
Const DS = "MyServer"
Const DB = "AdventureWorks2022"
Set objConn = CreateObject("ADODB.Connection")
Set objRs = CreateObject("ADODB.Recordset")
CommandText = "SELECT Demographics" & _
" FROM Sales.Store" & _
" INNER JOIN Sales.Customer" & _
" ON Sales.Store.BusinessEntityID = sales.customer.StoreID" & _
" WHERE Sales.Customer.CustomerID = 3" & _
" OR Sales.Customer.CustomerID = 4"
ConnectionString = "Provider=MSOLEDBSQL" & _
";Data Source=" & DS & _
";Initial Catalog=" & DB & _
";Integrated Security=SSPI;" & _
"DataTypeCompatibility=80"
'Connect to the data source.
objConn.Open ConnectionString
'Execute command through the connection and display
Set objRs = objConn.Execute(CommandText)
Dim rowcount
rowcount = 0
Do While Not objRs.EOF
rowcount = rowcount + 1
MsgBox "Row " & rowcount & _
vbCrLf & vbCrLf & objRs(0)
objRs.MoveNext
Loop
'Clean up.
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
Esse exemplo mostra como definir a propriedade de compatibilidade de tipo de dados. Por padrão, isso é definido como 0 ao usar o SQL Server Native Client. Se você definir o valor como 80, o provedor do SQL Server Native Client fará com que as colunas de tipo xml e definidas pelo usuário sejam exibidas como tipo de dados do SQL Server 2000 (8.x). Esses tipos são DBTYPE_WSTR e DBTYPE_BYTES, respectivamente.
Observação
O SQL Server Native Client (SNAC) não é fornecido com:
- SQL Server 2022 (16.x) e versões posteriores
- SQL Server Management Studio 19 e versões posteriores
O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor OLE DB para SQL Server (SQLOLEDB) da Microsoft herdado não são recomendados para desenvolver um novo aplicativo.
Para novos projetos, use um dos seguintes drivers:
Para SQLNCLI que é fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões 2012 a 2019), confira esta exceção de Ciclo de Vida de Suporte.
Testar este exemplo
Verifique se o SQL Server Native Client está instalado e se o MDAC 2.6.0 ou posterior está disponível no computador cliente.
Para obter mais informações, consulte Programação do SQL Server Native Client.
Verifique se o banco de dados
AdventureWorks2022
de exemplo no SQL Server está instalado.Esse exemplo requer o
AdventureWorks2022
banco de dados da exemplo.Copie o código mostrado anteriormente neste artigo e cole-o em seu editor de texto ou de código. Salve o arquivo como HandlingXmlDataType.vbs.
Modifique o script, conforme necessário, para sua instalação do SQL Server e salve as alterações.
Por exemplo, quando
MyServer
estiver especificado, você deve substituir(local)
ou o nome real do servidor no qual o SQL Server está instalado.Execute HandlingXmlDataType.vbs e execute o script.
Os resultados devem ser semelhantes à seguinte saída de exemplo:
Row 1
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>1500000</AnnualSales>
<AnnualRevenue>150000</AnnualRevenue>
<BankName>Primary International</BankName>
<BusinessType>OS</BusinessType>
<YearOpened>1974</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>38000</SquareFeet>
<Brands>3</Brands>
<Internet>DSL</Internet>
<NumberEmployees>40</NumberEmployees>
</StoreSurvey>
Row 2
<StoreSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey">
<AnnualSales>300000</AnnualSales>
<AnnualRevenue>30000</AnnualRevenue>
<BankName>United Security</BankName>
<BusinessType>BM</BusinessType>
<YearOpened>1976</YearOpened>
<Specialty>Road</Specialty>
<SquareFeet>6000</SquareFeet>
<Brands>2</Brands>
<Internet>DSL</Internet>
<NumberEmployees>5</NumberEmployees>
</StoreSurvey>
Identificador XML de uma coluna de tipo xml ao usar o ADO.NET
Para identificar XML em uma coluna de tipo de dados xmlao usar o ADO.NET e o Microsoft .NET Framework, é possível usar o comportamento padrão da classe SqlCommand. Por exemplo, uma coluna de tipo de dados xml e seus valores podem ser recuperados da mesma maneira como qualquer coluna SQL é recuperada usando um SqlDataReader. No entanto, caso deseje trabalhar com o conteúdo de uma coluna de tipo de dados xml como XML, você primeiro precisará atribuir o conteúdo a um tipo XmlReader.
Para obter mais informações e um código de exemplo, confira “Valores de coluna XML em um leitor de dados” na documentação do SDK do Microsoft .NET Framework 2.0.
Identificador de uma coluna de tipo xml em parâmetros ao usar o ADO.NET
Para identificar um tipo de dados xml passado como um parâmetro no ADO.NET e no .NET Framework, você pode fornecer o valor como uma instância do tipo de dados SqlXml. Nenhum identificador especial está envolvido porque as colunas de tipo de dados xml no SQL Server podem aceitar valores de parâmetros da mesma maneira que outras colunas e tipos de dados, como cadeia de caracteres ou inteiro.
Para obter mais informações e um código de exemplo, confira “Valores de XML como parâmetro de comando” na documentação do SDK do Microsoft .NET Framework 2.0.