PDA

View Full Version : سوال:1محدودیت طول پسورد و مشکل انکریپت ---2-جدول موقت



desatir7316
پنج شنبه 08 تیر 1391, 18:41 عصر
سلام دوستان
دوتا سوال داشتم:

1- توی پایگاه داده ای که دارم یه محدودیت هست که نمی ذاره کاربر پسورد های با طول کمتر از 8 و بیشتر از 12 تا وارد کنه
تا الان مشکلی نبود
ولی از وقتی که پسورد هامو با تابع encryptbypassphrasse رمزنگاری کردم به مشکل بر خوردم
این تابع طول داده ها رو افزایش میده و اون محدودیت چلوی insert رو میگیره
چیکار میتونم بکنم که کاربر داده هایی تو اون محدوده وارد کنه؟
به نظر شما اگه توی اون storeprocdure ی که داده ها رو insert میکنم یه شرط با if بذارم که اندازه داده رو قبل از insert و رمزنگاره کم کنه مشکلی پیش نمیاد؟
مثلا باعث بشه که storeprocedure مربوطه دیکه کامپایل نشه و همین باعث افت سرعتش بشه؟
سرعت و امنیت برام مهمه

2- توی یکی از رویه هام به یهسری اطلاعات احتیاج دارم که شرط همشون مثلا براری با فیلد IDهست و لی هرکدوم از این اطلاعات یه جای متفاوت استفاده می شن
بهتربن راه برای اینکه سرعتم بالا بره چیه؟ الان اومدم به جدول موقت مثل #temp درست کردم که اطلاعات رو توی اون ریختم
آخر رویه هم این جدول موقت رو خذف کردم
به نظر شما کار درستیه؟ بهترین راه چیه؟

ممنون میشم راهنمایی کنید

Reza_Yarahmadi
پنج شنبه 08 تیر 1391, 19:54 عصر
1- شرط گذاشتن توی SP مشکلی درست نمیکنه. قبل از عمل Insert اگه طول پسورد توی رنج تعیین شده نبود میتونید با استفاده از RAISERROR یک آلرت تولید کنید.
2- بستگی به ساختار جداولتون داره ، با توجه به ساختار و داده های مورد نیازتون باید دستور بهینه رو نوشت. ولی بصورت کلی استفاده از دستور UNION ALL بین چند Select بهتر از ریختن توی جدول کمکیه.
Select * From Tbl_1
UNION ALL
Select * From Tbl_2
UNION ALL
Select * From Tbl_3

desatir7316
پنج شنبه 08 تیر 1391, 21:20 عصر
1-
2- بستگی به ساختار جداولتون داره ، با توجه به ساختار و داده های مورد نیازتون باید دستور بهینه رو نوشت. ولی بصورت کلی استفاده از دستور UNION ALL بین چند Select بهتر از ریختن توی جدول کمکیه.
Select * From Tbl_1
UNION ALL
Select * From Tbl_2
UNION ALL
Select * From Tbl_3

ممنون
درمورد سوال دوم منظورم چند جدول نبود، منظورم چند بار select از یه جدول خاص بود مثلا یه بار به فیلد a از جدول myTable احتیاج دارم و چند خط پایین تر توی همون sp به فیلد b از جدول myTable احتیاج دارم به همین خاطر در ابتدای sp مورد نظر اومدم a, b رو توی یه جدول موقت ریختم تا فقط همون جا عمل select رو انجام بدم. حالا به نظر شما راه حل بهتری هم هست؟
ممنون

Reza_Yarahmadi
پنج شنبه 08 تیر 1391, 23:31 عصر
برای ذخیره 2 مقدار چرا از متغیرها استفاده نمیکنید؟ (در صورتیکه دلیل خاصی دارید مشکلتون رو مطرح کنید تا درصورت امکان روش بهتری واسش پیدا کنیم)

