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.
Este tópico descreve alterações significativas no Mecanismo de Banco de Dados do SQL Server 2014 e versões anteriores do SQL Server. Essas alterações podem danificar aplicativos, scripts ou funcionalidades baseados em versões anteriores do SQL Server. Talvez você tenha esses problemas ao atualizar. Para obter mais informações, consulte Usar o Supervisor de Atualização para se preparar para atualizações.
Alterações significativas no SQL Server 2014
Nenhum problema novo.
Alterações significativas no SQL Server 2012
Transact-SQL
| Característica | Descrição |
|---|---|
| Selecionando entre colunas ou tabelas denominadas NEXT | As sequências usam a função NEXT VALUE FOR padrão ANSI. Se uma tabela ou coluna for denominada NEXT, e a tabela ou coluna for apelidada como VALUE, e se o uso do AS padrão ANSI for omitido, a instrução resultante poderá causar um erro. Para contornar o problema, inclua a palavra-chave "AS" padrão ANSI. Por exemplo, SELECT NEXT VALUE FROM Table deve ser reescrito como SELECT NEXT AS VALUE FROM Table e SELECT Col1 FROM NEXT VALUE deve ser reescrito como SELECT Col1 FROM NEXT AS VALUE. |
| Operador PIVOT | O operador PIVOT não é permitido em uma consulta CTE (expressão de tabela comum) recursiva quando o nível de compatibilidade do banco de dados é definido como 110. Reescreva a consulta ou altere o nível de compatibilidade para 100 ou inferior. Usar PIVOT em uma consulta CTE recursiva produz resultados incorretos quando há mais de uma única linha por agrupamento. |
| sp_setapprole e sp_unsetapprole | O parâmetro de cookie OUTPUT para sp_setapprole está atualmente documentado como varbinary(8000), que é o comprimento máximo correto. No entanto, a implementação atual retorna varbinary(50). Os aplicativos devem continuar a reservar varbinary(8000) para que continuem operando corretamente caso o tamanho de retorno do cookie aumente em uma versão futura. Para obter mais informações, consulte sp_setapprole (Transact-SQL). |
| EXECUTAR COMO | O parâmetro OUTPUT de cookie para EXECUTE AS está atualmente documentado como varbinary(8000), que é o tamanho máximo correto. No entanto, a implementação atual retorna varbinary(100). Os aplicativos devem continuar reservando varbinary(8000) para que continuem operando corretamente caso o tamanho de retorno do cookie aumente em versões futuras. Para obter mais informações, consulte EXECUTE AS (Transact-SQL). |
| Função sys.fn_get_audit_file | Duas colunas adicionais (user_defined_event_id e user_defined_information) foram adicionadas para dar suporte a eventos de auditoria definidos pelo usuário. Aplicativos que não selecionam colunas por nome podem retornar mais colunas do que o esperado. Selecione colunas por nome ou ajuste o aplicativo para aceitar essas colunas adicionais. |
| WITHIN: palavra-chave reservada | WITHIN agora é uma palavra-chave reservada. As referências a objetos ou colunas denominadas 'within' falharão. Renomeie o nome do objeto ou da coluna ou delimita o nome usando colchetes ou aspas. Por exemplo, SELECT * FROM [within]. |
Operações CAST e CONVERT em colunas computadas do tipo time ou datetime2 |
Nas versões anteriores do SQL Server, o estilo padrão das operações de CAST e CONVERT nos tipos de dados time e datetime2 é 121, exceto quando qualquer tipo é usado em uma expressão de coluna computada. Para colunas computadas, o estilo padrão é 0. Esse comportamento afeta as colunas computadas quando são criadas, usadas em consultas que envolvam parametrização automática ou usadas em definições de restrição.No nível de compatibilidade 110, o estilo padrão para operações CAST e CONVERT em tipos de dados time e datetime2 é sempre 121. Se a sua consulta depender do comportamento antigo, use um nível de compatibilidade inferior a 110 ou especifique explicitamente o estilo 0 na consulta afetada.Atualizar o banco de dados para o nível de compatibilidade 110 não alterará os dados do usuário armazenados em disco. Você deve corrigir esses dados manualmente conforme apropriado. Por exemplo, se você usou SELECT INTO para criar uma tabela de uma origem que continha uma expressão de coluna computada descrita acima, os dados (usando o estilo 0) seriam armazenados em vez da própria definição de coluna computada. Você precisará atualizar manualmente esses dados para que coincidam com o estilo 121. |
| ALTER TABLE | A instrução ALTER TABLE permite apenas nomes de tabela de duas partes (schema.object). A especificação de um nome de tabela usando os seguintes formatos agora falha no tempo de compilação com o erro 117: server.database.schema.table .database.schema.table .. schema.table Em versões anteriores especificando o formato server.database.schema.table retornou o erro 4902. Especificar o formato .database.schema.table ou o formato ..schema.table foi bem-sucedido. Para resolver o problema, remova o uso de um prefixo de 4 partes. |
| Metadados de navegação | Consultar uma exibição usando FOR BROWSE ou SET NO_BROWSETABLE ON agora retorna os metadados da exibição, não os metadados do objeto subjacente. Esse comportamento agora corresponde a outros métodos de metadados de navegação. |
| SOUNDEX | No nível de compatibilidade do banco de dados 110, a função SOUNDEX implementa novas regras que podem fazer com que os valores computados pela função sejam diferentes dos valores calculados em níveis de compatibilidade anteriores. Depois de atualizar para o nível de compatibilidade 110, talvez seja necessário recompilar os índices, heaps ou restrições CHECK que usam a função SOUNDEX. Para obter mais informações, consulte SOUNDEX (Transact-SQL) |
| Mensagem de contagem de linhas para instruções DML que falharam | No SQL Server 2012, o Mecanismo de Banco de Dados enviará consistentemente o token TDS DONE com RowCount: 0 para clientes quando uma instrução DML falhar. Em versões anteriores do SQL Server, um valor incorreto de -1 é enviado ao cliente quando a instrução DML que falha está contida em um bloco TRY-CATCH e é automaticamenteparameterizada pelo Mecanismo de Banco de Dados ou o bloco TRY-CATCH não está no mesmo nível da instrução com falha. Por exemplo, se um bloco TRY-CATCH chamar um procedimento armazenado e uma instrução DML no procedimento falhar, o cliente receberá incorretamente um valor -1. Os aplicativos que dependem desse comportamento incorreto falharão. |
| SERVERPROPERTY ('Edição') | Edição de produto da instância instalada do SQL Server 2012. Use o valor dessa propriedade para determinar os recursos e os limites, como o número máximo de CPUs compatíveis com o produto instalado. Com base na edição Enterprise instalada, isso pode retornar "Enterprise Edition" ou "Enterprise Edition: Licenciamento baseado em núcleo". As edições Enterprise são diferenciadas com base na capacidade máxima de computação por uma única instância do SQL Server. Para obter mais informações sobre os limites de capacidade de computação no SQL Server 2012, consulte Limites de Capacidade de Computação por Edição do SQL Server. |
| CRIAR LOGIN | A CREATE LOGIN WITH PASSWORD = ' opção de senha' HASHED não pode ser usada com hashes criados pelo SQL Server 7 ou anterior. |
Operações CAST e CONVERT para datetimeoffset |
Os únicos estilos com suporte ao converter tipos de data e hora para datetimeoffset são 0 ou 1. Todos os outros estilos de conversão retornam o erro 9809. Por exemplo, o código a seguir retorna o erro 9809.SELECT CONVERT(date, CAST('7070-11-25 16:25:01.00986 -02:07' as datetimeoffset(5)), 107); |
Exibições de Gerenciamento Dinâmico
| Visualizar | Descrição |
|---|---|
| sys.dm_exec_requests | A coluna de comando muda de nvarchar(16) para nvarchar(32). |
| sys.dm_os_memory_cache_counters | As seguintes colunas foram renomeadas: "single_pages_kb" agora é: páginas_kb multi_pages_kb agora é: pages_in_use_kb |
| sys.dm_os_memory_cache_entries | A coluna pages_allocated_count foi renomeada para pages_kb. |
| sys.dm_os_memory_clerks | A coluna multi_pages_kb foi removida. A coluna single_pages_kb foi renomeada para pages_kb. |
| sys.dm_os_memory_nodes | As seguintes colunas foram renomeadas: single_pages_kb agora é: pages_kb multi_pages_kb está agora: megas_kb_comprometido |
| sys.dm_os_memory_objects | As colunas a seguir foram renomeadas. pages_allocated_count agora é: páginas_em_bytes max_pages_allocated_count agora é: max_pages_in_bytes |
| sys.dm_os_sys_info | As seguintes colunas foram renomeadas: O valor de physical_memory_in_bytes agora é: memória_física_kb bpool_commit_target agora é: alvo_comprometido_kb bpool_visible agora é: visible_target_kb virtual_memory_in_bytes agora é: virtual_memory_kb bpool_commited está agora: committed_kb |
| sys.dm_os_workers | A coluna de localidade foi removida. |
Visualizações de Catálogo
| Visualizar | Descrição |
|---|---|
| sys.espaços_de_dados sys.partition_schemes sys.filegroups sys.partition_functions |
Uma nova coluna, is_system, foi adicionada a sys.data_spaces e sys.partition_functions. (sys.partition_schemes e sys.filegroups herdam as colunas de sys.data_spaces.) Um valor de 1 nesta coluna indica que o objeto é usado para fragmentos de índice de texto completo. Em sys.partition_functions, sys.partition_schemes e sys.filegroups, a nova coluna não é a última coluna. Revise as consultas existentes que dependem da ordem das colunas retornadas dessas exibições de catálogo. |
Tipos de dados CLR do SQL (geometria, geografia e hierarchyid)
O assemblyMicrosoft.SqlServer.Types.dll, que contém os tipos de dados espaciais e o tipo hierarchyid, foi atualizado da versão 10.0 para a versão 11.0. Os aplicativos personalizados que fazem referência a esse assembly podem falhar quando as seguintes condições forem verdadeiras.
Quando você move um aplicativo personalizado de um computador no qual o SQL Server 2008 R2 foi instalado para um computador no qual apenas o SQL Server 2014 está instalado, o aplicativo falhará porque a versão 10.0 referenciada do assembly sqlTypes não está presente. Você pode ver esta mensagem de erro:
"Could not load file or assembly 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."Quando você faz referência ao assembly sqlTypes versão 11.0 e a versão 10.0 também está instalada, você pode ver esta mensagem de erro:
"System.InvalidCastException: Unable to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type 'Microsoft.SqlServer.Types.SqlGeometry'."Quando você faz referência ao assembly SqlTypes versão 11.0 de um aplicativo personalizado direcionado ao .NET 3.5, 4 ou 4.5, o aplicativo falhará porque o SqlClient, por padrão, carrega a versão 10.0 do assembly. Essa falha ocorre quando o aplicativo chama um dos seguintes métodos:
GetValuemétodo daSqlDataReaderclasseGetValuesmétodo daSqlDataReaderclasseoperador de índice de colchete [] da classe
SqlDataReaderExecuteScalarmétodo daSqlCommandclasse
Você pode contornar esse problema usando um dos seguintes métodos:
Você pode contornar esse problema em seu código chamando o
GetSqlBytesmétodo, em vez dos métodos Get listados acima, para recuperar tipos de sistema CLR SQL Server, conforme mostrado no exemplo a seguir:string query = "SELECT [SpatialColumn] FROM [SpatialTable]"; using (SqlConnection conn = new SqlConnection("...")) { SqlCommand cmd = new SqlCommand(query, conn); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { // In version 11.0 only SqlGeometry g = SqlGeometry.Deserialize(reader.GetSqlBytes(0)); // In version 10.0 or 11.0 SqlGeometry g2 = new SqlGeometry(); g.Read(new BinaryReader(reader.GetSqlBytes(0).Stream)); } }Você pode contornar esse problema usando o redirecionamento de assembly no arquivo de configuração do aplicativo, conforme mostrado no exemplo a seguir:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> ... <dependentAssembly> <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" /> <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" /> </dependentAssembly> ... </assemblyBinding> <runtime>Você pode contornar esse problema em sua cadeia de conexão especificando um valor de "SQL Server 2012" para o atributo "Type System Version" para forçar o SqlClient a carregar a versão 11.0 do assembly. Esse atributo de cadeia de conexão está disponível apenas no .NET 4.5 e superior.
A
assemblyBindingmarca deve ser encapsulada sob aruntimemarca.
Suporte para AWE
O suporte para Extensões de Janela de Endereço (AWE) de 32 bits foi descontinuado. Isso pode resultar em um desempenho mais lento em sistemas operacionais de 32 bits. Para instalações que usam grandes quantidades de memória, migre para um sistema operacional de 64 bits.
As funções XQuery são Surrogate-Aware
A recomendação do W3C para funções e operadores XQuery exige que eles contem um par substituto que representa um caractere Unicode de alta faixa como um único glifo na codificação UTF-16. No entanto, em versões do SQL Server antes do SQL Server 2012, as funções de cadeia de caracteres não reconheceram pares alternativos como um único caractere. Algumas operações de cadeia de caracteres - como cálculos de comprimento de cadeia de caracteres e extrações de subcadeia de caracteres - retornaram resultados incorretos. O SQL Server 2012 agora dá suporte total ao UTF-16 e ao tratamento correto de pares substitutos.
O tipo de dados XML no SQL Server só permite pares substitutos bem formados. No entanto, algumas funções ainda podem retornar resultados indefinidos ou inesperados em determinadas circunstâncias, pois é possível passar pares alternativos inválidos ou parciais para funções XQuery como valores de cadeia de caracteres. Considere os seguintes métodos para gerar valores de cadeia de caracteres ao usar o XQuery no SQL Server:
Forneça um valor de cadeia de caracteres constante como um valor binário. Ao usar esse método, ainda é possível passar pares alternativos inválidos ou parciais.
Forneça um valor de string constante usando entidades de caractere. Ao usar esse método, não é possível passar pares alternativos inválidos. As funções XQuery exigem uma única entidade de caractere para o caractere de alto nível. Essas funções geram um erro se as entidades de caractere para os caracteres de par substituto forem fornecidas.
Importe valores externos usando sql:column ou sql:variable. Ao usar esses métodos, ainda é possível introduzir pares substitutos inválidos ou parciais.
Funções e operadores XQuery afetados
As seguintes funções e operadores XQuery agora lidam com pares alternativos UTF-16 corretamente no SQL Server 2012:
fn:string-length. No entanto, se um par substituto inválido ou parcial for passado como um argumento, o comportamento do comprimento da cadeia de caracteres será indefinido.
fn:substring.
fn:contains. No entanto, se um par substituto parcial for passado como um valor, contém poderá retornar resultados inesperados, já que pode encontrar o par substituto parcial contido no par substituto bem formado.
fn:concat. No entanto, se um par substituto parcial for passado como um valor, o concat poderá produzir pares substitutos incorretos ou pares substitutos parciais.
Operadores de comparação e a cláusula ORDER BY. Os operadores de comparação incluem +, <, >, <=, >=,
eq,lt,gt,leege.
Chamadas de consulta distribuídas para um procedimento do sistema
As chamadas de consulta distribuídas para OPENQUERY alguns procedimentos do sistema falharão quando forem chamadas de um servidor SQL Server 2012 para outro. Isso ocorre quando o Mecanismo de Banco de Dados não pode descobrir metadados para um procedimento. Por exemplo, SELECT * FROM OPENQUERY(..., 'EXEC xp_loginfo').
Nível de isolamento e sp_reset_connection
O nível de isolamento das conexões é tratado da seguinte maneira pelos drivers de cliente:
Todos os drivers nativos (SNAC, MDAC, ODBC) definem o nível de isolamento (com base na configuração do aplicativo) após sp_reset_connection.
Para ADO.NET você obterá essencialmente um nível de isolamento aleatório dependendo de qual conexão você obtém do pool (e se o aplicativo usar um nível de isolamento diferente). Como ADO.NET pool pode reciclar conexões internamente e de forma transparente, você não pode prever o que sairá do pool.
Para o driver JDBC, você obtém o mesmo comportamento que ADO.NET
O aplicativo deve sempre definir explicitamente o nível de isolamento depois de abrir a conexão para obter o que deseja.
A conexão JDBC pode ser agrupada, portanto, o aplicativo pode obter um nível de isolamento aleatório e não saber sobre ela.
Para preservar a compatibilidade com versões anteriores, esse novo comportamento só se aplica a clientes recentes que começam com o TDS 7.4.
Compatibilidade com versões anteriores
Novo comportamento depende do nível de compatibilidade
As seguintes funções e operadores demonstram o novo comportamento descrito acima somente quando o nível de compatibilidade é 110 ou superior:
fn:contains.
fn:concat.
operadores de comparação e cláusula order by
O novo comportamento depende do URI do namespace padrão para funções
As funções a seguir demonstram o novo comportamento descrito acima somente quando o URI do namespace padrão corresponde ao namespace na recomendação final, ou seja, http://www.w3.org/2005/xpath-functions. Quando o nível de compatibilidade é 110 ou superior, por padrão, o SQL Server 2012 associa o namespace de função padrão a esse namespace. No entanto, essas funções demonstram o novo comportamento quando esse namespace é usado independentemente do nível de compatibilidade.
fn:string-length
fn:substring
Alterações significativas no SQL Server 2008/SQL Server 2008R2
Esta seção contém as mudanças significativas introduzidas no SQL Server 2008. Nenhuma alteração foi introduzida no SQL Server 2008 R2.
Agrupamentos
| Característica | Descrição |
|---|---|
| Novas classificações | O SQL Server 2008 apresenta novas ordenações que estão em alinhamento total com as ordenações fornecidas pelo Windows Server 2008. Essas 80 novas ordenações melhoraram a precisão linguística e são indicadas por referências de versão *_100. Se você escolher uma nova ordenação para seu servidor ou banco de dados, lembre-se de que a ordenação pode não ser reconhecida por clientes com drivers de cliente mais antigos. Regras de ordenação não reconhecidas podem fazer com que o aplicativo retorne erros e falhe. Considere as seguintes soluções: Atualize o sistema operacional cliente para que as colações de sistema subjacentes sejam atualizadas. Se o cliente tiver um software cliente de banco de dados instalado, considere aplicar uma atualização de serviço ao software cliente do banco de dados. Escolha um ordenamento existente que mapeie para uma página de código no cliente. |
CLR (Common Language Runtime)
| Característica | Descrição |
|---|---|
| Assemblies do CLR | Quando um banco de dados é atualizado para o SQL Server 2008, o Microsoft.SqlServer.Types assembly para dar suporte a novos tipos de dados é instalado automaticamente. As regras do Supervisor de Atualização detectam qualquer tipo de usuário ou assemblies com nomes conflitantes. O Supervisor de Atualização aconselhará a renomeação de qualquer assembly conflitante e a renomeação de qualquer tipo conflitante ou o uso de nomes de duas partes no código para se referir a esse tipo de usuário pré-existente.Se uma atualização de banco de dados detectar um assembly de usuário com um nome conflitante, ele renomeará automaticamente esse assembly e colocará o banco de dados no modo suspeito. Se um tipo de usuário com nome conflitante existir durante a atualização, nenhuma etapa especial será efetuada. Depois da atualização, existirão ambos os tipos de usuário, antigo e novo. O tipo de usuário só estará disponível através de nomes de duas partes. |
| Assemblies do CLR | O SQL Server 2008 instala o .NET Framework 3.5 SP1, que atualiza bibliotecas no GAC (Cache de Assembly Global). Se você tiver bibliotecas sem suporte registradas em um banco de dados do SQL Server, seu aplicativo DO SQL Server poderá parar de funcionar após a atualização para o SQL Server 2008. Isso ocorre porque a manutenção ou atualização de bibliotecas no GAC não atualiza assemblies dentro do SQL Server. Se houver um assembly em um banco de dados do SQL Server e no GAC, as duas cópias do assembly deverão corresponder exatamente. Se eles não corresponderem, ocorrerá um erro quando o assembly for usado pela integração CLR do SQL Server. Para obter mais informações, consulte Bibliotecas do .NET Framework com suporte. Depois de atualizar o banco de dados, preste serviço ou atualize a cópia do assembly dentro dos bancos de dados do SQL Server com a instrução ALTER ASSEMBLY. Para obter mais informações, consulte o artigo 949080 da Base de Dados de Conhecimento. Para detectar se você está usando qualquer biblioteca de estrutura do .NET sem suporte em seu aplicativo, execute a consulta a seguir em seu banco de dados. SELECT name FROM sys.assemblies WHERE clr_name LIKE '%publickeytoken=b03f5f7f11d50a3a,%'; |
| Rotinas CLR | Usar a impersonação dentro de funções definidas pelo usuário CLR, agregações definidas pelo usuário ou tipos definidos pelo usuário (UDTs) pode levar seu aplicativo a falhar com o erro 6522 após a atualização para o SQL Server 2008. Os cenários a seguir têm êxito no SQL Server 2005, mas falham no SQL Server 2008. As resoluções são fornecidas para cada cenário. Uma função definida pelo usuário CLR, agregação definida pelo usuário ou método UDT que usa impersonalização tem um parâmetro de tipo nvarchar(max), varchar(max), varbinary(max), ntext, text, image, ou um UDT grande, e não tem o atributo DataAccessKind.Read no método. Para resolver esse problema, adicione o atributo DataAccessKind.Read no método, recompile o assembly e implante novamente a rotina e o assembly.Uma função CLR com valor de tabela que tem um método Init que executa a impersonação. Para resolver esse problema, adicione o atributo DataAccessKind.Read no método, recompile o assembly e implante novamente a rotina e o assembly. Uma função CLR com valor de tabela que possui um método FillRow que realiza a personificação. Para resolver esse problema, remova a representação do método FillRow. Não acesse recursos externos usando o método FillRow . Em vez disso, acesse recursos externos do método Init . |
Exibições de Gerenciamento Dinâmico
| Visualizar | Descrição |
|---|---|
| sys.dm_os_sys_info | Foram removidas as colunas cpu_ticks_in_ms e sqlserver_start_time_cpu_ticks. |
| sys.dm_exec_query_resource_semaphoressys.dm_exec_query_memory_grants | A coluna resource_semaphore_id não é uma ID exclusiva no SQL Server 2008. Essa alteração pode afetar a solução de problemas de execução de consulta. Para obter mais informações, consulte sys.dm_exec_query_resource_semaphores (Transact-SQL). |
Erros e eventos
| Característica | Descrição |
|---|---|
| Erros de logon | No SQL Server 2005, o erro 18452 é retornado quando um logon do SQL é usado para se conectar a um servidor configurado para usar apenas a Autenticação do Windows. No SQL Server 2008, o erro 18456 é retornado. |
Plano de exibição
| Característica | Descrição |
|---|---|
| Esquema XML do plano de execução | Um novo elemento SeekPredicateNew é adicionado ao esquema XML Showplan, e a sequência xsd (SqlPredicatesType) é convertida em um item <xsd:choice>. Em vez de um ou mais elementos SeekPredicate, um ou mais elementos SeekPredicateNew agora podem aparecer no Showplan XML. Os dois elementos são mutuamente exclusivos. SeekPredicate é mantido no esquema XML do Showplan para compatibilidade com versões anteriores; no entanto, planos de consultas criados no SQL Server 2008 podem conter o elemento SeekPredicateNew. Os aplicativos que esperam recuperar apenas o filho SeekPredicate do nó ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates poderão falhar se o elemento SeekPredicate não existir. Reescreva o aplicativo para esperar pelo elemento SeekPredicate ou SeekPredicateNew neste nó. Para obter mais informações, consulte . |
| Esquema XML do plano de execução | Um novo atributo IndexKind é adicionado ao tipo complexo ObjectType no esquema XML showplan. Os aplicativos que validam estritamente os planos do SQL Server no esquema do SQL Server 2005 falharão. |
Transact-SQL
| Característica | Descrição |
|---|---|
| ALTER_AUTHORIZATION_DATABASE evento DDL | No SQL Server 2005, quando o evento DDL ALTER_AUTHORIZATION_DATABASE é acionado, o valor 'object' é retornado no elemento ObjectType do xml EVENTDATA para esse evento, quando o tipo de entidade do protegível na operação da linguagem de definição de dados (DDL) é um objeto. No SQL Server 2008, o tipo real (por exemplo, 'table' ou 'function') é retornado. |
| CONVERTER | Se um estilo inválido for passado para a função CONVERT, um erro será retornado quando o tipo de conversão for binário em caractere ou caractere em binário. Nas versões anteriores do SQL Server, um estilo inválido era ajustado para o estilo padrão nas conversões de binário para caractere e de caractere para binário. |
| GRANT/DENY/REVOKE EXECUTE em conjuntos | A permissão EXECUTE não pode ser concedida, negada ou revogada em assemblies. Esta permissão não tem efeito e agora causa um erro. Conceda, negue ou revogue a permissão EXECUTE nos procedimentos armazenados ou funções que fazem referência ao método assembly. |
| Conceder/Negar/Revogar permissões em tipos de sistema | As permissões não podem ser concedidas, negadas ou revogadas para tipos de sistema. Em versões anteriores do SQL Server, essas instruções são bem-sucedidas, mas não têm efeito. No SQL Server 2008, um erro é retornado. |
| AGRUPAR POR | A cláusula GROUP BY não pode conter uma subconsulta em uma expressão usada para o grupo por lista. Em versões anteriores do SQL Server, isso era permitido. No SQL Server 2008, o erro 144 é retornado. Por exemplo, o código a seguir terá êxito no SQL Server 2005 e falhará no SQL Server 2008. DECLARE @Test TABLE(a int NOT NULL); INSERT INTO @Test SELECT 1 union ALL SELECT 2; SELECT COUNT(*) FROM @Test GROUP BY CASE WHEN a IN (SELECT t.a FROM @Test AS t) THEN 1 ELSE 0 END; |
| cláusula OUTPUT | Para impedir o comportamento não determinístico, a cláusula OUTPUT não pode referenciar uma coluna de uma exibição ou função com valor de tabela embutida quando essa coluna é definida por um dos seguintes métodos: Uma subconsulta. Uma função definida pelo usuário que executa o acesso de dados do usuário ou do sistema ou é assumida para executar esse acesso. Uma coluna computada que contém em sua definição uma função definida pelo usuário que executa o acesso de dados do usuário ou do sistema. Quando o SQL Server detecta essa coluna na cláusula OUTPUT, o erro 4186 é gerado. Para obter mais informações, consulte MSSQLSERVER_4186. |
| Cláusula OUTPUT INTO | A tabela de destino da cláusula OUTPUT INTO não pode ter nenhum gatilho habilitado. |
| opção pré-computar ranking no nível de servidor | Essa opção não tem suporte no SQL Server 2008. Modifique os aplicativos que atualmente usam esse recurso o mais rápido possível. |
| Dica de tabela READPAST | Não é possível especificar a dica READPAST em Isolamento de Instantâneo. A dica READPAST é ignorada quando a opção de banco de dados READ_COMMITED_SNAPSHOT ou ALLOW_SNAPSHOT_ISOLATION é definida como ON. No entanto, se você combinar a dica READPAST com READCOMMITTEDLOCK, o comportamento READPAST será igual ao da dica READCOMMITTED de bloqueio. |
| sp_helpuser | Os seguintes nomes de coluna que são retornados no conjunto de resultados do procedimento armazenado sp_helpuser foram alterados: GroupName agora é: RoleName "Group_name" agora é: Nome_da_Função Group_id agora é: Role_id Usuários no grupo agora são: Usuários_na_função |
| Criptografia de Dados Transparente | A TDE (Transparent Data Encryption) é executada no nível de E/S: a estrutura da página não é criptografada na memória e é criptografada somente quando a página é gravada em disco. Os arquivos de banco de dados e os arquivos de log são criptografados. Aplicativos de terceiros que ignoram o mecanismo regular do SQL Server para acessar páginas (por exemplo, verificando os dados ou arquivos de log diretamente), falharão quando um banco de dados usar o TDE porque os dados são criptografados nos arquivos. Esses aplicativos podem aproveitar a API de Criptografia de Janela para desenvolver uma solução para descriptografar os dados fora do SQL Server. |
XQuery
| Característica | Descrição |
|---|---|
| Suporte a data e hora | No SQL Server 2005, os tipos xs:timexs:datede dados e xs:dateTime não têm suporte para fuso horário. Os dados de fuso horário são mapeados para o fuso horário UTC. O SQL Server 2008 fornece um comportamento de conformidade padrão, resultando nas seguintes alterações:Valores sem fuso horário são validados. O fuso horário fornecido ou a ausência de um fuso horário é preservado. A representação de armazenamento interno é modificada. A resolução de valores armazenados é aumentada. Anos negativos não são permitidos. Observação: modifique aplicativos e expressões XQuery para considerar os novos valores de tipo. |
| Expressões XQuery e Xpath | No SQL Server 2005, passos em uma expressão XQuery ou XPath que começam com dois-pontos (':') são permitidos. Por exemplo, a declaração a seguir contém um teste de nome (CTR02) dentro da expressão de caminho que inicia-se com dois-pontos.SELECT FileContext.query('for n$ in //CTR return <C>{data )(n$/:CTR02)} </C>) AS Files FROM dbo.MyTable;No SQL Server 2008, esse uso não é permitido porque não está em conformidade com os padrões XML. O erro 9341 é retornado. Remova os dois-pontos à esquerda ou especifique um prefixo para o teste de nome, por exemplo, (n$/CTR02) ou (n$/p1:CTR02). |
Conectar
| Característica | Descrição |
|---|---|
| Conectando-se do SQL Server Native Client usando SSL | Ao se conectar com o SQL Server Native Client, os aplicativos que usam "SERVER=shortname; FORCE ENCRYPTION=true" com um certificado cujos Sujeitos especificam nomes de domínio totalmente qualificados (FQDNs) tinham conexão no passado devido à validação relaxada. O SQL Server 2008 R2 aprimora a segurança aplicando entidades FQDN para certificados. Os aplicativos que dependem da validação descontraída devem executar uma das seguintes ações: Use o FQDN na cadeia de conexão. -Essa opção não requer recompilar o aplicativo se a palavra-chave SERVER da cadeia de conexão estiver configurada fora do aplicativo. -Essa opção não funciona para aplicativos que têm suas cadeias de conexão codificadas. -Essa opção não funciona para aplicativos que usam Espelhamento de Banco de Dados, pois o servidor espelhado responde com um nome simples. |
| Adicione um alias para o nome curto a ser mapeado para o FQDN. - Essa opção funciona mesmo para aplicativos que têm suas cadeias de conexão codificadas. -Esta opção não funciona para aplicativos que utilizam Espelhamento de Banco de Dados, já que os provedores de serviços não verificam os aliases para nomes de parceiros de failover recebidos. |
|
| É necessário emitir um certificado para nome abreviado. - Essa opção funciona para todos os aplicativos. |
Alterações significativas no SQL Server 2005
Acumulamos e retemos a documentação para versões muito antigas do Microsoft SQL Server em um conjunto de páginas arquivadas. As páginas da Web arquivadas não são processadas por mecanismos de pesquisa, como Bing.com e Google.com. Mas você pode ver esses arquivos em nosso endereço/ versões anteriores do Docs :
Esses arquivos incluem a documentação de pelo menos as seguintes versões mais antigas:
- SQL Server 2014
- SQL Server 2012
- SQL Server 2008 R2
- SQL Server 2008
- SQL Server 2005
A documentação do SQL Server 2014 foi arquivada e não é mais processada pelos mecanismos de pesquisa. Os artigos de 2014 agora se declaram com NOINDEX e NOFOLLOW.
A versão mais recente do SQL Server, juntamente com outras versões recentes, está documentada aqui.
Consulte Também
Recursos do mecanismo de banco de dados preteridos no SQL Server 2014
Alterações de comportamento nos recursos do Mecanismo de Banco de Dados no SQL Server 2014
Funcionalidade do Mecanismo de Banco de Dados descontinuada no SQL Server 2014
Compatibilidade com versões anteriores do Mecanismo de Banco de Dados do SQL Server
Nível de compatibilidade de ALTER DATABASE (Transact-SQL)
Alterações significativas nos recursos das Ferramentas de Gerenciamento no SQL Server 2014