Sql server 2005 - comment ajouter la propriété identity sur une colonne existante
Bonjour,
j'ai une table d'un certain volume récupérée de sql 2000 vers sql 2005 via
un package SSIS. Malgré l'option conserver 'identité' positionnée, la
propriété "identity" a disparu sous sql 2005.
1) je tente de la remettre via SSMS en modifiant la table, mais j'ai une
erreur
- Impossible de modifier la table.
Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin
de l'opération ou le serveur ne répond pas.
2)J'essaie de remettre le propriété : alter table adgstat.grd_hcot_cote
alter column no_id
add constraint identity(1,1) --> syntaxe oncorrecte vers le mot clé
'Constraint'
alter table adgstat.grd_hcot_cote alter column no_id
add identity(1,1)
--> syntaxe oncorrecte vers le mot
Existe-il une solution pour ajouter cette propriété sans avoir à repasser
par une autre table ?
Merci
probleme expiration du delai d'attente
Salut à tous.
je ne sais pas si je suis sur le bon topic ou non, mais j'espère que quelqu'un pourra m'aider dans mon problème.
J’ai un gros soucis dans une application sous c# que je développe.
Le soucis que j’ai c’est que je fais un DELETE sur plusieurs à partir d’une date que je saisie. Le truc c’est que les tables dont je dois supprimer les données ne se trouvent pas toutes dans la même base et le nombre de ligne à supprimer est assez important (en moyenne 650 000 lignes par tables).
Lorsque je fais mon DELETE, j’ai un soucis lorsqu’il arrive sur une table (toujours la même) d’expiration du délai d’attente. Pourtant dans ma chaine de connexion j’ai mis le « Connection Timeout » au max soit 2147483647ms , j’ai également modifié sur le serveur SQL (local) les temps de connexion je l’ai mis soit à zero soit au max (jai test avec les deux).
Code:
1 2
|
SqlConnection conect = new SqlConnection("Initial Catalog=" + BaseName + ";Data Source=" + serverName + ";User ID=" + login + ";pwd=" + pwd + ";Connection Timeout = 2147483647"); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
string req2 = "delete " + tableLongTerme + " where RefMesure = " + id + " and DateHeure >= '" + DateSelect + "'";
cnxReqDel.Open();
Console.WriteLine(cnxReqDel.ConnectionTimeout.ToString());
Console.WriteLine("execution du thread" + myThreadSuppLT.Name);
SqlCommand cmd2 = new SqlCommand(req2, cnxReqDel);
try
{
cmd2.ExecuteNonQuery();
}
catch (Exception esql)
{
MessageBox.Show(esql.ToString());
throw;
}
cnxReqDel.Close();
cnxReqDel.Dispose(); |
J’ai essayer de créer une procédure stockées, mais ça ne marche pas. Car il ne doit pas accepter le nom de table comme paramètre.
CREATE PROCEDURE [dbo].[pDeleteLongTerme]
(
@Type nvarchar(15) = null,
@Table nvarchar(10) = null,
@date nvarchar(30) = null,
@id int = null
)
AS
BEGIN
IF (@Type = Mesures)
BEGIN
DELETE @Table WHERE RefMeure = @id and DateHeure >= @date;
END
END
GO
Pour schématiser un peu, la valeur de la variable (tablelongterme) prend les valeurs suivante :
tMesuresHisto2_2007_12 qui se trouve dans la base ServerIT_2007
tMesuresHisto2_2008_01 qui se trouve dans la base ServerIT_2008
tMesuresHisto2_2008_02
tMesuresHisto2_2008_03
tMesuresHisto2_2008_04
Le DELETE marche jusqu’à la table tMesuresHisto_2008_03 et plante pour la suivante, ors il en reste encore deux à supprimer.
Merci d’avance