desatir7316
جمعه 09 تیر 1391, 00:05 صبح
برای ذخیره 2 مقدار چرا از متغیرها استفاده نمیکنید؟
آخه اینجوری مجبورم برای هر کدم از متغیر ها یه سلکت با شرط بنویسم
منم تلاشم اینه که تعداد شرط هارو بیارم پایین تا سرعتم بره بالاتر مگر اینکه بشه برای مقدار دهی چندتا متغیر از یک دستور سلکت و شرطش استفاده کرد که اگه همچین کاری می شه کرد ممنون میشم سینتکسشو بهم بگید.
راستی استفاده از متغیرها سرعتش از جدول موقت بالاتره؟


بر(در صورتیکه دلیل خاصی دارید مشکلتون رو مطرح کنید تا درصورت امکان روش بهتری واسش پیدا کنیم)
نه مشکل خاصی نیست، ممنون از محبتت
فقط دارم یه دیتابیس طراحی می کنم که سرعت و امنیتش برام خیلی مهمه
بازم ممنون رضا جان

Reza_Yarahmadi
جمعه 09 تیر 1391, 14:10 عصر
منم تلاشم اینه که تعداد شرط هارو بیارم پایین تا سرعتم بره بالاتر مگر اینکه بشه برای مقدار دهی چندتا متغیر از یک دستور سلکت و شرطش استفاده کرد که اگه همچین کاری می شه کرد ممنون میشم سینتکسشو بهم بگید.
Declare @A int, @B nvarchar(max)
Select @A = ID, @B = FirstName From Tbl_1 Where [YourCondition]

راستی استفاده از متغیرها سرعتش از جدول موقت بالاتره؟
برای اینطور مسائل متغیر بهتره.

desatir7316
جمعه 09 تیر 1391, 17:52 عصر
برای اینطور مسائل متغیر بهتره.

ممنون حاج رضا، شرمنده که سوالام خیلی زیاد شد،
به نظر شما اگه بخوام به تعداد فیلد های جدولم متغیر تعریف کنم بازم استفاده از متغیر بهتره؟ چه جاهای استفاده از جدول موقت توصیه میشه؟
راستی وقتی بعد از اتمام کار بخوایم یه متغیر رو از حافظه پاک کنیم باید چیکار کرد؟ اصلا این کار به لازمه؟
ممنون

Reza_Yarahmadi
جمعه 09 تیر 1391, 19:29 عصر
به نظر شما اگه بخوام به تعداد فیلد های جدولم متغیر تعریف کنم بازم استفاده از متغیر بهتره؟ چه جاهای استفاده از جدول موقت توصیه میشه؟
به ندرت پیش میاد که مجبور به استفاده از جدولهای موقت بشیم. بصورت کلی مواقعی که ناچار گرفتن خروجی های زیاد با شرایط خاص (مثل گرفت خروجی با استفاده از کرسر) از جداول موقت استفاده میشه. حتی متغیر جدول هم توصیه نمیشه.

راستی وقتی بعد از اتمام کار بخوایم یه متغیر رو از حافظه پاک کنیم باید چیکار کرد؟ اصلا این کار به لازمه؟
خود SQL Server این موضوع رو مدیریت میکنه.

desatir7316
جمعه 09 تیر 1391, 21:56 عصر
رضا جان ممنون داداش
توی زمینه رمزنگاری اطلاعات هم میتونی راهنمایی کنی؟
البته قبلا تشکر میکنم
اگه تونستی توی این تاپیک کمکی بهم کن داداشی : سوال: کدام یک از روش های رمز نگاری بهتر است؟ (http://barnamenevis.org/showthread.php?348520-%D8%B3%D9%88%D8%A7%D9%84-%DA%A9%D8%AF%D8%A7%D9%85-%DB%8C%DA%A9-%D8%A7%D8%B2-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%B1%D9%85%D8%B2-%D9%86%DA%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA%D8%9F)
دمت گرم