Symptomen
Neem het volgende scenario:
-
In een SQL Server 2000-database hebt u een kolom in een tabel die is geconfigureerd voor een specifieke standaardwaarde.
-
U deze database bijwerken naar een nieuwere versie van SQL Server (SQL Server 2005 of SQL Server 2008 of SQL Server 2008 R2).
In dit scenario ziet u dat, in de bijgewerkte versie, de standaardwaarde voor de kolom heeft een extra haakje omheen en elke toepassing die is gecodeerd om te accepteren van de oorspronkelijke standaardwaarden van SQL Server 2000 zal mislukken. In de volgende tabel ziet u hoe verschillende versies van SQL Server een standaardwaarde van 0 opslaan in de tabellen met catalogusmetagegevens:
Versie |
SQL Server 2000 |
SQL Server 2005 of hoger |
Waarde |
0 |
((0)) |
Opmerking: dit probleem is alleen van invloed op numerieke waarden. Tekst en functies worden opgeslagen in dezelfde indeling in zowel SQL Server 2000 als de nieuwere versies. Tekst wordt bijvoorbeeld opgeslagen als ('tekst '), functie () wordt opgeslagen als (functie ()).
Oorzaak
Dit gedrag is per ontwerp. De nieuwere versies van SQL Server verschillen van SQL Server 2000 op de manieren waarop ze decoderen en opslaan van SQL-expressies in de metagegevens van de catalogus. Raadpleeg voor meer informatie de verschillende koppelingen die worden vermeld in de sectie meer informatie van dit artikel.
Oplossing
Wijzig uw toepassingen zodat ze de standaardwaarden in de nieuwe indeling accepteren. Als uw toepassing bijvoorbeeld is ontworpen om de standaardwaarde "(0)" te verwachten, die een enkele set haakjes rond een numerieke waarde heeft, wijzigt u uw toepassing om twee haakjes "((0))" te verwachten, zodat deze blijft werken met SQL Server 2005 en hoger versies van de database.
Meer informatie
De standaardwaarden voor een kolom weergeven: U een van de volgende twee methoden gebruiken om de momenteel geconfigureerde standaardwaarden voor een kolom weer te geven:methode 1: SQL Server Management Studio gebruiken:
-
Klik in object Verkenner met de rechtermuisknop op de tabel met de kolommen waarvoor u de standaardwaarden wilt controleren en klik op ontwerp om de tabel in de ontwerpfunctie voor tabellen te openen.
-
Selecteer de kolom waarvoor u de standaardwaarde wilt controleren.
-
In het tabblad Kolomeigenschappen vindt u de standaardwaarde in de standaardwaarde of binding eigenschap zoals weergegeven in de onderstaande afbeeldingen:

Methode 2: gebruik een van de volgende systeemweergaven:
-
sys. default_constraints : gebruik de kolomdefinitie om de vereiste informatie op te halen.
-
sys. syscomments -gebruik de tekstkolom in deze weergave om de benodigde informatie te verkrijgen. Opmerking: deze systeemtabel van SQL Server 2000 is opgenomen als een weergave voor achterwaartse compatibiliteit. Het is raadzaam dat u de huidige SQL Server-systeemweergaven in plaats daarvan gebruiken. Als u wilt zoeken naar de equivalente systeemweergave of weergaven, zie de koppelingen onder Aanvullende verwijzingen hieronder.
Aanvullende verwijzingen:
-
Procedure: standaardwaarden voor kolommen opgeven (Visual database tools)
-
Toewijzing van SQL Server 2000-systeemtabellen aan SQL Server 2005 systeemweergaven
-
Systeemtabellen toewijzen aan systeemweergaven (Transact-SQL) SQL Server 2008
-
Systeemtabellen toewijzen aan systeemweergaven (Transact-SQL)
-
Gedrag wijzigingen in de database-engine-functies in SQL Server 2005
-
Gedrag wijzigingen in de database-engine-functies in SQL Server 2008
-
Gedrag wijzigingen in de database-engine-functies in SQL Server 2008 R2