2017-09-21 2 views
0

Je comprends ce que font ces paramètres et pourquoi ils sont importants. Cependant, j'ai quelques questions:Est-il nécessaire d'exécuter SET ANSI_NULLS ON et SET QUOTED_IDENTIFIERS à chaque fois que je fais un CREATE/ALTER?

Si je lance cette fois devant un CREATE/ALTER:

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

Est-il nécessaire de l'exécuter à nouveau la prochaine fois que je fais une autre création/ALTÉRER?

Fondamentalement, ces commandes SET apportent-elles des changements qui persistent entre les lots/connexions?

Répondre

1

Les options SET spécifiées lors de la création d'un objet (table ou autre) sont liées à cet objet à perpétuité et ces paramètres sont importants. Par exemple, pour ajouter un index filtré à une table, il doit avoir été créé avec toute une série d'options SET correctement spécifiées. Vous pouvez voir toutes ces options en regardant sys.sql_modules. Cependant, une fois que l'objet a été créé, ces options ne peuvent pas être modifiées (ou au moins par aucun moyen que je connaisse), donc l'ajout d'options SET à un script ALTER TABLE s'appliquerait à tout SQL que vous deviez exécuter (comme habituel) mais ne mettrait pas à jour les options SET associées à cette table.

+0

Cela semble être la bonne réponse. Toutes les références que vous pouvez pointer pour vérifier cela est-elle correcte? –

+0

J'ai surtout fait des tests sur ma machine (au travail, je n'ai pas le script pour le moment). J'ai créé une table avec des paramètres que je savais ne pas travailler pour un index filtré, puis essayé de construire un .Surprise, il a échoué. Ensuite, j'ai obtenu les bons paramètres, et recréé la table. Surprise, ça a marché. Ensuite, j'ai couru une déclaration alter avec de mauvais paramètres et il n'y avait aucun effet sur l'index filtré .. Je vais voir si je peux trouver quelques-uns des messages réels et autres joyeusetés que j'ai utilisé aussi bien. – Xedni

+0

Oui, je ne trouve pas d'article sur le sujet, mais la plupart des articles que j'ai lus disent qu'il n'y a aucun moyen de modifier les options 'SET' sur une table une fois qu'elle a été créée. J'ai été capable de tester pour s'assurer qu'ils ne sont pas réinitialisés pendant, disons, une alter en regardant 'sys.modules' et j'ai pu voir que la documentation sur' alter table' ne fait pas surface pour les modifier . Tout ça pour dire non, tu n'as pas à les mettre à chaque fois. Mais rappelez-vous, si vous démarrez un nouveau script et que vous voulez ou non, par exemple, que les identifiants soient utilisables, vous DEVEZ quand même le paramétrer. – Xedni