TGViewer
Channel Public Channel
کانال تخصصی SQLSERVER

کانال تخصصی SQLSERVER

@sqlserver_professional

لینک کانال:
https://telegram.me/SQLSERVER_professional
Subscribers
848
Photos
146
Videos
6
Links
194

Showing posts older than #552 · Back to latest

Older Posts 20 shown
Post #551 1.42K
مقایسه با مقدار NULL در شرط کوئری
Post #550 381

Forwarded from codeeatsleep

📣📣 مجموعه آموزش های EXECUTION PLAN:

1️⃣آموزش Execution Plan چیست؟
http://codeeatsleep.ir/sql-riddle/what-is-execution-plan 👈 لینک
موضوع 👈 آشنایی با مفهوم، کاربرد، انواع، نحوه نمایش execution plan، معرفی تعدادی از مهمترین کاربردها

2️⃣فیلم آموزش execution plan چیست
لینک 👈 http://codeeatsleep.ir/sql-server-tutorial/what-is-execution-plan-video


3️⃣ نحوه خواندن EXECUTION PLAN
لینک 👈http://codeeatsleep.ir/sql-server-tricks/how-read-execution-plan
موضوع 👈 آموزش نحوه خواندنexecution plan های مختلف در SQL SERVER

4️⃣ فیلم آموزش نحوه خواندن execution plan

لینک 👈 http://codeeatsleep.ir/sql-server-tutorial/how-read-execution-plan-video

5️⃣کشف دلیل کندی سرعت کوئری در یک نگاه!
لینک 👈 http://codeeatsleep.ir/sql-server-tricks/discovering-query-problem-at-a-glance
موضوع 👈 معرفی نشانه ها و علائمی که شما با مشاهده آن ها در Execution Plan دلیل کندی اجرای کوئری خود را کشف می کنید
codeeatsleep.ir execution plan چیست بدون شک execution plan از مهمترین ابزار کشف مشکلات کارایی کوئری ها است. در این آموزش با مفهوم execution plan آشنا خواهیم شد
Post #548 1.42K
خطر استفاده از عملگر NOT IN
Post #546 349

Forwarded from codeeatsleep

📣📣 مجموعه آموزش های ایندکس در SQL SERVER:

1️⃣ ایندکس در SQL SEVER چیست؟
http://codeeatsleep.ir/sql-riddle/what-is-index 👈 لینک
موضوع 👈 اهمیت، مفهوم، کاربرد و دو نوع از مهمترین انواع ایندکس در sql server

2️⃣ آموزشB-Tree در SQL SERVER چیست؟
لینک 👈 http://codeeatsleep.ir/sql-riddle/what-is-b-tree
موضوع 👈 تعریف و معماری B-Tree، نحوه ذخیره سازی و جستجوی اطلاعات

3️⃣ ایندکس کلاستر چیست؟
لینک 👈 http://codeeatsleep.ir/sql-riddle/what-is-clustered-index
موضوع 👈 نحوه توزیع رکوردهای جدول در سطوحb-tree ، جستجوی یک مقدار خاص در ایندکس کلاستر به همراه پیمایش مرحله به مرحله b-tree

4️⃣ایندکس نان کلاستر چیست؟

لینک 👈 http://codeeatsleep.ir/sql-riddle/what-is-nonclustered-index
موضوع 👈 مراحل ایجاد ایندکس نان کلاستر بر روی یک جدول، تفاوت های آن با ایندکس کلاستر، نحوه جستجوی یک مقدار خاص، آشنایی با جدول HEAP و CLUSTERED و مفهوم Lookup
codeeatsleep.ir ایندکس چیست ایندکس ها از مهمترین موارد در افزایش سرعت و کارایی کوئری محسوب می شوند. شما به ندرت، کتاب، آموزش و یا دوره مرتبط با sql server را پیدا می کنید که فاقد بحث ایندکس در sql server باشد
Post #544 2.42K
#سوال

سلام ... میخوام یک دیتا بزرگ بزرگ در حد 1 ترا بایت کامل کپی کنم روی یک سرور دیگر در شبکه
چطور اون سرور رو وصل کنم به این سرور ؟
یعنی چطور نتورک سرور اییجاد کنم تا با کپی تسک بتونم کپیش کنم ؟

#پاسخ:
برای انتقال یک دیتابیس از یک سرور به سرور دیگر راه حل های زیر را متناسب با:

