OVH Cloud OVH Cloud

Supprimer IDENTITY définitivement

7 réponses
Avatar
Emmanuel
Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel

7 réponses

Avatar
Christophe
regarde du coté de alter table TaTable alter column tonChamp sonType drop
Constraint nomdelacontrainte identity ??
je me rappel plus exactement mais c'est un truc comme ça je pense !


quelqu'un peut confirmer !




"Emmanuel" a écrit dans le
message de news:
Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel




Avatar
SQLpro [MVP]
Bonjour,

Emmanuel a écrit :
Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel





Possible, mais à très haut risque sur une base en production. En effet
il n'existe aucune commande directe du genre ALTER pour ce faire. VOus
devez faire un script transactionné supprimant la clef de la table et la
reconstruisant. Celoa n'est possible qu'en passant par une étape de
table ou colonne temporaire. Pour cela vous devez préalablement
supprimer toutes les contraintes de clefs étangère reposant sur cette
clef, et les index ...

Voici par exemple un tel script pour une base ne comportant que 2 tables :

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT FK__T_A_MAINT__MPC_I__7BB05806
GO
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_D__7CA47C3F
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_U__7E8CC4B1
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__7F80E8EA
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__00750D23
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__0169315C
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__025D5595
GO
CREATE TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX
(
MIX_ID int NOT NULL,
MPC_ID int NOT NULL,
MIX_DATE_TIME datetime NULL,
MIX_OPERATION char(5) NULL,
MIX_SCHEMA_NAME sysname NOT NULL,
MIX_TABLE_NAME sysname NOT NULL,
MIX_INDEX_NAME sysname NOT NULL,
MIX_UNIQUE bit NULL,
MIX_CLUSTER bit NULL,
MIX_COL_ORDER_LIST varchar(2160) NULL,
MIX_INDEX_WITH varchar(200) NULL,
MIX_NO_ROW_LOCK bit NULL,
MIX_NO_PAGE_LOCK bit NULL,
MIX_ON_FILE sysname NULL,
MIX_COMPLETE bit NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_D__7CA47C3F DEFAULT (getdate()) FOR MIX_DATE_TIME
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_U__7E8CC4B1 DEFAULT (0) FOR MIX_UNIQUE
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__7F80E8EA DEFAULT (0) FOR MIX_CLUSTER
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__00750D23 DEFAULT (0) FOR MIX_NO_ROW_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__0169315C DEFAULT (0) FOR MIX_NO_PAGE_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__025D5595 DEFAULT (0) FOR MIX_COMPLETE
GO
IF EXISTS(SELECT * FROM dbo.T_A_MAINTENANCE_INDEX_MIX)
EXEC('INSERT INTO dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX (MIX_ID, MPC_ID,
MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME, MIX_TABLE_NAME,
MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER, MIX_COL_ORDER_LIST,
MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK, MIX_ON_FILE,
MIX_COMPLETE)
SELECT MIX_ID, MPC_ID, MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME,
MIX_TABLE_NAME, MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER,
MIX_COL_ORDER_LIST, MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK,
MIX_ON_FILE, MIX_COMPLETE FROM dbo.T_A_MAINTENANCE_INDEX_MIX (HOLDLOCK
TABLOCKX)')
GO
DROP TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
GO
EXECUTE sp_rename N'dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX',
N'T_A_MAINTENANCE_INDEX_MIX', 'OBJECT'
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
PK_MIX PRIMARY KEY CLUSTERED
(
MIX_ID
) ON [PRIMARY]

GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
CK_MIX_OPR CHECK (([MIX_OPERATION] = 'RESET' or [MIX_OPERATION] = 'DROP'))
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
FK__T_A_MAINT__MPC_I__7BB05806 FOREIGN KEY
(
MPC_ID
) REFERENCES dbo.T_A_MAINTENANCE_PROCESS_MPC
(
MPC_ID
)
GO
COMMIT

Pour le scénario d'un tel script, lire l'article que j'ai écrit :
>http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.6.1

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Christophe
ce n'est pas possible de changer simplement le identity par le alter table
alter column ???
Si il ne veux pas supprimer ca cle mais gerer sa valeur lui meme ?

j'ai jamais ete confronté a ce cas alors j'en profite pour me renseigner !




"SQLpro [MVP]" a écrit dans le message de
news:%
Bonjour,

Emmanuel a écrit :
> Bonjour à tous,
>
> Sur SQL 2000 serveur
>
> Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
> façon définitive, en TSQL.
>
> Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....
>
> Hors commande SET IDENTITY_INSERT MaTable ON
>
> Merci pour votre réponse.
>
> Emmanuel
>
>

Possible, mais à très haut risque sur une base en production. En effet
il n'existe aucune commande directe du genre ALTER pour ce faire. VOus
devez faire un script transactionné supprimant la clef de la table et la
reconstruisant. Celoa n'est possible qu'en passant par une étape de
table ou colonne temporaire. Pour cela vous devez préalablement
supprimer toutes les contraintes de clefs étangère reposant sur cette
clef, et les index ...

Voici par exemple un tel script pour une base ne comportant que 2 tables :

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT FK__T_A_MAINT__MPC_I__7BB05806
GO
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_D__7CA47C3F
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_U__7E8CC4B1
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__7F80E8EA
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__00750D23
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__0169315C
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__025D5595
GO
CREATE TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX
(
MIX_ID int NOT NULL,
MPC_ID int NOT NULL,
MIX_DATE_TIME datetime NULL,
MIX_OPERATION char(5) NULL,
MIX_SCHEMA_NAME sysname NOT NULL,
MIX_TABLE_NAME sysname NOT NULL,
MIX_INDEX_NAME sysname NOT NULL,
MIX_UNIQUE bit NULL,
MIX_CLUSTER bit NULL,
MIX_COL_ORDER_LIST varchar(2160) NULL,
MIX_INDEX_WITH varchar(200) NULL,
MIX_NO_ROW_LOCK bit NULL,
MIX_NO_PAGE_LOCK bit NULL,
MIX_ON_FILE sysname NULL,
MIX_COMPLETE bit NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_D__7CA47C3F DEFAULT (getdate()) FOR MIX_DATE_TIME
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_U__7E8CC4B1 DEFAULT (0) FOR MIX_UNIQUE
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__7F80E8EA DEFAULT (0) FOR MIX_CLUSTER
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__00750D23 DEFAULT (0) FOR MIX_NO_ROW_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__0169315C DEFAULT (0) FOR MIX_NO_PAGE_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__025D5595 DEFAULT (0) FOR MIX_COMPLETE
GO
IF EXISTS(SELECT * FROM dbo.T_A_MAINTENANCE_INDEX_MIX)
EXEC('INSERT INTO dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX (MIX_ID, MPC_ID,
MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME, MIX_TABLE_NAME,
MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER, MIX_COL_ORDER_LIST,
MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK, MIX_ON_FILE,
MIX_COMPLETE)
SELECT MIX_ID, MPC_ID, MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME,
MIX_TABLE_NAME, MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER,
MIX_COL_ORDER_LIST, MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK,
MIX_ON_FILE, MIX_COMPLETE FROM dbo.T_A_MAINTENANCE_INDEX_MIX (HOLDLOCK
TABLOCKX)')
GO
DROP TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
GO
EXECUTE sp_rename N'dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX',
N'T_A_MAINTENANCE_INDEX_MIX', 'OBJECT'
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
PK_MIX PRIMARY KEY CLUSTERED
(
MIX_ID
) ON [PRIMARY]

GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
CK_MIX_OPR CHECK (([MIX_OPERATION] = 'RESET' or [MIX_OPERATION] = 'DROP'))
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
FK__T_A_MAINT__MPC_I__7BB05806 FOREIGN KEY
(
MPC_ID
) REFERENCES dbo.T_A_MAINTENANCE_PROCESS_MPC
(
MPC_ID
)
GO
COMMIT

Pour le scénario d'un tel script, lire l'article que j'ai écrit :
>http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.6.1

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Avatar
Med Bouchenafa
Le plus simple est de regarder avec le profiler ce que fait Entreprise Manager.
Il doit probablement recreer la table....

--
Bien Cordialement
Med Bouchenafa


"Emmanuel" wrote:

Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel





Avatar
SQLpro [MVP]
Christophe a écrit :
ce n'est pas possible de changer simplement le identity par le alter table
alter column ???



NON

Si il ne veux pas supprimer ca cle mais gerer sa valeur lui meme ?



DBCC CHECKIDENT ...
SET IDENTITY_INSERT <matable> ON / OFF

accessoirement :

@@IDENTITY
SCOPE_IDENTITY()
IDENT_SEED()
IDENT_INCR()
IDENT_CURRENT()

j'ai jamais ete confronté a ce cas alors j'en profite pour me renseigner !



penser avant d'agir...
Se former avant de concevoir !

A +





"SQLpro [MVP]" a écrit dans le message de
news:%
Bonjour,

Emmanuel a écrit :
Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel




Possible, mais à très haut risque sur une base en production. En effet
il n'existe aucune commande directe du genre ALTER pour ce faire. VOus
devez faire un script transactionné supprimant la clef de la table et la
reconstruisant. Celoa n'est possible qu'en passant par une étape de
table ou colonne temporaire. Pour cela vous devez préalablement
supprimer toutes les contraintes de clefs étangère reposant sur cette
clef, et les index ...

Voici par exemple un tel script pour une base ne comportant que 2 tables :

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT FK__T_A_MAINT__MPC_I__7BB05806
GO
COMMIT
BEGIN TRANSACTION
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_D__7CA47C3F
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_U__7E8CC4B1
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__7F80E8EA
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__00750D23
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_N__0169315C
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
DROP CONSTRAINT DF__T_A_MAINT__MIX_C__025D5595
GO
CREATE TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX
(
MIX_ID int NOT NULL,
MPC_ID int NOT NULL,
MIX_DATE_TIME datetime NULL,
MIX_OPERATION char(5) NULL,
MIX_SCHEMA_NAME sysname NOT NULL,
MIX_TABLE_NAME sysname NOT NULL,
MIX_INDEX_NAME sysname NOT NULL,
MIX_UNIQUE bit NULL,
MIX_CLUSTER bit NULL,
MIX_COL_ORDER_LIST varchar(2160) NULL,
MIX_INDEX_WITH varchar(200) NULL,
MIX_NO_ROW_LOCK bit NULL,
MIX_NO_PAGE_LOCK bit NULL,
MIX_ON_FILE sysname NULL,
MIX_COMPLETE bit NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_D__7CA47C3F DEFAULT (getdate()) FOR MIX_DATE_TIME
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_U__7E8CC4B1 DEFAULT (0) FOR MIX_UNIQUE
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__7F80E8EA DEFAULT (0) FOR MIX_CLUSTER
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__00750D23 DEFAULT (0) FOR MIX_NO_ROW_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_N__0169315C DEFAULT (0) FOR MIX_NO_PAGE_LOCK
GO
ALTER TABLE dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
DF__T_A_MAINT__MIX_C__025D5595 DEFAULT (0) FOR MIX_COMPLETE
GO
IF EXISTS(SELECT * FROM dbo.T_A_MAINTENANCE_INDEX_MIX)
EXEC('INSERT INTO dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX (MIX_ID, MPC_ID,
MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME, MIX_TABLE_NAME,
MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER, MIX_COL_ORDER_LIST,
MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK, MIX_ON_FILE,
MIX_COMPLETE)
SELECT MIX_ID, MPC_ID, MIX_DATE_TIME, MIX_OPERATION, MIX_SCHEMA_NAME,
MIX_TABLE_NAME, MIX_INDEX_NAME, MIX_UNIQUE, MIX_CLUSTER,
MIX_COL_ORDER_LIST, MIX_INDEX_WITH, MIX_NO_ROW_LOCK, MIX_NO_PAGE_LOCK,
MIX_ON_FILE, MIX_COMPLETE FROM dbo.T_A_MAINTENANCE_INDEX_MIX (HOLDLOCK
TABLOCKX)')
GO
DROP TABLE dbo.T_A_MAINTENANCE_INDEX_MIX
GO
EXECUTE sp_rename N'dbo.Tmp_T_A_MAINTENANCE_INDEX_MIX',
N'T_A_MAINTENANCE_INDEX_MIX', 'OBJECT'
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX ADD CONSTRAINT
PK_MIX PRIMARY KEY CLUSTERED
(
MIX_ID
) ON [PRIMARY]

GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
CK_MIX_OPR CHECK (([MIX_OPERATION] = 'RESET' or [MIX_OPERATION] = 'DROP'))
GO
ALTER TABLE dbo.T_A_MAINTENANCE_INDEX_MIX WITH NOCHECK ADD CONSTRAINT
FK__T_A_MAINT__MPC_I__7BB05806 FOREIGN KEY
(
MPC_ID
) REFERENCES dbo.T_A_MAINTENANCE_PROCESS_MPC
(
MPC_ID
)
GO
COMMIT

Pour le scénario d'un tel script, lire l'article que j'ai écrit :
>http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.6.1

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************








--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Emmanuel
Bonjour a tous,

Effectivement, je viens de regarder avec le profiler. Très intérressant

Il contruit une table temporaire (identique à l'originale sans IDENTITY )
Il transfert les datas vers cette table temporaire
Il drop la table
Il la reconstruit....

Pourquoi faire simple quand on peux faire compliqué.....


On conclusion, on ne peut pas supprimer IDENTIY, en TSQL, de facon simple.

Merci à tous pour votre aide.

Bonne journée

Emmanuel


"Med Bouchenafa" a écrit dans le message de
news:
Le plus simple est de regarder avec le profiler ce que fait Entreprise


Manager.
Il doit probablement recreer la table....

--
Bien Cordialement
Med Bouchenafa


"Emmanuel" wrote:

> Bonjour à tous,
>
> Sur SQL 2000 serveur
>
> Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
> façon définitive, en TSQL.
>
> Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....
>
> Hors commande SET IDENTITY_INSERT MaTable ON
>
> Merci pour votre réponse.
>
> Emmanuel
>
>
>


Avatar
SQLpro [MVP]
Emmanuel a écrit :
Bonjour a tous,

Effectivement, je viens de regarder avec le profiler. Très intérressant




Plus simple aurait été de cliquer sur l'icone approprié dans EM après
avoir changé le champ compteur de oui à non et avant d'avoir appliqué le
changement. Cela donne le script SQL sans l'exécuter.


Il contruit une table temporaire (identique à l'originale sans IDENTITY )
Il transfert les datas vers cette table temporaire
Il drop la table
Il la reconstruit....

Pourquoi faire simple quand on peux faire compliqué.....



SQL est un langage basé sur le principes des SGBD relationnel et on ne
peut logiquement pas faire ce que l'on veut n'importe comment afin de
garantir l'intégrité et la cohérence des données.

Ainsi la modification directe du nom ou du type d'une colonne est
formellement interdite par la norme !

Le nom, parce qu'il peut être référencé dans des contraintes, des vues...
Le type parce qu'il sert à des contraintes d'intégrité de référence et à
la spécification de la structure des vues.

En d'autres termes il faut commencer par détruire ces objets avant de
faire la modification, ce qui en production peut s'avérer catastrophique !

A +



On conclusion, on ne peut pas supprimer IDENTIY, en TSQL, de facon simple.

Merci à tous pour votre aide.

Bonne journée

Emmanuel


"Med Bouchenafa" a écrit dans le message de
news:
Le plus simple est de regarder avec le profiler ce que fait Entreprise


Manager.
Il doit probablement recreer la table....

--
Bien Cordialement
Med Bouchenafa


"Emmanuel" wrote:

Bonjour à tous,

Sur SQL 2000 serveur

Est'il possible de supprimer IDENTITY sur une table à incrémentation, de
façon définitive, en TSQL.

Exemple: une commande ALTER TABLE maTable ALTER COLUMN .....

Hors commande SET IDENTITY_INSERT MaTable ON

Merci pour votre réponse.

Emmanuel













--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************