Modifiche che possono causare problemi di funzionamento apportate alle funzionalità del Motore di database in SQL Server 2012.
In questo argomento si illustrano le modifiche di rilievo apportate al Motore di database di SQL Server 2012 e alle versioni precedenti di SQL Server. Queste modifiche potrebbero interrompere il funzionamento di applicazioni, funzionalità o script basati su versioni precedenti di SQL Server. È possibile che questi problemi si verifichino durante gli aggiornamenti. Per ulteriori informazioni, vedere Utilizzare Preparazione aggiornamento per preparare gli aggiornamenti.
Contenuto dell'argomento
Modifiche di rilievo in SQL Server 2012
Modifiche di rilievo in SQL Server 2008/SQL Server 2008R2
Modifiche di rilievo in SQL Server 2005
Modifiche di rilievo in SQL Server 2012
Transact-SQL
Funzionalità |
Descrizione |
---|---|
Selezione dalle colonne o dalle tabelle denominate NEXT. |
Nelle sequenze viene utilizzata la funzione NEXT VALUE FOR dello standard ANSI. Se una tabella o una colonna è denominata NEXT, presenta un alias VALUE e la parola chiave AS dello standard ANSI viene omessa, è possibile che nell'istruzione risultante si verifichi un errore. Per risolvere il problema, includere la parola chiave AS dello standard ANSI. Ad esempio, SELECT NEXT VALUE FROM Table deve essere riscritto come SELECT NEXT AS VALUE FROM Table e SELECT Col1 FROM NEXT VALUE deve essere riscritto come SELECT Col1 FROM NEXT AS VALUE. |
PIVOT - operatore |
L'operatore PIVOT non è consentito in una query ricorsiva dell'espressione di tabella comune quando il livello di compatibilità del database è impostato su 110. Riscrivere la query o impostare il livello di compatibilità su 100 o un valore inferiore. L'utilizzo di PIVOT in una query ricorsiva dell'espressione di tabella comune genera risultati non corretti quando sono presenti più righe per raggruppamento. |
sp_setapprole e sp_unsetapprole |
Il parametro OUTPUT del cookie per sp_setapprole è al momento disponibile come varbinary(8000) che è la lunghezza massima corretta. Tuttavia, dall'implementazione corrente viene restituito varbinary(50). Le applicazioni devono continuare a riservare varbinary(8000) in modo siano in grado di funzionare correttamente se le dimensioni restituite del cookie aumentano in una versione successiva. Per ulteriori informazioni, vedere sp_setapprole (Transact-SQL). |
EXECUTE AS |
Il parametro OUTPUT del cookie per EXECUTE AS è attualmente disponibile come varbinary(8000) che rappresenta la lunghezza massima corretta. Tuttavia, dall'implementazione corrente viene restituito varbinary(100). Le applicazioni devono continuare a riservare varbinary(8000) in modo siano in grado di funzionare correttamente se le dimensioni restituite del cookie aumentano in una versione successiva. Per ulteriori informazioni, vedere EXECUTE AS (Transact-SQL). |
Funzione sys.fn_get_audit_file |
Sono state aggiunte due colonne, user_defined_event_id e user_defined_information, per garantire il supporto degli eventi di controllo definiti dall'utente. Nelle applicazioni in cui le colonne non vengono selezionate in base al nome è possibile che venga restituito un numero di colonne maggiore del previsto. Selezionare le colonne in base al nome oppure modificare l'applicazione in modo che vengano accettate queste colonne aggiuntive. |
Operazioni CAST e CONVERT su colonne calcolate di tipo time o datetime2 |
Nelle versioni precedenti di SQL Server lo stile predefinito per le operazioni CAST e CONVERT sui tipi di dati time e datetime2 è 121, tranne quando uno dei due tipi viene usato in un'espressione di colonna calcolata. Per le colonne calcolate, lo stile predefinito è 0. Questo comportamento influisce sulle colonne calcolate quando vengono create o usate nelle query con parametrizzazione automatica o nelle definizioni dei vincoli. Con il livello di compatibilità 110, lo stile predefinito per le operazioni CAST e CONVERT sui tipi di dati time e datetime2 è sempre 121. Se la query si basa sul comportamento obsoleto, usare un livello di compatibilità inferiore a 110 oppure specificare in modo esplicito lo stile 0 nella query interessata. L'aggiornamento del database al livello di compatibilità 110 non comporta la modifica dei dati utente archiviati su disco. È necessario correggere manualmente questi dati nel modo opportuno. Se ad esempio si utilizza SELECT INTO per creare una tabella da un'origine che contiene un'espressione di colonna calcolata descritta in precedenza, vengono archiviati i dati (con stile 0), non la definizione della colonna calcolata. Sarà necessario aggiornare manualmente questi dati in base allo stile 121. |
ALTER TABLE |
L'istruzione ALTER TABLE supporta unicamente nomi di tabella in due parti (schema.oggetto). L'utilizzo di un nome di tabella basato sui formati seguenti comporta la generazione dell'errore 117 in fase di compilazione.
Nelle versioni precedenti l'utilizzo del formato server.database.schema.tabella genera l'errore 4902. L'utilizzo del formato .database.schema.tabella o ..schema.tabella è supportato. Per risolvere il problema, rimuovere l'utilizzo di un prefisso in quattro parti. |
Esplorazione dei metadati |
L'esecuzione di una query su una vista tramite FOR BROWSE o SET NO_BROWSETABLE ON comporta la restituzione dei metadati della vista, non dell'oggetto sottostante. Questo comportamento corrisponde ad altri metodi di esplorazione dei metadati. |
SOUNDEX |
Con il livello di compatibilità del database 110, la funzione SOUNDEX consente di implementare nuove regole che potrebbero generare una differenza tra i valori calcolati dalla funzione e quelli calcolati con livelli di compatibilità precedenti. Dopo aver effettuato l'aggiornamento al livello di compatibilità 110, potrebbe essere necessario ricompilare gli indici, gli heap o i vincoli CHECK in cui viene utilizzata la funzione SOUNDEX. Per ulteriori informazioni, vedere SOUNDEX (Transact-SQL). |
Messaggio sul numero di righe per le istruzioni DML che hanno esito negativo |
In SQL Server 2012 il Motore di database invierà regolarmente il token TDS DONE con RowCount: 0 ai client quando un'istruzione DML ha esito negativo. Nelle versioni precedenti di SQL Server un valore errato -1 viene inviato al client quando l'istruzione DML non riuscita si trova all'interno di un blocco TRY-CATCH e il Motore di database attiva la parametrizzazione automatica oppure il blocco TRY-CATCH non si trova sullo stesso livello dell'istruzione non riuscita. Ad esempio, se un blocco TRY-CATCH chiama una stored procedure e un'istruzione DML nella procedura ha esito negativo, il client riceverà erroneamente un valore -1. Le applicazioni basate su questo comportamento errato avranno esito negativo. |
SERVERPROPERTY ('Edizione') |
Edizione del prodotto installata per l'istanza di SQL Server 2012. Utilizzare il valore di questa proprietà per determinare le funzionalità e i limiti, come il numero massimo di CPU, supportati dal prodotto installato. In base all'edizione Enterprise installata, questa proprietà può restituire 'Enterprise Edition' o 'Enterprise Edition: Core-based Licensing'. Le edizioni Enterprise sono differenziate in base alla capacità di calcolo massima per una sola istanza di SQL Server. Per ulteriori informazioni sui limiti della capacità di calcolo in SQL Server 2012, vedere Limiti della capacità di calcolo per edizione di SQL Server. |
CREATE LOGIN |
L'opzione CREATE LOGIN WITH PASSWORD = 'password' HASHED non può essere utilizzata con hash creati da SQL Server 7 o versioni precedenti. |
Operazioni CAST e CONVERT per datetimeoffset |
Gli unici stili supportati nella conversione di tipi date e time in datetimeoffset sono 0 e 1. Tutti gli altri stili di conversione restituiscono l'errore 9809. Il codice seguente, ad esempio, restituisce un errore 9809.
|
SET ROWCOUNT |
Il comportamento di SET ROWCOUNT è stato modificato per migliorare l'efficienza di molte query comuni e può influire sui piani di query per i livelli di compatibilità 110 e superiori. Può verificarsi un errore se l'istruzione SET ROWCOUNT modifica il valore ROWCOUNT in 0 o da 0 dopo un'istruzione DECLARE CURSOR e prima di un'istruzione FETCH. Per evitare questo errore, impostare il livello di compatibilità del database su 100 o impostare ROWCOUNT all'esterno delle istruzioni di cursore. |
DMV
Visualizzazione |
Descrizione |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sys.dm_exec_requests |
La colonna del comando viene modificata da nvarchar(16) a nvarchar(32). |
||||||||||||
sys.dm_os_memory_cache_counters |
Le colonne seguenti sono state rinominate.
|
||||||||||||
sys.dm_os_memory_cache_entries |
La colonna pages_allocated_count è stata rinominata pages_kb. |
||||||||||||
sys.dm_os_memory_clerks |
La colonna multi_pages_kb è stata rimossa. La colonna single_pages_kb è stata rinominata pages_kb. |
||||||||||||
sys.dm_os_memory_nodes |
Le colonne seguenti sono state rinominate.
|
||||||||||||
sys.dm_os_memory_objects |
Le colonne seguenti sono state rinominate.
|
||||||||||||
sys.dm_os_sys_info |
Le colonne seguenti sono state rinominate.
|
||||||||||||
sys.dm_os_workers |
La colonna delle impostazioni locali è stata rimossa. |
Viste del catalogo
Visualizzazione |
Descrizione |
---|---|
sys.data_spaces sys.partition_schemes sys.filegroups sys.partition_functions |
Una colonna nuova, is_system, è stata aggiunta a sys.data_spaces e a sys.partition_functions. sys.partition_schemes e sys.filegroups ereditano le colonne di sys.data_spaces. Un valore 1 in questa colonna indica che l'oggetto viene utilizzato per i frammenti dell'indice full-text. In sys.partition_functions, sys.partition_schemes e sys.filegroups, la nuova colonna non è l'ultima. Rivedere le query esistenti basate sull'ordine delle colonne restituito da queste viste del catalogo. |
Tipi di dati CLR SQL (hierarchyid, geometry e geography)
L'assembly Microsoft.SqlServer.Types.dll, che contiene i tipi di dati spaziali e il tipo hierarchyid, è stato aggiornato dalla versione 10.0 alla versione 11.0. È possibile che le applicazioni personalizzate che fanno riferimento a questo assembly abbiano esito negativo quando sussistono le condizioni seguenti.
Quando si sposta un'applicazione personalizzata da un computer in cui era installato SQL Server 2008 R2 a un computer in cui è installato solo SQL Server 2012, nell'applicazione si verificherà un errore perché la versione 10.0 dell'assembly SqlTypes a cui viene fatto riferimento non è presente. È possibile che venga visualizzato questo messaggio di errore: “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 si fa riferimento all'assembly SqlTypes versione 11.0 ed è installata anche la versione 10.0, è possibile che venga visualizzato questo messaggio di errore: “System.InvalidCastException: Unable to cast object of type 'Microsoft.SqlServer.Types.SqlGeometry' to type 'Microsoft.SqlServer.Types.SqlGeometry'.”
Quando si fa riferimento all'assembly SqlTypes versione 11.0 da un'applicazione personalizzata destinata a .NET 3.5, 4 o 4.5, nell'applicazione si verificherà un errore perché per motivi strutturali SqlClient carica la versione 10.0 dell'assembly. Questo errore si verifica quando l'applicazione chiama uno dei metodi seguenti:
Metodo GetValue della classe SqlDataReader
Metodo GetValues della classe SqlDataReader
Operatore di indice parentesi quadre [] della classe SqlDataReader
Metodo ExecuteScalar della classe SqlCommand
È possibile risolvere questo problema utilizzando uno dei metodi seguenti:
È possibile risolvere questo problema nel codice chiamando il metodo GetSqlBytes, anziché i metodi Get elencati in precedenza, per recuperare i tipi di sistema CLR di SQL Server, come illustrato nell'esempio seguente:
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)); } }
È possibile risolvere questo problema utilizzando il reindirizzamento degli assembly nel file di configurazione dell'applicazione, come illustrato nell'esempio seguente:
<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>
È possibile risolvere questo problema nella stringa di connessione specificando il valore "SQL Server 2012" per l'attributo "Type System Version" per forzare il caricamento della versione 11.0 dell'assembly da parte di SqlClient. Questo attributo della stringa di connessione è disponibile unicamente in .NET 4.5 e versioni successive.
È consigliabile includere il tag assemblyBinding nel tag runtime.
Supporto per AWE
Address Windowing Extensions (AWE) a 32 bit non è più supportato. Ciò potrebbe comportare un calo delle prestazioni nei sistemi operativi a 32 bit. Per installazioni che richiedono grandi quantità di memoria, eseguire la migrazione a un sistema operativo a 64 bit.
Le funzioni XQuery riconoscono i surrogati
L'indicazione W3C per gli operatori e le funzioni XQuery richiede il riconoscimento di una coppia di surrogati che rappresenti un carattere Unicode surrogato alto come un singolo glifo nella codifica UTF-16. Tuttavia, nelle versioni di SQL Server precedenti a SQL Server 2012, le funzioni stringa non riconoscono le coppie di surrogati come singolo carattere. Alcune operazioni sulle stringhe, ad esempio il calcolo della lunghezza delle stringhe e le estrazioni delle sottostringhe, restituiscono risultati non corretti. SQL Server 2012 supporta ora il formato UTF-16 e la gestione corretta di coppie di surrogati.
Il tipo di dati XML in SQL Server consente unicamente coppie di surrogati con formati corretti. In alcune circostanze alcune funzioni possono tuttavia restituire ancora risultati non definiti o non previsti, poiché è possibile passare coppie di surrogati parziali o non valide alle funzioni XQuery come valori stringa. Si considerino i metodi seguenti per la generazione di valori stringa quando si utilizza XQuery in SQL Server:
Fornire un valore stringa costante come valore binario. Quando si utilizza questo metodo, è ancora possibile passare coppie di surrogati non valide o parziali.
Fornire un valore stringa costante fornendo entità carattere. Quando si utilizza questo metodo, non è possibile passare coppie di surrogati non valide. Le funzioni XQuery richiedono un'entità a singolo carattere per il carattere di alto livello. Viene generato un errore se vengono fornite le entità carattere per i caratteri della coppia di surrogati.
Importare valori esterni tramite sql:column o sql:variable. Quando si utilizza questi metodi, è ancora possibile introdurre coppie di surrogati non valide o parziali.
Funzioni e operatori XQuery interessati
Gli operatori e le funzioni XQuery seguenti gestiscono correttamente le coppie di surrogati UTF-16 in SQL Server 2012:
fn:string-length. Tuttavia, se una coppia di surrogati non valida o parziale viene passata come argomento, il comportamento di string-length non risulterà definito.
fn:substring.
fn:contains. Tuttavia, se una coppia di surrogati parziale viene passata come valore, contains potrebbe restituire risultati imprevisti, poiché potrebbe trovare la coppia di surrogati parziale contenuta in una coppia di surrogati con formato corretto.
fn:concat. Tuttavia, se una coppia di surrogati parziale viene passata come valore, concat può generare coppie di surrogati non corrette o parziali.
Operatori di confronto e clausola order by. Gli operatori di confronto includono +, <, >, <=, >=, eq, lt, gt, le e ge.
Chiamate di query distribuite a una procedura di sistema
Le chiamate di query distribuite tramite OPENQUERY ad alcune procedure di sistema avranno esito negativo se chiamate da un server a un altro. Si verifica se il Motore di database non è in grado di individuare i metadati per una procedura, ad esempio SELECT * FROM OPENQUERY(..., 'EXEC xp_loginfo').
Compatibilità con le versioni precedenti
Il nuovo comportamento dipende dal livello di compatibilità
Le funzioni e gli operatori seguenti dimostrano il nuovo comportamento descritto in precedenza solo quando il livello di compatibilità è 110 o superiore:
fn:contains.
fn:concat.
operatori di confronto e clausola order by
Il nuovo comportamento dipende dall'URI dello spazio dei nomi predefinito per le funzioni
Le funzioni seguenti dimostrano il nuovo comportamento descritto in precedenza solo quando l'URI dello spazio dei nomi predefinito corrisponde allo spazio dei nomi nell'indicazione finale, ovvero http://www.w3.org/2005/xpath-functions. Quando il livello di compatibilità è impostato su 110 o su un valore superiore, per impostazione predefinita SQL Server 2012 associa lo spazio dei nomi della funzione predefinita a questo spazio dei nomi. Tuttavia, queste funzioni dimostrano il nuovo comportamento quando questo spazio dei nomi viene utilizzato indipendentemente dal livello di compatibilità.
fn:string-length
fn:substring
Torna all'inizio
Modifiche di rilievo in SQL Server 2008/SQL Server 2008R2
In questa sezione si illustrano le modifiche di rilievo introdotte in SQL Server 2008. Nessuna modifica è stata introdotta in SQL Server 2008 R2.
Regole di confronto
Funzionalità |
Descrizione |
---|---|
Nuove regole di confronto |
In SQL Server 2008 sono state introdotte nuove regole di confronto completamente allineate a quelle disponibili in Windows Server 2008. Queste 80 nuove regole di confronto presentano miglioramenti nell'aspetto linguistico e sono state segnalate con i riferimenti di versione *_100. Se si scelgono nuove regole di confronto per il server o il database, è necessario tenere presente che esiste la possibilità che non vengano riconosciute dai client con versioni di driver client precedenti. Le regole di confronto non riconosciute possono determinare la restituzione di errori da parte dell'applicazione. Prendere in considerazione le soluzioni seguenti:
|
Common Language Runtime (CLR)
Funzionalità |
Descrizione |
---|---|
Assembly CLR |
Quando un database viene aggiornato a SQL Server 2008, viene automaticamente installato l'assembly Microsoft.SqlServer.Types per il supporto dei nuovi tipi di dati. Le regole di Preparazione aggiornamento rilevano qualsiasi tipo di utente o assembly con nomi in conflitto. Viene quindi indicato di rinominare gli assembly in conflitto, nonché di rinominare qualsiasi tipo in conflitto o di utilizzare nomi in due parti nel codice per fare riferimento al tipo di utente preesistente. Se un aggiornamento del database rileva un assembly utente con nome in conflitto, rinominerà automaticamente l'assembly e metterà il database in modalità sospetta. Se durante l'aggiornamento esiste un utente con nome in conflitto, non viene eseguita alcuna operazione. Dopo l'aggiornamento, esisteranno sia il tipo di utente obsoleto che il nuovo tipo di sistema. Il tipo di utente sarà disponibile solo tramite nomi in due parti. |
Assembly CLR |
Con SQL Server 2008 viene installato .NET Framework 3.5 SP1, che consente di aggiornare le librerie nella Global Assembly Cache (GAC). Se in un database di SQL Server sono registrate librerie non supportate, è possibile che venga arrestato il funzionamento dell'applicazione SQL Server dopo l'aggiornamento a SQL Server 2008. Ciò si verifica in quanto le operazioni di gestione o aggiornamento delle librerie presenti nella GAC non determinano l'aggiornamento degli assembly che si trovano in SQL Server. Se un assembly è presente sia in un database di SQL Server sia nella GAC, le due copie relative devono corrispondere esattamente. Se non corrispondono, si verificherà un errore quando l'assembly verrà utilizzato dalla funzionalità di integrazione con CLR di SQL Server. Per ulteriori informazioni, vedere Librerie .NET Framework supportate. Dopo aver aggiornato il database, gestire o aggiornare la copia dell'assembly nei database di SQL Server con l'istruzione ALTER ASSEMBLY. Per ulteriori informazioni, vedere l'articolo 949080 della Knowledge Base. Per rilevare l'eventuale utilizzo di librerie .NET Framework non supportate nell'applicazione, eseguire la query seguente nel database:
|
Routine CLR |
Se si utilizza la rappresentazione in funzioni CLR definite dall'utente, aggregazioni definite dall'utente o tipi definiti dall'utente (UDT), è possibile che nell'applicazione si verifichi l'errore 6522 dopo l'aggiornamento a SQL Server 2008. Gli scenari seguenti hanno esito positivo in SQL Server 2005 e negativo in SQL Server 2008. Per ogni scenario vengono fornite le soluzioni.
|
DMV
Visualizzazione |
Descrizione |
---|---|
sys.dm_os_sys_info |
Rimozione delle colonne cpu_ticks_in_ms e sqlserver_start_time_cpu_ticks. |
sys.dm_exec_query_resource_semaphores sys.dm_exec_query_memory_grants |
La colonna resource_semaphore_id non è un ID univoco in SQL Server 2008. La modifica può influire sulla risoluzione dei problemi relativi all'esecuzione di query. Per ulteriori informazioni, vedere sys.dm_exec_query_resource_semaphores (Transact-SQL). |
Errori ed eventi
Funzionalità |
Descrizione |
---|---|
Errori di accesso |
In SQL Server 2005 viene restituito l'errore 18452 quando viene utilizzato un account di accesso SQL per connettersi a un server configurato per il solo utilizzo dell'autenticazione di Windows. In SQL Server 2008 viene invece restituito l'errore 18456. |
Showplan
Funzionalità |
Descrizione |
---|---|
XML Schema Showplan |
Un nuovo elemento SeekPredicateNew viene aggiunto a XML Schema Showplan e la sequenza xsd che lo contiene (SqlPredicatesType) viene convertita in un elemento <xsd:choice>. A questo punto è possibile che nello schema Showplan XML vengano visualizzati uno o più elementi SeekPredicateNew, anziché uno o più elementi SeekPredicate. I due elementi si escludono a vicenda. L'elemento SeekPredicate viene mantenuto in Showplan XML Schema per la compatibilità con le versioni precedenti. È tuttavia possibile che i piani di query creati in SQL Server 2008 contengano l'elemento SeekPredicateNew. Le applicazioni per le quali è previsto il recupero del solo elemento SeekPredicate figlio dal nodo ShowPlanXML/BatchSequence/Batch/Istruzioni/StmtSimple/QueryPlan/RelOp/IndexScan/SeekPredicates potrebbero avere esito negativo se l'elemento SeekPredicate non esiste. Riscrivere l'applicazione in modo che nel nodo in questione sia previsto l'elemento SeekPredicate o l'elemento SeekPredicateNew. Per ulteriori informazioni, vedere: |
XML Schema Showplan |
Un nuovo attributo IndexKind viene aggiunto al tipo complesso ObjectType in Showplan XML Schema. Le applicazioni che convalidano in modo esplicito i piani di SQL Server in base allo schema SQL Server 2005 non riusciranno. |
Transact-SQL
Funzionalità |
Descrizione |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Evento ALTER_AUTHORIZATION_DATABASE DDL |
Quando in SQL Server 2005 viene generato l'evento DDL ALTER_AUTHORIZATION_DATABASE, viene restituito il valore "object" nell'elemento ObjectType relativo alla funzione XML EVENTDATA di tale evento se il tipo di entità dell'entità a protezione diretta nell'operazione DDL (Data Definition Language) è un oggetto. In SQL Server 2008 viene restituito il tipo effettivo, quale "table" o "function". |
||||||||||
CONVERT |
Se uno stile non valido viene passato alla funzione CONVERT, viene restituito un errore quando il tipo di conversione è da binario a carattere o da carattere a binario. Nelle versioni precedenti di SQL Server lo stile non valido è impostato sullo stile predefinito per conversioni da binario a carattere e da carattere a binario. |
||||||||||
Autorizzazioni GRANT/DENY/REVOKE EXECUTE per gli assembly |
L'autorizzazione EXECUTE non può essere concessa, negata o revocata agli assembly. Tale autorizzazione non ha alcun effetto e ora causa un errore. È invece possibile concederla, negarla o revocarla a stored procedure o funzioni che fanno riferimento al metodo dell'assembly. |
||||||||||
Autorizzazioni GRANT/DENY/REVOKE per i tipi di sistema |
Tali autorizzazioni non possono essere concesse, negate o revocate ai tipi di sistema. Nelle versioni precedenti di SQL Server l'esecuzione di queste istruzioni ha esito positivo, ma senza alcun effetto. In SQL Server 2008 viene restituito un errore. |
||||||||||
GROUP BY |
La clausola GROUP BY non può contenere una sottoquery in un'espressione utilizzata per l'elenco GROUP BY. Nelle versioni precedenti di SQL Server questo era consentito. In SQL Server 2008 viene restituito l'errore 144. Ad esempio, il codice seguente avrà esito positivo in SQL Server 2005, ma esito negativo in SQL Server 2008.
|
||||||||||
Clausola OUTPUT |
Per impedire un comportamento non deterministico, la clausola OUTPUT non può fare riferimento a una colonna di una vista o di una funzione inline con valori di tabella se la colonna in questione viene definita mediante uno dei metodi seguenti:
Quando SQL Server rileva una colonna di questo tipo nella clausola OUTPUT, viene generato l'errore 4186. Per ulteriori informazioni, vedere MSSQLSERVER_4186. |
||||||||||
Clausola OUTPUT INTO |
La tabella di destinazione della clausola OUTPUT INTO non può includere trigger abilitati. |
||||||||||
Opzione a livello di server precompute rank |
Questa opzione non è supportata in SQL Server 2008. Modificare il prima possibile le applicazioni che utilizzano questa caratteristica. |
||||||||||
Hint di tabella READPAST |
Non è possibile specificare l'hint READPAST in Isolamento dello snapshot. L'hint READPAST viene ignorato se l'opzione di database READ_COMMITED_SNAPSHOT o ALLOW_SNAPSHOT_ISOLATION è impostata su ON. Tuttavia, se si combina l'hint READPAST con READCOMMITTEDLOCK, il comportamento di READPAST è uguale a quello con l'hint di blocco READCOMMITTED. |
||||||||||
sp_helpuser |
Sono stati modificati i nomi di colonna seguenti restituiti nel set di risultati della stored procedure sp_helpuser.
|
||||||||||
Transparent Data Encryption |
Transparent Data Encryption (TDE) viene eseguito al livello di I/O: la struttura della pagina non presenta crittografia nella memoria e viene crittografata solo al momento della scrittura su disco della pagina. La crittografia viene applicata sia ai file di database sia ai file di log. Le applicazioni di terze parti, che non tengono conto del normale meccanismo di SQL Server per l'accesso alle pagine e che prevedono ad esempio l'analisi diretta dei file di dati e di log, non riusciranno se in un database viene utilizzato TDE perché i dati contenuti in tali file sono crittografati. Applicazioni di questo tipo possono utilizzare l'API di crittografia di Windows per sviluppare una soluzione per la decrittografia dei dati all'esterno di SQL Server. |
XQuery
Funzionalità |
Descrizione |
---|---|
Supporto di dati datetime |
In SQL Server 2005 i tipi di dati xs:time, xs:date e xs:dateTime non prevedono il supporto dei fusi orari. Viene eseguito il mapping dei dati del fuso orario al fuso orario UTC. In SQL Server 2008 presenta un comportamento conforme agli standard che determina le modifiche seguenti:
Modificare le applicazioni e le espressioni XQuery in base ai nuovi valori di tipo. |
Espressioni XQuery e Xpath |
In SQL Server 2005 sono consentiti passaggi in un'espressione XQuery o XPath che iniziano con due punti (":"). L'istruzione seguente, ad esempio, contiene un test di nome (CTR02) all'interno dell'espressione di percorso che inizia con due punti.
In SQL Server 2008 questo utilizzo non è consentito, in quanto non è conforme agli standard XML. Viene restituito l'errore 9341. Rimuovere i due punti iniziali o specificare un prefisso per il test del nome, ad esempio (n$/CTR02) o (n$/p1:CTR02). |
Connecting
Funzionalità |
Descrizione |
---|---|
Connessione da SQL Server Native Client utilizzando SSL |
Per connettersi a SQL Server Native Client, le applicazioni che utilizzano "SERVER=shortname; FORCE ENCRYPTION=true" con un certificato il cui Subjects specifichi nomi di dominio completi in passato hanno eseguito la connessione grazie a una convalida flessibile. SQL Server 2008 R2 migliora la sicurezza grazie all'applicazione di oggetti FQDN per i certificati. Per le applicazioni che si basano su una convalida flessibile è necessario eseguire una delle operazioni seguenti:
|
Torna all'inizio
Modifiche di rilievo in SQL Server 2005
Per un elenco delle modifiche di rilievo introdotte in SQL Server 2005, vedere Modifiche che possono causare problemi di funzionamento apportate alle funzionalità del Motore di database in SQL Server 2005.
Vedere anche
Riferimento
Funzionalità del Motore di database deprecate in SQL Server 2012
Differenze di funzionamento delle funzionalità del Motore di database in SQL Server 2012
Funzionalità del Motore di database non più utilizzate in SQL Server 2012
Livello di compatibilità ALTER DATABASE (Transact-SQL)
Altre risorse
Compatibilità con le versioni precedenti del Motore di database di SQL Server