SQL Server création de la table avec un index cluster sans clé primaire
Est-il possible de créer un index cluster à partir d'une instruction create table dans SQL Server 2008 qui n'est pas une clé primaire?
Le but de la présente est pour une table dans SQL Azure, de sorte qu'il n'est pas une option pour moi d'abord de créer la table, puis de créer l'index cluster sur la table.
Edit: Apparemment, il a été FluentMigrator qui a été la cause de mes problèmes, c'est la version de la table n'ont pas d'index cluster de sorte qu'il était erroring en essayant de créer la gestion des versions de table pas ma table.
Je suis sûr que vous pouvez revenir et de créer l'index cluster plus tard, même dans Azure. Azure ne vais pas vous empêcher de créer une table sans index cluster, il suffit de vous empêcher de vous insérer en elle.
WTF. OK, ça c'est nouveau 🙂
vous avez raison, voir mon edit au dessus si vous ne l'avez pas déjà fait.
Voir dba.stackexchange.com/questions/6937/..., d'une certaine façon liés
Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.
pas l'insertion de données existe.WTF. OK, ça c'est nouveau 🙂
vous avez raison, voir mon edit au dessus si vous ne l'avez pas déjà fait.
Voir dba.stackexchange.com/questions/6937/..., d'une certaine façon liés
OriginalL'auteur Chris Marisic | 2011-11-30
Vous devez vous connecter pour publier un commentaire.
Oui, il est possible de créer un index cluster qui n'est pas la clé primaire. Il suffit d'utiliser un
CRÉER un INDEX CLUSTER
déclaration.Avant la version Azure SQL Base de données v12, vous avez dû avoir un index cluster avant de pouvoir insérer toutes les données d'une table. Comme de Azure SQL Base de données v12, des tas (tables, sans un index cluster) sont désormais pris en charge.
Si votre base de données a été créée avant le mois de juin 2016, voici les instructions pour la mise à niveau vers la version 12.
Merci.
Rappelez-vous, une contrainte cluster/index n'est exigée que dans AZURE SQL. Installé SQL n'ont pas cette exigence. Je me rends compte que le lecteur a mentionné que c'était pour Azure, mais cette réponse genre de fait sonner comme il s'applique à toutes les versions de SQL.
Vous pouvez utiliser cet outil: sqlazuremw.codeplex.com
OriginalL'auteur Rob Boek
remarque l'indication de non-cluster sur la clé primaire
Ce sera encore du travail.
J'ai juste laissé là, mais que la clé primaire n'est pas nécessaire. Je suppose que vous avez déjà eu une clé primaire bien donc pour le forcer à être non-cluster.
L'index cluster est en fait un pas unique colonne (donc pourquoi il n'est pas simplement un PK). J'ai essayé en enlevant le mot-clé unique à partir de la 2ème exemple et sql server n'a pas l'air d'aimer cela.
Le problème est le
CONSTRAINT
nécessitePRIMARY KEY
ouUNIQUE
lors de la création d'unCLUSTERED
colonne...pas sûr de contourner autre que d'utiliser une déclaration séparée. msdn.microsoft.com/en-us/library/ms174979.aspxOriginalL'auteur Buildstarted
Le code ci-dessous est compatible avec Azure. Il crée une clé primaire non-cluster et un index cluster en une seule instruction create table. Cette syntaxe permet également de spécifier plus d'une colonne dans votre clé.
Pour changer de tables d'index cluster, le clusteredd index doit être abandonnée, ce qui convertit la table dans un tas et puis le nouvel index cluster est appliquée. Parce que Azure ne prend pas en charge les tas (les tables sans les index en cluster) il n'est pas possible de modifier l'index cluster sans la suppression de la table et de le recréer. Dans Azure, vous ne pouvez pas spécifier un index cluster en tout autre lieu autre que celui de l'instruction create table.
OriginalL'auteur David Sopko