1- بستر فیزیکی بین دو سرورو
2- حجم دیتابیس انتقالی
3- میزان Down time قابل تحمل سیستم ارائه می شود.

1️⃣ بستر شبکه:

➖در صورتی که ارتباط بین دو سرور شما از طریق فیبر و یا CAt5e /Cat6/Cat7 باشد که سرعت 1000 Mps رو برای شما تأمین می کند:
بهترین روش ها میتونه:
👈تهیه Backup با حالت Compress و کپی کردن آن در سرور مقصد باشد. توجه کنید حتما در این حالت، تا حد ممکن فایل LDF رو خالی کنید. (Shrink - Checkpoint)
👈یکی از راه حل ها هم میتونه Detach کردن دیتابیس و کپی کردن فایل های LDF - MDF و انتقال آن ها به سرور مقصد باشد.
(در این روش ها میتونین یک درایو سرور مقصد رو Map کنید و یا مستقیا عمل کپی رو انجام دهید)
👈ایجاد Linked Srever بین دو سرور و استفاده از دستور Insert into جهت ایجاد جداول و .... در سرور مقصد

➖در صورتیکه ارتباط بین سرور ها UTP باشد و از Cat5 استفاده شده باشد:

👈تهیه بک آپ در سرور مبدأ در حالت فشرده ( حتما لاگ فایل رو به حداقل اندازه ممکن برسانید) . انتقال فایل بک آپ به یک هارد اکسترنال و انتقال آن به سرور مقصد پیشنهاد می شود

2️⃣در صورتیکه برای شما دسترسی پذیری دارای اهمیت می باشد:
(دقت کنید در این حالت راه حل Backup - Restore و Attach-Detach کاربردی نیستند)

راه حل های ممکن عبارتند از : Replication - Log shipping - Mirroring - Availability Group
روش Mirroring ,و Availability Group نیازمند برقراری ارتباط بین دو سرور - در یک دامین بودن سرورها (در حالت AG) و پیچیدگی های مرتبط با شبکه خاص خود را دارند.
برا ی این مورد Log Shipping گزینه مناسبی محسوب می شود.

3️⃣استفاده از ابزارهای جانبی (Third Party) برا ی این کار:

👈ابزار Redgate Sql Backup - Devart
👈استفاده از Litespeed ( جهت تسریع عملیات کپی - خودم زیاد باهاش آشنا نیستم)
👈 استفاده از Export /Import , Integration Services (SSIS) Import and Export Wizard

4️⃣ به عنوان نکته پایانی :
در صورتی که ورژن Sqlserver مقصد پایین تر از Sqlserver مبدأ باشد. در زمان ریستور کردن، با مشکل مواجه خواهید شد. در این حالت یکی از روش ها ایجاد اسکریپت از دیتابیس در سرور مبدأ و انتقال آن به سورو مقصد می باشد.

👌 نکته: روش فوق زمانی که حجم دیتابیس بالا باشد، ممکن است با خطال Out Of Memory مواجه شوید که با استفاده از BigRunner.WinFormsApp.exe جهت اجرای اسکریپت تولیدی در مقصد، مشکلتون حل خواهد شد. (البته راه حل دیگر تغییر در تنظیمات sql جهت افزایش حداکثر اندازه اسکریپت قابل اجرا می باشد)

(برا ی دیتابیس های با حجم کم هم همون Backup/Restor و یا استفاده از ابزارهایی مانند Database publisher Wizard خوب هستند)

محسن بندامیر @Mohsen_Bandamir
Post #542 1.8K
❓چه دلیلی داره که در طراحی یک سیستم، چندین جدول داشته باشیم؟؟ آیا بهتر نیست که تنها یک جدول ایجاد کنیم و همه فیلدهای مورد نیازمون در اون جدول باشند؟؟

پاسخ:

1️⃣اولین دلیل مربوط میشه به آنومالی (ناسازگاری داده):
مثلا آنومالی در حذف:
به این معنا که اگر شما رکوردی از جدول را حذف کنید، کلیه اطلاعات موجود در اون جدول در ابطه با اون رکورد خاص رو از دست خواهید داد.

2️⃣دومین دلیل بحث افزونگی اطلاعات هست:
زمانی که همه اطلاعات شما در یک جدول باشند با هر عملیات (مثلا درج) مجبور هستید مجددا ، اطلاعاتی که از قبل وارد کرده اید را وارد کنید.

