SQL Server - script pour mettre à jour la base de données des colonnes de type varchar nvarchar si ce n'est déjà nvarchar
Je suis dans une situation où je dois mettre à jour une structure de base de données varchar nvarchar à l'aide d'un script. Depuis ce script est exécuté à chaque fois une configuration de l'application est exécutée, je serais plutôt de déterminer si une colonne a déjà été changé le type de données nvarchar et de ne pas effectuer un alter sur la table. Les bases de données qui je doit prendre en charge SQL Server 2000, 2005 et 2008.
Vous devez vous connecter pour publier un commentaire.
La requête suivante devrait obtenir ce dont vous avez besoin:
Vous pouvez exécuter le script suivant qui vous donnera une série de MODIFIER les commandes:
Il y a, cependant, un couple de rapide mises en garde pour vous.
NVARCHAR
ainsi.VARCHAR
> 4000, vous aurez besoin de le modifier pour êtreNVARCHAR(MAX)
Mais celles-ci doivent être facilement réalisable avec ce modèle.
Si vous le souhaitez exécuter automatiquement, vous pouvez le mettre dans un
WHILE
clause.Le problème avec Josef réponse est que cela ne changerait
NOT NULL
champs deNULL
après l'exécution de requêtes. La suite de la manipulation fixe:Fixe la question de l'espace et a ajouté schéma
Plus mis à jour pour corriger MAX remplacé par -1.
De crédit à Nezam Réponse
Et un autre pour gérer les valeurs par défaut: