Alterações em recursos do Mecanismo de Banco de Dados que causam interrupção no SQL Server 2014
Este tópico descreve alterações interruptivas no Mecanismo de Banco de Dados 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 Use Upgrade Advisor to Prepare for Upgrades.
Alterações recentes no SQL Server 2014
Nenhum novo problema.
Alterações recentes no SQL Server 2012
Transact-SQL
Recurso | Descrição |
---|---|
Selecionando a partir de colunas ou tabelas denominadas NEXT | As sequências usam a função NEXT VALUE FOR do padrão ANSI. Se uma tabela ou uma coluna for chamada NEXT e a tabela ou coluna for aliased como VALUE e se o AS padrão ANSI for omitido, a instrução resultante poderá causar um erro. Para obter uma solução alternativa, inclua a palavra-chave AS do padrão ANSI. Por exemplo, SELECT NEXT VALUE FROM Table deveria ser reescrito como SELECT NEXT AS VALUE FROM Table e SELECT Col1 FROM NEXT VALUE deveria 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. Escreva a consulta novamente ou altere o nível de compatibilidade para 100 ou menos. O uso de PIVOT e uma consulta CTE recursiva produz resultados incorretos quando há mais de uma única linha por agrupamento. |
sp_setapprole e sp_unsetapprole | O parâmetro OUTPUT de cookie para sp_setapprole é documentado atualmente 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 o aplicativo continue a operar corretamente se o tamanho de retorno do cookie aumentar em uma versão futura. Para obter mais informações, confira sp_setapprole (Transact-SQL). |
EXECUTE AS | O parâmetro OUTPUT de cookie para EXECUTE AS está documentado atualmente como varbinary(8000) , que tem o comprimento máximo correto. No entanto, a implementação atual retorna varbinary(100) . Os aplicativos devem continuar a reservar varbinary(8000) para que o aplicativo continue a operar corretamente se o tamanho de retorno do cookie aumentar em uma versão futura. 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 as colunas por nome ou ajuste o aplicativo para aceitar essas colunas adicionais. |
Palavra-chave reservada WITHIN | Agora, WITHIN é uma palavra-chave reservada. As referências a colunas ou objetos denominados 'within' falharão. Renomeie a coluna ou o objeto ou delimite o nome usando colchetes ou aspas. Por exemplo, SELECT * FROM [within] . |
Operações CAST e CONVERT em colunas computadas do tipo time ou datetime2 |
Em versões anteriores do SQL Server, o estilo padrão para operações CAST e CONVERT em time tipos de dados 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 das operações CAST e CONVERT nos 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.A atualização do banco de dados para o nível de compatibilidade 110 não alterará os dados de usuário que foram armazenados em disco. Você deve corrigir esses dados manualmente conforme apropriado. Por exemplo, se você usou SELECT INTO para criar uma tabela com base em uma fonte que continha uma expressão de coluna computada descrita acima, os dados (usando o estilo 0) serão 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 As versões anteriores que especificam que o formato server.database.schema.table retornaram o erro 4902. A especificação do formato .database.schema.table ou do formato ..schema.table foi bem-sucedida. Para resolver o problema, remova o uso de um prefixo de 4 partes. |
Navegando em metadados | 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 navegação em metadados. |
SOUNDEX | No nível de compatibilidade de 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 computados sob os níveis de compatibilidade anteriores. Após a atualização para o nível de compatibilidade 110, talvez seja necessário recriar os índices, os heaps ou as 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 com falha | 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 confiarem nesse comportamento incorreto falharão. |
SERVERPROPERTY ('Edition') | Edição do produto instalada da instância do SQL Server 2012. Use o valor dessa propriedade para determinar os recursos e os limites, como o número máximo de CPUs que têm suporte do produto instalado. Com base na edição Enterprise instalada, isso pode retornar "Edição Enterprise" ou "Edição Enterprise: 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 de SQL Server. Para obter mais informações sobre limites de capacidade de computação no SQL Server 2012, consulte Limites de capacidade de computação por edição de SQL Server. |
CREATE 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 que têm suporte ao serem convertidos de tipos de data e hora para datetimeoffset são 0 ou 1. Todos os outros estilos de conversão retornam erro 9809. Por exemplo, o seguinte código retorna um 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 | As alterações de coluna de comando de nvarchar(16) para nvarchar(32) . |
sys.dm_os_memory_cache_counters | As seguintes colunas foram renomeada: single_pages_kb agora é: pages_kb multi_pages_kb agora é: pages_in_use_kb |
sys.dm_os_memory_cache_entries | A coluna pages_allocated_count coluna foi renomeada pages_kb. |
sys.dm_os_memory_clerks | A coluna multi_pages_kb foi removida. A coluna single_pages_kb coluna foi renomeada pages_kb. |
sys.dm_os_memory_nodes | As seguintes colunas foram renomeada: single_pages_kb agora é: pages_kb multi_pages_kb agora é: foreign_committed_kb |
sys.dm_os_memory_objects | As colunas a seguir foram renomeadas. pages_allocated_count agora é: pages_in_bytes max_pages_allocated_count agora é: max_pages_in_bytes |
sys.dm_os_sys_info | As seguintes colunas foram renomeada: physical_memory_in_bytes agora é: physical_memory_kb bpool_commit_target agora é: committed_target_kb bpool_visible agora é: visible_target_kb virtual_memory_in_bytes agora é: virtual_memory_kb bpool_commited agora é: committed_kb |
sys.dm_os_workers | A coluna de localidade foi removida. |
Exibições do catálogo
Visualizar | Descrição |
---|---|
sys.data_spaces 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 nessa coluna indica que o objeto foi 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 confiam na ordem das colunas retornadas dessas exibições de catálogo. |
Tipos de dados de SQL CLR (geometria, geografia e hierarchyid)
O assembly Microsoft.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. Aplicativos personalizados que referenciam esse assembly poderão falhar quando as condições a seguir forem verdadeiras.
Quando você move um aplicativo personalizado de um computador no qual SQL Server 2008 R2 foi instalado em um computador no qual apenas SQL Server 2014 está instalado, o aplicativo falhará porque a versão 10.0 referenciada do assembly SqlTypes não está presente. Talvez você receba 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."
Ao referenciar o assembly SqlTypes versão 11.0 e a versão 10.0 também estiver instalada, você poderá 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 design carrega a versão 10.0 do assembly. Essa falha ocorre quando o aplicativo chama um dos seguintes métodos:
O método
GetValue
da classeSqlDataReader
O método
GetValues
da classeSqlDataReader
operador de índice de colchete [] da classe
SqlDataReader
O método
ExecuteScalar
da classeSqlCommand
Você pode contornar esse problema usando um dos seguintes métodos:
Você pode contornar esse problema em seu código chamando o
GetSqlBytes
método , em vez dos métodos Get listados acima, para recuperar tipos de sistema SQL Server CLR, 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 redirecionamento de assembly no arquivo de configuração de aplicativo, conforme mostrado no seguinte exemplo:
<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 na sua cadeia de conexão especificando um valor "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 versões superiores.
A marca
assemblyBinding
deve ser encapsulada na marcaruntime
.
Suporte para AWE
O suporte ao recurso AWE (Address Windowing Extensions) de 32 bits foi descontinuado. Isso poderá resultar em desempenho mais lento em sistemas operacionais de 32 bits. Para instalações que usam quantidades de memória grandes, migre para um sistema operacional de 64 bits.
As funções XQuery reconhecem substituições
A recomendação W3C para funções e operadores XQuery requer que eles considerem um par substituto que representa um caractere Unicode no intervalo alto como um glifo único na codificação UTF-16. No entanto, em versões do SQL Server anteriores ao SQL Server 2012, as funções de cadeia de caracteres não reconheceram pares substitutos 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. 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 permite apenas pares substitutos bem formados. No entanto, algumas funções ainda podem retornar resultados indefinidos ou inesperados em certas circunstâncias, pois é possível passar pares substitutos 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 XQuery no SQL Server:
Forneça um valor da cadeia de caracteres constante como um valor binário. Durante o uso desse método, continua sendo possível passar pares substitutos inválidos ou parciais.
Forneça um valor da cadeia de caracteres constante fornecendo entidades de caractere. Durante o uso desse método, não é possível passar pares substitutos inválidos ou parciais. As funções XQuery requerem uma entidade de caractere único para o caracteres de alto nível. Essas funções gerarão um erro se as entidades de caracteres para os caracteres de pares substitutos forem fornecidas.
Importe valores externos usando sql:column ou sql:variable. Durante o uso desses métodos, continua sendo 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 alternativo 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, contains poderá retornar resultados inesperados, pois ele 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
,le
ege
. <><
Chamadas de consulta distribuída a um procedimento de sistema
As chamadas de consulta distribuídas por meio OPENQUERY
de alguns procedimentos do sistema falharão quando 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 para 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 de aplicativo) ao sp_reset_connection.
Para ADO.NET, você basicamente terá um nível de isolamento aleatório, dependendo da conexão que você obtém do pool (e se o aplicativo usa o nível de isolamento diferente). Como o pool ADO.NET pode reciclar conexões internamente e de forma transparente, você não poderá prever o que ocorrerá fora do pool.
Para o driver JDBC, você obtém o mesmo comportamento que o ADO.NET
O aplicativo deve sempre definir o nível de isolamento explicitamente depois de abrir a conexão para obter o que ele deseja.
A conexão JDBC pode ser agrupada para que o aplicativo possa obter um nível de isolamento aleatório e não souber sobre ele.
Para preservar a compatibilidade com versões anteriores, esse novo comportamento se aplica somente a clientes recentes começando com TDS 7.4.
Backward Compatibility
O 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 de 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, 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
Últimas alterações no SQL Server 2008/SQL Server 2008R2
Esta seção contém as alterações interruptivas introduzidas no SQL Server 2008. Nenhuma alteração foi introduzida no SQL Server 2008 R2.
Ordenações
Recurso | Descrição |
---|---|
Novas ordenações | 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 exatidão linguística e foram indicadas por referências à versão *_100. Se você escolher uma ordenação nova para o servidor ou para o banco de dados, lembre-se de que a ordenação pode não ser reconhecida pelos clientes com drivers de clientes mais antigos. Ordenações não reconhecidas podem fazer com que o aplicativo retorne erros e apresente falhas. Considere as seguintes soluções: Atualize o sistema operacional do cliente para que as ordenações de sistemas subjacentes sejam atualizadas. Se houver um software cliente do banco de dados instalado no cliente, considere a possibilidade de aplicar uma atualização de serviço ao software cliente do banco de dados. Escolha uma ordenação existente, mapeada para uma página de código no cliente. |
CLR (Common Language Runtime)
Recurso | Descrição |
---|---|
Assemblies CLR | Quando um banco de dados é atualizado para 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 de usuário com nomes conflitantes. O Supervisor de Atualização aconselhará renomear qualquer assembly em conflito, bem como qualquer tipo em conflito, ou usar nomes de duas partes no código para fazer referência a esse tipo de usuário preexistente.Se uma atualização de banco de dados detectar um assembly de usuário com um nome conflitante, ele o renomeará automaticamente e o colocará no banco de dados em modo de suspeição. 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 CLR | 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 SQL Server, seu aplicativo SQL Server poderá parar de funcionar após a atualização para SQL Server 2008. Isso ocorre porque a manutenção ou atualização de bibliotecas no GAC não atualiza assemblies dentro de SQL Server. Se existir um assembly em um banco de dados 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 pelo SQL Server integração CLR. Para obter mais informações, consulte Bibliotecas de .NET Framework com suporte. Depois de atualizar seu banco de dados, faça o serviço ou atualize a cópia do assembly dentro de seus bancos de dados 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 uma biblioteca do .NET Framework sem-suporte no aplicativo, execute a seguinte consulta no banco de dados. SELECT name FROM sys.assemblies WHERE clr_name LIKE '%publickeytoken=b03f5f7f11d50a3a,%'; |
Rotinas CLR | Usar a representação dentro de funções definidas pelo usuário CLR, agregações definidas pelo usuário ou UDTs (tipos definidos pelo usuário) pode fazer com que seu aplicativo falhe com o erro 6522 após a atualização para o SQL Server 2008. Os cenários a seguir têm êxito SQL Server 2005, mas falham em SQL Server 2008. São apresentadas resoluções para cada cenário. Uma função clr definida pelo usuário, agregação definida pelo usuário ou método UDT que usa representação tem um parâmetro do 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 resolve esse problema, adicione o atributo DataAccessKind.Read no método , recompile o assembly e implante novamente a rotina e o assembly.Uma função com valor de tabela CLR que tem um método Init que executa a representação. Para resolve esse problema, adicione o atributo DataAccessKind.Read no método , recompile o assembly e implante novamente a rotina e o assembly. Uma função com valor de tabela CLR que tem um método FillRow que executa a representação. Para resolve 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 execução de consulta de solução de problemas. Para obter mais informações, consulte sys.dm_exec_query_resource_semaphores (Transact-SQL). |
Erros e eventos
Recurso | 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. Em SQL Server 2008, o erro 18456 é retornado. |
Showplan
Recurso | Descrição |
---|---|
Esquema XML do plano de execução | Um novo elemento SeekPredicateNew é adicionado ao esquema XML Showplan e a sequência de xsd delimitador (SqlPredicatesType) é convertida em um <item xsd:choice> . Em vez de um ou mais elementos SeekPredicate , um ou mais elementos SeekPredicateNew agora podem aparecer no XML showplan. Os dois elementos são mutuamente exclusivos. SeekPredicate é mantido no esquema XML do Plano de Execução para compatibilidade com versões anteriores; no entanto, os planos de consulta 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 o 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 SQL Server planos em relação ao esquema SQL Server 2005 falharão. |
Transact-SQL
Recurso | Descrição |
---|---|
Evento DDL ALTER_AUTHORIZATION_DATABASE | 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 DDL (linguagem de definição de dados) é um objeto . No SQL Server 2008, o tipo real (por exemplo, 'table' ou 'function') é retornado. |
CONVERT | Se um estilo inválido for passado para a função CONVERT, será retornado um erro quando o tipo de conversão for de binário em caractere ou de caractere em binário. Em versões anteriores do SQL Server, o estilo inválido é definido como o estilo padrão para conversões binárias para caracteres e caracteres para binários. |
GRANT/DENY/REVOKE EXECUTE em assemblies | A permissão EXECUTE não pode ser concedida, negada ou revogada para assemblies. Essa permissão não tem nenhum efeito e agora provoca um erro. Em vez disso, conceda, negue ou revogue a permissão EXECUTE nos procedimentos armazenados ou nas funções que fazem referência ao método de assembly. |
Permissões GRANT/DENY/REVOKE 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. Em SQL Server 2008, um erro é retornado. |
GROUP BY | A cláusula GROUP BY não pode conter uma subconsulta em uma expressão que é usada pela lista group by. 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 evitar comportamento não determinístico, a cláusula OUTPUT não pode fazer referência a 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 acesso a dados de usuário ou de sistema ou que supostamente executa tal acesso. Uma coluna computada que contém em sua definição uma função definida pelo usuário que executa acesso a dados de usuário ou de sistema. Quando SQL Server detectar tal coluna na cláusula OUTPUT, ocorrerá o erro 4186. 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 gatilhos habilitados. |
Opção no nível de servidor classificação pré-computada | Não há suporte para essa opção no SQL Server 2008. Modifique os aplicativos que usam esse recurso o mais rápido possível. |
dica de tabela READPAST | Você não pode 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 é configurada como ON. No entanto, se você combinar a dica READPAST com READCOMMITTEDLOCK, o comportamento de READPAST é igual ao do bloqueio da dica READCOMMITTED. |
sp_helpuser | Os seguintes nomes de coluna retornados no conjunto de resultados do sp_helpuser procedimento armazenado foram alterados: GroupName agora é: RoleName Group_name agora é: Role_name Group_id agora é: Role_id Users_in_group agora é: Users_in_role |
Criptografia de Dados Transparente | A criptografia transparente de dados (TDE) é executada no nível de E/S: a estrutura da página é descriptografada na memória e criptografada somente quando a página é gravada no disco. Os arquivos de banco de dados e os arquivos de log são criptografados. Aplicativos de terceiros que ignoram o mecanismo de SQL Server regular para acessar páginas (por exemplo, verificando os dados ou arquivos de log diretamente), falharão quando um banco de dados usar TDE porque os dados são criptografados nos arquivos. Esses aplicativos podem aproveitar a API Criptográfica de Janela para desenvolver uma solução para descriptografar os dados fora do SQL Server. |
XQuery
Recurso | Descrição |
---|---|
Suporte à data/hora | No SQL Server 2005, os tipos xs:time de dados , xs:date 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 de UTC. SQL Server 2008, fornece um comportamento padrão de conformidade, resultando nas seguintes alterações:Os valores sem fuso horário são validados. O fuso horário fornecido ou a ausência de um fuso horário é preservada. A representação de armazenamento interna é 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, são permitidas etapas em uma expressão XQuery ou XPath que começa com dois-pontos (':'). Por exemplo, a instrução a seguir contém um teste de nome (CTR02) dentro da expressão de caminho que começa com um 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 o dois-pontos à esquerda ou especifique um prefixo para o teste de nome, por exemplo, (n$/CTR02) ou (n$/p1:CTR02). |
Connecting
Recurso | Descrição |
---|---|
Conectando-se de SQL Server Native Client usando SSL | Ao se conectar com SQL Server Native Client, aplicativos que usam "SERVER=shortname; FORCE ENCRYPTION=true" com certificado cujas Entidades especificam nomes de domínio totalmente qualificados (FQDN) se conectaram no passado devido à validação descontraída. O SQL Server 2008 R2 aprimora a segurança impondo assuntos de FQDN para certificados. Os aplicativos que dependem de validação reduzida devem executar uma das seguintes ações: Use o FQDN na cadeia de caracteres de conexão. -Essa opção não exigirá a recompilação do 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 mapear para o FQDN. -Essa opção funciona até mesmo 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 os provedores não pesquisam aliases para nomes de parceiros de failover recebidos. |
|
Tenha um certificado emitido para nome curto. -Essa opção funciona para todos os aplicativos. |
Alterações recentes no SQL Server 2005
Acumulamos e retivemos a documentação para versões muito antigas do Microsoft SQL Server em um conjunto de páginas da Web de arquivos. 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
SQL Server documentação de 2014 foi arquivada e não é mais processada por 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 no comportamento de 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 de quebra feitas em recursos das Ferramentas de Gerenciamento do SQL Server 2014