3️⃣مشکلاتی که وجود مقادیر null ایجاد می کند:
به هر حال، کلیه درج های شما، شامل همه فیلدها نمی شود و مجبور هستید به ازای هر درج، تعداد زیادی از فیلدها را با مقدار Null پر کنید. که این مقادیر null چه در محاسبات و چه در پیاده سازی برخی عملیات، مشکلاتی رو ایجاد خواهند کرد
4️⃣ علاوه بر دلایل بالا، دلایل دیگری مانند: سخت و یا ممکن نبودن تهیه برخی گزارشات ، کاهش کارایی به ذلیل افزایش سریع حجم اطلاعات، عدم امکان پیاده سازی برخی تکنولوژِ ی ها و امکانات موجود در SQlserver , ... را نیز می توان به این لیست اضافه کرد
جمع بندی:
در طراحی بهینه پایگاه داده و جداول، بعد از اینکه موجودیت ها (Entity) سیستم و چندی رابطه بین آن ها رو استخراج کردید. باید بر اساس قوانین نرمال سازی اقدام به طراحی جداول کنید. تا در آینده، در مباحثی مانند توسعه و نگهداری نرم افزارتون با مشکل مواجه نشوید.

محسن بندامیر @Mohsen_Bandamir
Post #540 1.74K
#آموزش: خطر استفاده از عملگر Not IN ❗️

در این آموزش علاوه بر آشنایی با نحوه عملکرد عملگر Not IN ، با نکاتی پیرامون مقدار null در sqlserver هم آشنایی پیدا خواهید کرد.

خیلی از مواقع ممکن هست برای تهیه گزارشاتی مانند لیست کارمندانی که حقوق فلان ماه رو دریافت نکرده اند، لیست کالاهایی که رزرو سفارش نشده اند و ... از عملگر Not IN به صورت زیر استفاده کنیم :
select * from first_table as a جدول حاوی کلیه رکوردها
where a.id Not IN(Select id from second_table where ....)

به عنوان یک اشاره مختصر : همونطور که میدونید عملگرهایی مانند Exists - IN - Not IN - Not Exists جهت انجام عملیات از Join (semi join - inner join) استفاده می کنند .
در هر حال، جهت تولید خروجی نهایی، باید یک مقایسه بین id رکوزردهای جدول اول (first table) و جدول دوم (second table) که دارای شرط خاصی هستند انجام بشود. نکته مهم این هست که در عملگر not in این مقایسه به دنباله ای از ANd ها تبدیل می شود ( بر خلاف عملگر IN که به دنباله ای از OR ها تبدیل می شود).
و اما مشکل زمانی ایجاد می شود که در مقایسه ما یک مقدار با null ست شده باشد. به مثال زیر دقت کنید:
SELECT *
FROM dbo.Person
WHERE ID NOT IN (1,2,null)

با بررسی Execution plan خواهید دید که مقایسه به این صورت خواهد بود :
[dbo].[Person].[ID]< > 1) AND
[dbo].[Person].[ID]< >2) AND
[dbo].[Person].[ID]< >null)

به اینصورت خروجی شما همیشه تهی خواهد بود و هیچ رکوردی رو در خروجی نخواهید دید !!!!!
و اما دلیل بروز این مشکل:
دقت کنید برای نمایش یک رکورد، بایستی حاصل مقایسه (عبارت داخل پرانتز) برابر با true شود.
نکته مهم در اینجا وجود مقدار null هست و دو نکته مهم در رابطه با null:

1- نتیجه انجام هر مقایسه یا عملیاتی با null برابر است با null (این مورد رو با نوشتن کوئری های ساده مانند : select null*2 بررسی کنیذ.
2- نتیجه مقایسه منطقی AND هر مقداری با null برابر است با false

با توجه به دو نکته بالا، فرض کنید از جدول اول داریم: id=2
پس در ابتدا حاصل مقایسه ها:
1< >1 —-------------->false
1< >2) —--------------->true
1< > null) —------------->null با توجه به نکته 1
در مرحله دوم انجام AND بین نتایج:
flase AND true AND null —----------------------->false با توجه به نکته 2

راه حل:
1- با استفاده از عملگر Not Exists این مشکل را نخواهید داشت.
2- در صورت ایجاد رابطه (Relationship) بین جداول، جدول Child نمی تواند مقداری که در جدول Parent وجود ندارد را داشته باشد و از آنجایی که فیلذ جدول Parent هم Unique می باشد پس مشکل فوق در استفاده از عملگر Not in پیش نخواهد آمد .

