بهینه سازی دستوراتSP در SQL Server

۱- در SP از Set NoCount On استفاده کنید.
البته می توانید در آخرین دستور مجدد پارامتر NoCount را خاموش کنید.

۲- برای فراخوانی و اشاره به اشیا، حتما نام Schema را بکار ببرید.

۳- برای آگاهی از تعداد رکوردها، بجای استفاده از دستور Select Count( * ) از دستوری همانند Select Count(1) کنید.

۴- برای آگاهی از موجود بودن اطلاعات در جداول، از شمارش رکوردها خودداری کنید و از دستور If Exists(Select 1 From Tbl) استفاده کنید

۵- برای اجرای دستورات به جای استفاده از دستور Execute از دستور sp_executesql استفاده کنید.

۶- تا جایی که امکان دارد از cursor استفاده نکنید.

۷- تلاش کنید تا تراکنش ها طولانی نشوند.

۸- برای مدیریت خطا، از Try-Catch استفاده کنید

برچسب ها: SQL Server

Could not open a connection to SQL Server

۱- سرویس های SQL Server را بررسی کنید که آیا در وضعیت Running هستند؟
۲- با دستور sqlcmd -L بررسی کنید که چه SQLهایی در شبکه موجود است و آیا شما قصد دارید به کامپیوتر درستی وصل بشوید؟
۳- اگر با موارد ۱ و ۲ مشکل برطرف نشد بررسی کنید که TCP/IP در SQL Server Configuration Manager فعال باشد.
۴- پورت ۱۴۳۳ را در لیست Exceptions فایروال ویندوز اضافه کنید.
۵- Remote Connection را فعال کنید
۶- سرویس Browser برای SQL Server را نیز فعال کنید
۷- فایل sqlbrowser.exe را نیز به لیست Exceptions فایروال اضافه کنید.

برچسب ها: SQL Server

جستجوی عبارت حاوی underline

برای جستجوی رکوردهایی که در فیلدی کاراکتر underline دارند، کاراکتر underline را بین [] محصور کنید

برچسب ها: SQL Server

MsiGetProductInfo failed to retrieve ProductVersion for package during install

اگر در زمان نصب SQL Server بر روی دستگاهی که در گذشته نیز نسخه ای از SQL نصب بوده خطای زیر نمایش داده شود:

MsiGetProductInfo failed to retrieve ProductVersion for package during install

در رجیستری در مسیر های زیر به دنبال کلیدی که در خطا نیز نمایش داده شده است بگردید و آن را حذف کنید. همچنین مقدار معکوس کلید اعلام شده را نیز جستجو و حذف کنید.

LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UpgradeCode\
LOCAL_MACHINE\Software\Classes\Installer\UpgradeCode\

برچسب ها: SQL Server

Round

گرد کردن به نزدیک ترین عدد صحیح:

floatValue = int (floatValue+ 0.5);
  Let floatValue = 6.38
  6.38 + 0.5 = 6.88
  int(6.88) = 6
  floatValue is now 6.0

گرد کردن به نزدیکترین عدد دهم اعشار:

A. floatValue = float(int(floatValue * 10 + 0.5)) / 10;
  Let floatValue = 8.673
  floatValue*10 = 86.73
  86.73 + 0.5 = 87.23
  int(87.23) = 87
  float (87) = 87.0
  87.0 / 10 = 8.7
  floatValue is now 8.7

B. floatValue = floor(floatValue*10+0.5)/10;
  Let floatValue = 8.673
  floatValue*10+0.5 = 87.23
  floor(87.23) = 87.0
  87.0 / 10 = 8.7
  floatValue is now 8.7

برچسب ها: ASP.NET٬ C/C++/C Sharp٬ SQL Server٬ برنامه نويسي٬ دلفي

پر کردن جدول موقت با پرس و جوی دینامیک

امروز داشتم روی پروژه ای کار میکردم که نیاز بود، پرس و جوی دینامیکی داشته باشم و سپس نتیجه پرس و جو را نیز مجدد مورد ارزیابی های مختلف قرار بدم. برای همین با استفاده از کدی مشابه زیر، نتیجه پرس و جوی دینامیک رو در یک جدول موقت ریختم و مجدد پرس و جوهای مختلف را بر روی آن انجام دادم

DECLARE @where VARCHAR(1000)
DECLARE @sql VARCHAR(1000)
CREATE TABLE #temp (Field1 VARCHAR(100), Field2 INT, Field3 BIT)
SET @sql = ‘INSERT INTO #temp (Field1, Field2, Field3) Select FieldA, FieldB, FieldC FROM Tbl WHERE (1=1)’ + @where
EXEC SP_EXECUTESQL @sql
SELECT @Var1=Count( * ) FROM #temp WHERE ….
SELECT @Var2=Count( * ) FROM #temp WHERE ….
SELECT @Var3=Count( * ) FROM #temp WHERE ….

برچسب ها: SQL Server٬ برنامه نويسي

ERROR 5120 در ویندوز ۷ یا ویستا

هنگام Attach کردن فایل های دیتابیس از یک سیستم به سیستم جدید(یا پس از تغییر سیستم عامل) ممکن است با خطای ۵۱۲۰ مواجه شده باشید.
معمولا این خطا در ویندوز ۷ یا ویستا زیاد دیده می شود. این خطا به دلیل تنظیمات دسترسی به فایل می باشد که راهکارهای مختلفی نیز پیشنهاد شده است اما ساده ترین راه حل، اجرای SQL Server با گزینه Run as administrator می باشد.

برچسب ها: SQL Server

ایجاد الگو (schema)

CREATE SCHEMA [نام]

برچسب ها: SQL Server٬ برنامه نويسي

Import اطلاعات فارسی

فرض کنید بخواهید فایل حاوی اطلاعات فارسی که با کاراکتر Comma جدا شده است را به SQL Server یا MySQL وارد کنید. اگر فیلدی داشته باشید که حاوی ویرگول (،) باشد در زمان Import خطایی رخ می دهد.
این خطا ناشی از آن است که در زمان Import کاراکتر ویرگول و Comma یکسان در نظر گرفته می شود و به همین دلیل فیلدی که حاوی ویرگول است، مجدد در محل ویرگول Split می شود.
ظاهرا راهی وجود ندارد جز اینکه جدا کننده خود را تغییر بدهید. یعنی Comma را با $ جایگزین کنید….

برچسب ها: SQL Server٬ برنامه نويسي

دسته بندی موجودیت های پایگاه داده در SQL Server

SQL Server نمی تواند آبجکت هایش را دسته بندی کند. یعنی اگر دیتابیسی داشته باشید که ۱۰۰۰ جدول داشته باشد، همه این جدول ها در Table فهرست می شود که مدیریت آن پیچیده خواهد شد و صرفا شما می توانید با استفاده از آیکون Filter، آبجکت ها را فیلتر کنید.

برچسب ها: SQL Server