PDA

View Full Version : کمک - اشکال این اسکریپت کجاست؟



arman_Delta2002
جمعه 26 خرداد 1391, 18:36 عصر
سلام من این اسکریپت رو ساحتم به این صورت که اگه تیبل نبود تیبل رو دست کنه با فیلد هاش
اگه تیبل بود فیلداشو چک کنه که اگه فیلد فلان نبود اونو ایجاد کنه اگه بود اونو ویرایش کنه ولی 4 تا خطا داخلش هست ولی نمیدونم کجای این کد مشکل داره


USE [CDBase_Temp1]
Go
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[D_Acc_Naghdinegi]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[D_Acc_Naghdinegi](
[ID] [bigint] NOT NULLIDENTITY (1, 1) PRIMARY KEY,
[L_D_Acc_DaftarMali] [bigint] NULL ,
[Name1] [nvarchar](255) NULL ,
[Bedehkar] [nvarchar](255) NULL ,
[Bestankar] [nvarchar](255) NULL ,
[Roz1] [nvarchar](255) NULL ,
[Mah1] [nvarchar](255) NULL ,
[Sal1] [nvarchar](255) NULL ,
[Tozihat] [nvarchar](255) NULL ,
[DateAdd] [nvarchar](25) NULL ,
[Select1] [bit] NULL );
END
Else
BEGIN
if Exists(select * from sys.columns where Name = N'ID' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [ID] [bigint] NOT NULLIDENTITY (1, 1) PRIMARY KEY;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [ID] [bigint] NOT NULLIDENTITY (1, 1) PRIMARY KEY;
END
if Exists(select * from sys.columns where Name = N'L_D_Acc_DaftarMali' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [L_D_Acc_DaftarMali] [bigint] NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [L_D_Acc_DaftarMali] [bigint] NULL ;
END
if Exists(select * from sys.columns where Name = N'Name1' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Name1] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Name1] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Bedehkar' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Bedehkar] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Bedehkar] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Bestankar' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Bestankar] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Bestankar] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Roz1' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Roz1] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Roz1] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Mah1' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Mah1] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Mah1] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Sal1' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Sal1] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Sal1] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'Tozihat' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Tozihat] [nvarchar](255) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Tozihat] [nvarchar](255) NULL ;
END
if Exists(select * from sys.columns where Name = N'DateAdd' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [DateAdd] [nvarchar](25) NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [DateAdd] [nvarchar](25) NULL ;
END
if Exists(select * from sys.columns where Name = N'Select1' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [Select1] [bit] NULL ;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [Select1] [bit] NULL ;
END
END



اینجا رو حطا میده


if Exists(select * from sys.columns where Name = N'ID' and Object_ID = Object_ID(N'D_Acc_Naghdinegi'))
BEGIN
alter table D_Acc_Naghdinegi ALTER COLUMN [ID] [bigint] NOT NULL IDENTITY (1, 1) PRIMARY KEY;
END
Else
BEGIN
alter table D_Acc_Naghdinegi ADD [ID] [bigint] NOT NULL IDENTITY (1, 1) PRIMARY KEY;
END

baktash.n81@gmail.com
شنبه 27 خرداد 1391, 11:58 صبح
خوب دوست عزیز شما نمی تونی اینکارو یعنی Identity کردن یه ستون رو به این راحتی انجام بدی ... بهترین کار اینه که بری از تو SSMS تغییرات رو به صورت Visual انجام بدی یعنی رو Table راست کلیک کنی Design بعد هم تغییرات رو اعمال کنی قبل از اینکه کلید Save رو بزنی کلید Generate Change Script رو بزنی ... تا اسکریپت تغییراتو بهت بده بعد اونو بزار توی ّلوک مربوط به تغییراتت

حمیدرضاصادقیان
شنبه 27 خرداد 1391, 15:17 عصر
سلام.
وقتی یک فیلدی وجود داره نمیتونید به Identity تبدیلش کنید. برای اینکار دو راه وجود داره.
1- ایجاد یک جدول جدید با ستون identity و منتقل کردن اطلاعات از جدول قدیم به جدید و حذف جدول قدیم.
2- ایجاد یک ستون indentity و یکسان کردن اطلاعات با مقدار قبلی و حذف فیلد قبلی.