Pourquoi SQL Server Management Studio génère-t-il du code entre crochets?

Lors de la génération de code / scripts,

  1. pourquoi SQL Server Management Studio génère-t-il du code entre crochets et non entre guillemets?

    SELECT [NOM] DE [TABLE]

  2. et existe-t-il un moyen (input setting / registry) de le configurer pour utiliser des guillemets (le standard) à la place?

    CHOISISSEZ "NOM" DE "TABLE"

C'est une fonctionnalité très MSFT-ty, étant donné que toute leur documentation indique maintenant les guillemets doubles (voir ceci )

pourquoi sql-server (studio de gestion) génère-t-il du code en utilisant des crochets?

SELECT [NOM] DE [TABLE]

Pour gérer les noms qui sont des mots réservés ou contenir des espaces.

Les crochets sont la manière native d'enrouler les identifiants. Ils sont asymésortingques et peuvent être inégalés, tandis que les citations sont symésortingques et doivent être appariées (ou doublées pour les inclure dans le nom):

CREATE TABLE [[test] (id INT) CREATE TABLE ["test] (id INT) DROP TABLE "[test" DROP TABLE """test" 

Votre lien explique pourquoi, au less pour moi. Les crochets ne dépendent pas du paramétrage, mais la validité de "dépend du paramètre QUOTED_IDENTIFIER.

Pour répondre à l'autre moitié de votre question, il existe une solution de contournement dans SQL Server Management Studio avec la command Remplacer tout ( Ctrl + H ):

  • Trouvez quoi: [\[\]]
  • Remplacer par: "
  • Cochez "Utiliser:" et select "Expressions régulières"
  • Appuyez sur "Remplacer tout"

Gardez à l'esprit que cela replacea également les occurrences de crochets dans votre commentaire.