PDA

View Full Version : مشکل در Filtered Index میشه کمک کنید؟



mom alone
جمعه 04 اردیبهشت 1388, 21:35 عصر
سلام من می خام سطر های جدول به ازای ستون های کدشخص و تاریخ و فیلد نشانه مجاز به تکرار شدن نباشند
مگر وقتی که فیلد flag برابر 5 باشه اما وقتی این کد رو اجرا می کنم دیگه اجازه ورود داده به جدول به من نمیده
به هیچ صورت
منظور من اینه که اگر فیلد flag براب 5 بود اجازه تکرار داشته باشیم ممنون میشم


create unique index notekrar_adibefaal on adibefaal(kodperso,tarikhdarkhast,flag) where adibefaal.flag <> 5 ;

mom alone
شنبه 05 اردیبهشت 1388, 17:56 عصر
کامک
کامک
کامک
کامک

AminSobati
شنبه 05 اردیبهشت 1388, 22:42 عصر
سلام،
شرطتون به نظر درست میاد. مطمئن هستید در ورود اطلاعات اشتباهی رخ نمیده؟
روی یک جدول خالی تست کنین

mom alone
شنبه 05 اردیبهشت 1388, 23:12 عصر
سلام یه چیز عجیب

من یه کدی برای یه Filtered Index نوشته بودم و در چند جا استفاده می کردم
اما رو بعضی جداول وقتب اعمال میشه دیگه اجازه ورود و تغییر داده رو به هیچ وجه نمیده
و ایج خطا رومیده
http://tinypic.com/view.php?pic=2ey9nc0&s=5

http://i42.tinypic.com/2ey9nc0.jpg

فکر می کنم مربوط به خاصیت آلو نال هستش

در ضمن کد اول هم به گفته شما درسته و وقتی دقت کردم برای اون هم همین خطایی که گفتم میده و اجازه هیچ نوع تغییری در داده رو نمیده و خطا میده


البته وقتی دستور اینسرت رو درون اسکریپت اجرا کنم درست جواب می ده
اما با درون برنامه و یا وقتی با edit 200 row ورود داده ی کنم این خطا رو میده میشه کمک کنید؟؟؟؟

mom alone
شنبه 05 اردیبهشت 1388, 23:59 عصر
مشکل حدودا پیدا شد اما راه حل مشکل پیدا نشده
من این ایندکس رو روی جدولم تعری ف کردم


USE [aloneabouzar]
GO

/****** Object: Index [notekrar_k222odjjj] Script Date: 04/26/2009 00:11:08 ******/
CREATE UNIQUE NONCLUSTERED INDEX [notek2111rar_k2j] ON [dbo].[adibefaal]
(
[kodperso] ASC,
[tarikhdarkhast] ASC,
[flag] ASC
)
WHERE ([flag]<>(5))
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


اما دیگه اجازه هیچ تغییری از درون برنامه ام روی داده رو نمیده از درون edit 200 row هم همینجور اجازه تغییر نمیده و این خطا رو میزنه



INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.


اما اگه با اسکریپت درون sql منجمنت درون جدول داده وارد کنم هم داده وارد میشه و هم ایندکس عمل میکنه!!!!
یعنی با این اسکریپت


INSERT INTO [aloneabouzar].[dbo].[adibefaal]
([kodperso]
,[tarikhdarkhast]
,[tarikhersalbehoze]
,[tarikhfaalshoad]
,[tozihat]
,[flag]
,[userr]
,[date])
VALUES
('68/56/803-10011'
,'11'
,'55'
,'111'
,'222'
,0
,'kk'
,'kkk')
GO


چه جدولم خالی باشه چه اطلاعات از قبل از تولید ایندکس وجود داشته باشه

من یه جدول جدید ساختم و فیلتر ایندکس رو ایجاد کردم و جواب داد اما وقتی یه سری داده وارد کردم و خاصیت آلو نال و تغییر دادم باز خطای بالایی رو داد و اجازه هیچ تغییری از برنامه و یا edit top 200 row رو نداد اما با اسکریپت درون منجمنت هم داده وارد میشه و هم ایندکس کار می کنه!!!!!!!!!!!!!!!!!

میشه بگید مشکل از کجاست؟
خواهش می کنم

mom alone
یک شنبه 06 اردیبهشت 1388, 21:12 عصر
از این که به مطالب این تاپیک دقت دارید ممنونم

یه چیز رو براتون یادآوار شوم که از طریق اسکریپت داده وارد می شود و ایندکس عمل می کند

اما از طریقه برنامه .و یا edit 200 tpo row خطا میده
به نظرم این خطا اصلا مربوط به داده نمی شود و یه بلایی سر جدول میاد

خیلی برام مهمه

میشه لطف کنید؟؟؟؟؟؟؟

سباتی جان کجایی دوست خوبم

AminSobati
یک شنبه 06 اردیبهشت 1388, 23:27 عصر
قبل از دستور CREATE INDEX این دستور رو اجرا کنین:

SET ARITHABORT ON

mom alone
دوشنبه 07 اردیبهشت 1388, 12:32 عصر
این کار رو کردم اما مشکل همچنان باقی است

یه نکته (روی جدول خالی امتحان کردم کار کرد اما تا یه تغییر درون جدول دادم دیگه کار نکرد!!!!!!)


USE [aloneabouzar]
GO
SET ARITHABORT ON

/****** Object: Index [notekrar_kodmeli] Script Date: 04/27/2009 12:58:43 ******/
CREATE UNIQUE NONCLUSTERED INDEX [notekrar_kodmeli] ON [dbo].[adibefaal]
(
[kodperso] ASC,
[tarikhdarkhast] ASC,
[flag] ASC
)
WHERE ([flag] IS NOT NULL AND [flag]<>(5))
GO

وقتی تو یه دیتابیس دیگه امتحان کردم جواب داد حتی بعد از تغیر کار کرد (البته با اجرای دستور شما)

چرا تو دیتا بیس خودم مشکل همچنان باقی است؟