محسن بندامیر @Mohsen_Bandamir
Post #538 1.84K
[Forwarded from کانال تخصصی SQLSERVER]
فیلم آموزش Performance Tuning :
http://beyamooz.com/product/performance-tuning

آموزش Performance Tuning با بیش از 27 ساعت آموزش بر اساس سه محوریت زیرتشکیل شده است:

1- آموزش مفاهیم پایه ای و ضروری جهت بهینه سازی کارایی با استفاده از مثال هایی آشنا، عملی و روزمره

2- آموزش بررسی مشکلات رایج کارایی و ارائه برتربن راه حل ها برای هر یک از آن ها

3- آموزش تکنیک ها و ابزارهای بهینه سازی کارایی در سطح سرور، دیتابیس، جدول و به ویژه کوئری ها، از سطح مقدماتی تا پیشرفته



به قول آقای اسپولسکی (بنیانگذار سایت Stack Overflow) اگر بخواهید چیزی را درست بفهمید، باید از پایه و اساس آن را شروع کنید. ما نیز در فیلم آموزش Performance Tuning، ابتدا مفاهیمی مانند ایندکس، Statistics ،B-Tree ،Execution Plan ،Page و ... که پایه و اساس بهینه سازی کارایی محسوب می شوند را با استفاده از مثال هایی آشنا، عملی و روزمره آموزش داده ایم. به عنوان مثال:

استفاده از دو مثال آشنای فهرست کتاب و دفتر تلفن جهت آموزش مفهوم و کاربرد ایندکس کلاستر و نان کلاستر
استفاده از مثال آشنای فلوچارت جهت آموزش مفهوم و کاربرد Execution Plan

و ...

در ادامه با استفاده از مفاهیم اصلی آموزش داده شده، با نحوه اجرا شدن کوئری ها، کشف مشکلات کارایی، شیوه حل نمودن آن ها و عمکرد Sqlserver به خوبی آشنا می شویم، آشنایی با عملکرد Sqlserver تأثیر بسیاری در طراحی بهینه کوئری ها و پیشگیری از بروز مشکلات کارایی خواهد داشت. در ادامه فیلم آموزش Performance Tuning، به نکات و تنظیمات کلیدی در سطح سرور و دیتابیس پرداخته شده است.

در طول فیلم آموزش Performance Tuning، اسکریپت ها و ابزارهای مفیدی ارائه می شوند که شما به عنوان یک مشاور و متخصص Performance Tuning، می توانید از آن ها در جهت شناسایی و رفع مشکلات کارایی استفاده نمایید.

اسکریپت ها و نرم افزارهای استفاده شده در فیلم آموزش Performance Tuning، در فایل های دانلودی ضمیمه شده است.

فیلم آموزش Performance Tuning :
http://beyamooz.com/product/performance-tuning
Post #532 2.25K
یک مقایسه جامع بین انواع روش هایی که جهت Auditing و بازرسی در Sqlserver وجود داره 👇👇👇👇👇👇👇👇👇
Post #531 2.37K
#آموزش_امنیت

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

🔑در SQL Server Audit جهت ردیابی تغییرات، انواع عملیات(Action) در گروهبندی هایی (Action Group) در سطح سرور و یا دیتابیس قرار گرفته اند که از طریق فعال کردن امکان Auditing ، می توانیم تغییرات و دستکاری های اعمال شده روی Actionها و تنظیمات رو ردیابی کنید.

👈جهت کانفیگ کردن آسان این امکان، می تونین از Apexsql Audit هم استفاده کنید. این نرم افزار با یک رابط کاربری ساده، امکان فعال سازی و پیکربندی Audit رو با چند کلیک ساده برای شما فراهم میکنه و علاوه بر این، امکان تهیه گزارشات رو هم به خوبی فراهم کرده است. 👉

در لینک اول: یک آشنایی با SQL Server Audit پیدا خواهید کرد و در لینک دوم و سوم نحوه فعال سازی این Feature رو به صورت گام به گام خواهید دید.

محسن بندامیر @Mohsen_Bandamir

1️⃣https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions

2️⃣https://www.simple-talk.com/sql/database-administration/sql-server-audit-magic-without-a-wizard/

3️⃣https://solutioncenter.apexsql.com/how-to-setup-and-use-sql-server-audit-feature/
Docs SQL Server Audit Action Groups and Actions - SQL Server Learn about server-level, database-level, and audit-level groups of actions and individual actions in SQL Server Audit.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →