SQL Server
3.91K subscribers
19 photos
7 videos
36 files
168 links
حمید رضا صادقیان

🔴طراح‌ومشاوربانک های اطلاعاتیSQLSERVER
⚫️مدرس دوره های آموزشیDatabase

ارتباط با من:
@Hamidreza_Sadeghian

گروه تبادل نظر:
https://t.me/+uIc1qhv58gU0NWQ0
Download Telegram
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه و تعطیلات خوبی رو داشته باشید
یکی از سوالاتی که میبینم خیلی مطرح میشه نحوه لاگ کردن عملیات کاربران هست
جوابهایی هم که احتمالا خواهید شنید استفاده از CDC یا تریگر هست.
یکی از مشکلاتی که تریگر ایجاد میکنه روی مباحث پرفورمنسی هست و وقتی تعداد درخواستها زیاد میشه کندی هایی رو همراه خواهدداشت و معمولا چون کدها نیز بهینه نوشته نمی شوند ، همین کدها میشه سرمنشا Blocking ها و Dead Lock ها.
احتمالا میپرسید خوب پس راه حل چیه؟
یکی از راههای خوب و مناسب استفاده از دستور Output در دستورات Insert,Update,Delete هست. توسط این دستور شما به جداول Deteled,Inserted که در فایل Log ایجاد می شوند و فقط در تریگرها در دسترس بود ، دسترسی خواهید داشت.
بیاید باهم این روش رو پیش ببریم و یک نمونه برای این روش به صورت تستی پیاده سازی کنیم.
در کد زیر من یک جدول محصولات دارم و یک جدول Userlog که قراره روی این سه تا عمل من لاگش رو ایجاد کنم.
اگر این کد رو اجرا کنید نتیجه رو خواهید دید.
Create Table Product
(ID int Identity(1,1),
UserId int,
Code varchar(20),
[Name] Varchar(30)
)
Go

Create Table UserLog
(Id Int identity(1,1),
UserId int,
section varchar(30),
Operation varchar(30),
[Message] varchar(1000)
)
Go


Insert Into Product
(UserId,
Code,
[Name])
Output
inserted.userId,
'Prodcut Table' as Section,
'Insert Operation' as Operation,
inserted.code+'-'+inserted.[name] as [Message]
Into
UserLog (UserId,section,Operation,[Message])
Values(10,
'AX10_25',
'LG Television'),
(20,
'50627XP25',
'Apple Iphone')
Go

Delete From Product
Output SUSER_ID(),
'Product Table',
'Delete Operation',
deleted.code+' - '+deleted.[Name] as [Message]
Into
UserLog (UserId,section,Operation,[Message])
Where
Id=1
Go

Update
Product
Set [Name]='Iphone 7sPlus'
output SUSER_ID(),
'Product Operation',
'Update operation',
deleted.code+' - '+deleted.[Name]+' is Old value' +char(13)+char(10)+
inserted.code+' - '+inserted.[Name]+' is new value' as [message]
Into
UserLog (UserId,section,Operation,[Message])

where
id=2
Go

select * from Product;
Select * from UserLog;

اگر سوالی در این زمینه بود یا متوجه نشدین لطفا در گروه مطرح کنید پاسخ بدم

ارادتمند شما
حمیدرضا صادقیان

ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام و عرض ادب خدمت دوستان عزیزم
شب بر شما خوش
یکی از مشکلاتی که اکثر مدیران سازمانها و شرکتها باهاش درگیر هستن این هست که شاید بعضی از موقعیتهای شغلی رو نشناسن یا اینکه اسمش رو شنیده باشن ولی درک درستی از وظایف اون نداشته باشن.
یکی از این مشاغلی که درک درستی ازش نیست و متاسفانه در سازمانها نیز بسیار پراهمیت هست DBA یا مسئول نگهداری بانک های اطلاعاتی هست.
الان تا با شرکتی صحبت میکنم یا یک سازمان ، بحث DBA که مطرح میشه سریع میگن ما خودمون یک DBA داریم.
بعد که شروع میکنم 10 درصد وظایف DBA رو میگم تازه متوجه میشن ظاهرا همچین شخصی رو ندارند.
شما به عنوان مدیر یک مجموعه آیا نسبت به صحت اطلاعات خود مطمئن هستید؟
نسبت به صحت Backup های تهیه شده مطمئن هستید؟
نسبت به امنیت بانک های اطلاعاتی و سرور مطمئن هستید؟
تسبت به Stable بودن سرور بانک های اطلاعاتی تون مطمئن هستید؟
و....
این لیست ادامه دار است!!!!

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

آیا شما برای بدن خودتون وقتی که قلبتون درد میکنه به یک دکتر عمومی مراجعه میکنید؟ آیا برای کمردرد یا دردهای دیگه (خدای نکرده) به دکتر عمومی مراجعه میکنید؟ یا برای هردرد پیش متخصص اون درد یا بیماری می روید؟

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

DBA سازمان مسئول شبکه بود.
مسئولیت تهیه بکاپ از نرم افزار به عهده شرکت نرم افزاری بود که سیستم رو راه اندازی کرده بود!!!!!!!!!!!!!! ( شرکت های نرم افزاری اصلا نباید نباید نباید به هیچ وجهی دسترسی به سرور بانک اطلاعاتی داشته باشن)
بعد جالبه که خواستن اسکریپت تغییرات رو اجرا کنن، خیلی راحت یک RDP به سرور زدن ، یک نرم افزار نصب کردن اسکریپت رو اجرا کردن همه چیز تعطیل شده.
کسی که نبوده اسکریپت رو چک کنه( بارها دیدم متاسفانه شرکتهای نرم افزاری برای حل مشکلات سرعت یک کلمه ای رو میشنون ، میرن یک جستجوی سطحی میکنن چند تا اسکریپت پیدا میکنن و به صورت تستی روی محیط تست خودشون اجرا میکنن ، چون 10-20 درصد پیشرفت میبینن سریع میان اونو بسطش میدن روی تمام محیط ها بدون اینکه اصلا بدونن کار اون اسکریپت چیه و چیکار میکنه)
الحمدلله بکاپ هم که قبل از کار نمیگرفتن یعنی خیلی اعتقادی به بکاپ و این چیزها نداشتن . این مسائل سوسول بازیه ظرفیت هارد رو میگیره.
بعد که اطلاعات پریده حالا شرکت نرم افزاری با دوجین نرم افزار ریکاوری دیتابیس افتادن به جون MDF بخشی از دیتا برگشته مابقیش هم خیر. خودشون هم که توان ندارن دیتای سیستم خودشون رو اصلاح کنن.!!!!

حالا اگر مدیرعامل اون سازمان میدونست که یک DBA میتونه از این فاجعه جلوگیری کنه ، حاضر نیست مثلا ماهی 4 میلیون هزینه کنه؟
یعنی اطلاعات سازمانش، عدم تعطیلی و از بین رفتن اطلاعاتش ، هزینه های جانبی دیگه براش کم ارزش تر از 4 میلیونه؟

در شبهای آتی بیشتر در این خصوص صحبت خواهم کرد.

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه
در پست قبل بحثی رو پیرامون شرح وظایف یک DBA و کلا تعریف کلمه و کار یک DBA آغاز کردم.
چندین پیام مختلف داشتم از شما عزیزان داشتم که بهش اشاره خواهم کرد.
اول پستهای اون عزیزان رو درحد یکی دو جمله بهش میپردازم بعد ادامه مطلب رو پیش میگیرم
دوست بزرگواری گفتن که وقتی مسئول شبکه 2 میلیون حقوق میگیره و شخصی میاد به عنوان DBA درخواست 4 میلیون حقوق میکنه . مدیر شبکه میگه اون 2 میلیون رو بدین من کارشو انجام میدم. خوب بله این حرف تا حدی درسته. شاید اون مدیر شبکه تا حدودی بلد باشن با SSMS! کار کنند نه SQL Server !
اینکه یک مدیر شبکه بلد باشه با SSMS کار کنه و به SQL Server وصل بشه و یک Backup تهیه کنه دلیل نمیشه که تسلط کافی داشته باشه و به ساختار داخلی اون مسلط باشه( البته برای هر ابزاری این نیاز نیست ولی حداقل برای زبان های برنامه نویسی و بانک های اطلاعاتی، درصورتی که میخواهید به یک کد باکیفیت برسید این مورد الزامی و واجبه. در ثانی این عدم تسلط زمان Disaster به صورت خیلی واضح خودش رو به نمایش خواهد گذاشت 😅😅)
دوم اینکه اون شخصی که مسئول شبکه هست هم نباید این رقم حقوقش باشه اگر واقعا در کار خودش حرفه ای است. چون شبکه یک سازمان جز شاهراه حیاتی اون سازمان محسوب میشه و کوچکترین خطا میتونه به مرگ سازمان منجر بشه.
حالا بپردازیم به تعریف اولیه DBA
کلمه DBA مخفف عبارت Database Administrator هست.
یعنی شخصی که مسئولیت نگهداری از بانکهای اطلاعاتی را به عهده دارد.
خوب احتمالا این سوال براتون پیش میاد که این مسئولیت ها چه چیزهایی هست و یک DBA باید به چه مواردی تسلط داشته باشد.
در ادامه من لیست مواردی که یک DBA باید به آنها تسلط داشته باشد را ارائه خواهم داد.

- نگهداری از سرور SQL Server و کنترل لاگ های تولیدی در سطح ویندوز
- آشنایی با مفاهیم شبکه
- بررسی لاگ های تولیدی SQL Server
- آشنایی با سخت افزارهای مختلف موجود بر روی یک سرور و نحوه Config کردن آنها ( مانند شناخت انواع Raid ها ، CPU ها و ... )
- آشنایی با دیباگرها مانند kd یا windbg برای بررسی Memory Dump های SQL Server
- تسلط کامل به زبان T-SQL
- تسلط کامل نسبت به رفتار درونی SQL Server
- تسلط کامل به راه اندازی HA
- آشنا با ابزارهای مانیتورینگ و تسلط کامل برای مانیتور کردن سرور
- آشنا با ابزار SSIS
- شناخت کامل Service های SQL Server و نحوه Config کردن آنها مانند SSRS,SSAS,SSIS
- تسلط کامل نسبت به مباحث امنیتی پیرامون SQL Server مانند پیاده سازی استراتژی سطح دسترسی ها، کنترل دسترسی سرویس ها، و...
- شناخت کامل نسخه های مختلف SQL Server و ارائه راه کار برای بروز رسانی به نسخه های جدید
- دارای توانایی بسیار زیاد در کنترل سطح استرس خویش
- دارای توانایی زیاد در ارائه گزارشات دقیق مدیریتی و روحیه تعاملی با تیم های نرم افزاری

در پستهای بعدی د رمورد شرح وظایف یک DBA مواردی رو بیان میکنم شاید این موارد باعث شود مدیران مجموعه ها نسبت به انتخاب افراد دقت بیشتری به خرج دهند و کمتر شاهد از بین رفتن داده ها ، به سرقت رفتن اطلاعات و مواردی از این دست باشیم

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام وعرض ادب خدمت دوستان عزیز
امیدوارم حالتون خوب باشه
سالروز ولادت حضرت محمد مصطفی (ص) و امام جعفر صادق(ع) رو خدمت همه عزیزان تبریک عرض میکنم

یکی از موارد بسیار مهم در بررسی Performance کدهای نوشته شده بررسی Plan ایجاد شده توسط SQL Server است.
خود SSMS بهتون این Plan رو نمایش میده و میتونید موارد زیادی رو د راین پلن مشاهده کنید.

یکی از ابزارهایی که این پلن ها رو خیلی دقیقتر و با جزئیات خیلی بیشتری در یک نگاه به شما ارائه می کند، Plan Explorer هست
این ابزار رو می تونید به صورت رایگان از لینک زیر دریافت کنید.
https://www.sentryone.com/plan-explorer

بعد از نصب این ابزار ، در خود SSMS میتونید روی Plan ایجاد شده راست کلیک کنید و گزینه View with SentryOne Plan Explorer رو بزنید
سعی میکنم در پستهای بعدی مواردی را که در این ابزار بسیار مورد توجه قرار میگیرد ، در موردش صحبت کنم.

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام و عرض ادب خدمت دوستان گرامی
امیدوارم حالتون خوب باشه
این پست رو‌بعد از ده ساعت کار مداوم بر روی ۲۰۰ گیگابایت اطلاعات دیتابیس میذارم که بدون بکاپ بازیابی شد.
یکی از نکات بسیار مهم جهت بازیابی اطلاعات فایلهای آسیب دیده این هست که اول با اون دیتابیس دیگه شخصی کار نکنه.
مورد دوم این هست که دیتابیس detach نشه و اگه قصد دارید فایلهای دیتا رو جابجا کنید یا instance رو stop کنید یا اینکه دیتابیس رو offline کنید
مورد بعدی اینکه دیتابیس شیرینک نشه
نکته بعد اینکه اگر دستور dbcc checkdb رو بر روی دیتابیس اجرا کردین وسط کار اونو قطع نکنید و اجازه بدین کارش به اتمام برسه
با رعایت نکردن این موارد عملا کار بازیابی اطلاعات سخت تر خواهد شد.

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

ارادتمند شما
حمیدرضا صادقیان
Id:@Hamidreza_sadeghian
@SQL_server
سلام وعرض ادب خدمت دوستان عزیز
شب بر شما خوش باشه انشالله
یکی از قابلیتهای اضافه شده در SQL Server 2016 استفاده از JSON هست.
در این مقاله که لینکش رو قرار میدهم به شما نشان میدهد که چطور و به سادگی میتوانید با استفاده از این قابلیت توسعه Rest API رو خیلی راحتتر انجام بدین.

امیدوارم از این مقاله لذت ببرید

ارادتمند شما
حمیدرضا صادقیان
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/01/29/simplify-rest-api-development-modern-single-page-apps-sql-server/?utm_source=dlvr.it&utm_medium=linkedin

ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
Forwarded from AM
#نکته شماره 1
استفاده از تابع بر روی ستونی که دارای ایندکس است در where clause عموما به جای index seek منجر به index scan یا Table Scan می شود.
مثال : جدول دانشجو با مشخصات زیر موجود است :
Student(Sno,Name,Family,…)
Sno : PK+Clustered Index
Family: Non Clustered Index
اجرای کوئیری ذیل منجر به non clustered index scan خواهد شد.
Select *
From Student
Where Left(Family,2)=’Ma’
علت : نیاز به محاسبه مقدار خروجی تابع به ازاء هر رکورد جدول
راه حل : استفاده از Like

Select *
From Student
Where Family Like ’Ma%’

در این حالت از Non clustered Index Seek استفاده می شود که از نظر تعداد IO و زمان اجرا نسبت به Non clustered Index Scan بسیار کارآمدتر است.
عبارات Sargable عباراتی هستند که دستخوش تغییرات نمی شوند و SQL Server هنگامی که ایندکس مناسبی روش باشه ، از ایندکس ها استفاده خواهد کرد. ولی اگر فیلدها دستخوش تغییرات شوند دیگه Sargable نبوده و باعث می شود از Index Scan استفاده بشه که سبب کندی و خواندن Page های زیاد خواهد شد.
👍1
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه
یکی از ابزارهای جالبی که در SSMS 17.5 اضافه شده قابلیت دسته بندی و کشف داده های حساس و برچسب گداری بر روی این اطلاعات هست. که براساس این دسته بندی میتونید نوع جدیدی از امنیت رو بر روی دیتابیس فراهم کنید و همچنین گزارشات مختلفی رو میتونید به صورت Pivot تهیه کنید.
در لینک زیر در این خصوص کامل توضیح داده شده است.
برای نسخه جدید SSMS نیز میتونید از سایت مایکروسافت اقدام کنید
ار از نسخه های 17.X استفاده میکنید میتونید پکیج Update اونو که حدود 360 مگابایت هست دانلود کنید و نیازی نیست که نسخه جدید که نزدیک 900 مگابایت هست رو دانلود کنید.

ارادتمند شما
حمیدرضا صادقیان

https://docs.microsoft.com/en-us/sql/relational-databases/security/sql-data-discovery-and-classification



ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
SQL Server Group : https://telegram.me/joinchat/BTQQtzy50j80lW2DM90Wtw
سلام و عرض ادب خدمت دوستان عزیز
امیدوارم حالتون خوب باشه
شاید برای شما پیش اومده باشه که بخواهید هنگام نمایش اطلاعات ، اونها رو مخفی کنید . مثلا بخواهید فقط سه رقم شماره موبایل رو نمایش بدید. یا مثلا حرف اول ایمیل رو نمایش بدین ولی اطلاعات به صورت کاملا صحیح و درست در داخل دیتابیس ذخیره شده باشند. از طریق کنترل دسترسی ها شما نمیتونید این تغییرات رو اعمال کنید.
به عنوان مثال فرض کنید شما قصد دارید شماره های تلفن به شکل زیر نمایش داده بشه
0912XXXXXXXXX
ولی داده های شماره ها به صورت کاملا صحیح در دیتابیس ذخیره شده و کاربر نیز دسترسی Select به این ستون رو داره فقط میخواهیم موقع نمایش اطلاعات به این شکل نمایش داده بشه.
راه اولش این هست سمت Client ودر UI این مورد هندل بشه
راه دوم استفاده از Dynamic Data Masking در SQL Server هست که در این مقاله به شما نحوه استفاده از اون رو آموزش خواهم داد.
برای استفاده از این قابلیت باید در جدول و بر روی فیلد مورد نظر این تغییرات رو اعمال کنید.
اگر جدول جدیدی میخواهید بسازید و نیاز به فعال سازی این قابلیت دارید میتونید از ساختار زیر در هنگام ساخت جدول استفاده کنید.
CREATE TABLE HR.EmployeePersonalData
(empid int NOT NULL PRIMARY KEY,
salary int MASKED WITH (FUNCTION = 'default()') NOT NULL,
email_address varchar(255) MASKED WITH (FUNCTION = 'email()') NULL,
voice_mail_pin smallint MASKED WITH (FUNCTION = 'random(0, 9)') NULL,
company_credit_card_number varchar(30) MASKED WITH (FUNCTION = 'partial(0,"XXXX-",4)') NULL,
home_phone_number varchar(30) NULL
);
GO

اگر جدول وجود داره و نیاز دارید این قابلیت رو به یک فیلد اضافه کنید از شکل زیر استفاده کنید.
ALTER TABLE HR.EmployeePersonalData
ALTER COLUMN home_phone_number
ADD MASKED WITH (FUNCTION = 'partial(4,"-XXX",0)');
GO

همچنین اگر این قابلیت بر روی یک فیلد فعال باشه و شما بخواهید یک کاربر به صورت کامل اطلاعات رو ببینه میتونید با استفاده از دستور زیر بهش دسترسی بدین که کل اطلاعات رو بدون اعمال Masking ملاحظه کنه.
Grant UNMASK TO test_user;
و اگر بخواهید مجدد دسترسی نمایش کل اطلاعات رو ازش بگیرید و به صورت Mask شده دیتاها رو ملاحظه کنه میتونید از دستور زیر استفاده کنید.
Revoke UNMASK TO test_user;
برای توضیحات تکمیل تر به این لینک مراجعه کنید.
https://docs.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking

ارادتمند شما
حمیدرضا صادقیان

ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
👍2
سلام وعرض ادب خدمت دوستان گرامی
امیدوارم حالتون خوب باشه
یک نکته ساده ولی کاربردی رو میخوام خدمتتون عرض کنم.
یکی از دیتابیس های سیستمی داخل SQL Server دیتابیس Model هست.
کاربرد این دیتابیس برای این هست که هر زمان که شما یک دیتابیس جدید ایجاد می کنید ، در واقع یک نمونه از این دیتابیس ایجاد میشه.
فرض کنید شما بر روی سرورتون سیاست هایی رو میخواهید اعمال کنید.
مثلا میخواهید هر دیتابیسی که ایجاد میشه از یک سری سایز مشخصی از دیتا فایل و لاگ فایل استفاده کنه
یا تعداد فایل های دیتا رو مشخص کنید
یا اینکه لاگین های خاصی در هر دیتابیس باشه
یا میخواهید یک سری جدول ،تابع ،‌SP و ... بر روی هر دیتابیس جدیدی که ساخته میشه ، وجود داشته باشه.
کافیه همه این موارد رو داخل دیتابیس Model تعریف کنید.
پس از اون ، هر دفعه که دیتابیس جدیدی ایجاد کنید تمام مواردی که داخل دیتابیس Model ایجاد کردین ، داخل دیتابیس جدید قرار میگیره.

امیدوارم این نکته به دردتون خورده باشه.

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server
سلام و عرض ادب خدمت دوستان عزیز
صبحتون بخیر و شادی
سرویس پک 2 برای SQL Server 2016 در دسترس قرار گرفت
پیشنهاد میکنم حتما بر روی سرورها نصب کنید.
از طریق لینک زیر میتونید دانلود کنید.

https://www.microsoft.com/en-us/download/details.aspx?id=56836

همچنین جزئیات تغییرات رو میتونید در این لینک ملاحظه کنید.
https://support.microsoft.com/en-us/help/4052908/sql-server-2016-service-pack-2-release-information

ارادتمند شما
حمیدرضا صادقیان
سلام و عرض ادب خدمت دوستان عزیزم

دوستانی که تازه میخواهند SQL Server رو یاد بگیرند و با مفاهیم اولیه آشنا بشن پیشنهاد میکنم این سری فیلمها رو مشاهده کنند.
این فیلمها رایگان بوده و برای سایت Microsoft هست و از کیفیت بالایی نیز برخوردار هست.

https://mva.microsoft.com/en-US/training-courses/sql-database-fundamentals-16944?l=w7qq6nAID_6805121157
دوستانی هم که تمایل دارند در خصوص Query نویسی مطالب ابتدایی رو یاد بگیرند و از پایه مفاهیم رو باهاش کار کنند.
پیشنهاد میکنم حتما این سری فیلمها رو مطالعه کنند که بسیار آموزنده و باکیفیت هست.

https://mva.microsoft.com/en-US/training-courses/querying-with-transactsql-10530?l=TjT07f87_9804984382

ارادتمند شما
حمیدرضا صادقیان
سلام و عرض ادب خدمت دوستان عزیز
شاید بارها برای شما پیش اومده باشه که بخواهید مثلا یک موردی رو در Administration در SQL Server تست کنید ولی ابزار یا تجهیزاتش رو نداشته باشید
به عنوان مثال مثلا تمایل دارید Replication رو راه اندازی کنید یا AlwaysON رو راه اندازی کنید ولی سیستم به اندازه کافی ندارید و همچنین PC شما نیز قدرت کافی نداره بخواهید مثلا VM بیارید بالا یا اینکه تنظیمات اولیه شبکه برای شما دشوار باشه.
سایت Virtual Lab مایکروسافت این امکانات رو در اختیار شما قرار میده.
تنها چیزی که نیاز دارید فقط یک اکانت ایمیل مایکروسافت هست و بس.!
در حوزه های مختلف خودش Lab هایی رو برای شما آماده سازی کرده و همچنین یک سری Documentation نیز آماده کرده و یک زمانی مشخص کرده.
به اندازه مورد نیاز اون Feature به شما منابع میده و شما به راحتی به سیستم ها لاگین میکنید و طبق اون مستنداتی که بهتون داده مراحل رو طی میکنید و میتونید راه اندازی Feature مورد نظر رو یاد بگیرید.
لینک سایتش رو قرار میدم امیدوارم که مفید واقع بشه.

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server

https://www.microsoft.com/handsonlabs/SelfPacedLabs
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه و هرجا هستید لبتون خندان باشه و طاعاتتون مقبول درگاه احدیت.
شاید برای شما پیش اومده باشه که نیاز داشته باشید یک ابزار Cross-Platform داشته باشید که بتونید به راحتی با SQL Server ارتباط برقرار کنید.
همچنین بتونید به راحتی به سرویسهای SQL Azure متصل بشید .
ابزار SQL Operation Studio ابزاری هست که توسط تیم SSDT Tools توسعه داده شده که بتونید روی Macos,Linux نیز به راحتی با SSMS کار کنید و به SQL Server در هرجایی متصل بشین.
این ابزار open source هست و سورسش نیز بر روی github قرار داره و توسط فریم ورک ElectronJS نیز توسعه داده شده است.
در این لینک توضیحات تکمیلی ، تصاویری از نرم افزار و همچنین لینک دانلود آن وجود دارد.
امیدوارم مورد استفاده واقع شده باشه

ارادتمند شما
حمیدرضا صادقیان.
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server

https://msdn.microsoft.com/magazine/mt814806
سلام و عرض ادب خدمت دوستان عزیزم
شب بر همگان خوش باشه انشالله
مقاله ای رو مطالعه می کردم که به نظرم خالی از لطف نیست شما بزرگواران ازش بهره ببرید.
یکی از کارهایی که سیستم هایی نظیر Document Management System ها انجام میدن نگهداری فایلهایی نظیر PDF در داخل دیتابیس هست . و هر زمانی که شما نیاز داشتین از این فایلها استفاده کنید ، این فایلها رو لود کرده و با یکسری از ابزارهای جانبی سعی در پردازش و جستجو در محتوای فایلها می کند.
حالا اگر شما بتونید کل محتوای متنی فایل PDf رو داخل دیتابیس داشته باشید ، دیگه از این موارد راحت خواهید شدو کار شما بسیار راحتتر میشه و به راحتی میتونید عملیات Text Mining و ,... رو روی داده ها انجام بدین.
در نسخه 2017 با استفاده از R شما بدون هیچگونه ابزار اضافی میتونید محتویات متنی این فایلهارو استخراج کرده و در دیتابیس در داخل فیلدها و جداول مورد نیاز ذخیره کنید.
لینک مقاله رو در ادامه قرار میدهم امیدوارم براتون مفید واقع بشه

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
SQL Server Channel : @SQL_Server

https://www.mssqltips.com/sqlservertip/5490/load-data-from-pdf-file-into-sql-server-2017-with-r/
با سلام و عرض ادب خدمت دوستان عزیز
من مدیرعامل شرکت تحلیل‌گران داده‌های آینده(تدآ) هستم.
هدف و باور ما این است که میتوان در کشور ، نرم افزارهای بسیار باکیفیتی داشت که هم از لحاظ مهندسی نرم افزار هم از لحاظ سرعت و امنیت بهترین باشند.
در این خصوص ما باتیمی متخصص به شرکتهایی که تمایل دارند سیستمهایی بسیار باکیفیت داشته باشند کمک می کنیم تا به این هدف بسیار مهم دست پیدا کنند.
همچین به سازمانهایی که از نرم افزارهای گوناگون استفاده می کنند کمک می کنیم تا بتوانند به بهترین نحو از سیستم های موجود با کمترین هزینه نگهداری کنندو بازدهی سیستم های فوق را افزایش دهند و به عنوان یک مشاور در تمام فرآیندهای نرم افزاری در کنارسازمان هستیم.
برای جزئیات بیشتر با ID من در تماس باشید

ارادتمند شما
حمیدرضا صادقیان
ID: @Hamidreza_Sadeghian
سلام و عرض ادب خدمت دوستان عزیز
امیدوارم حالتون خوش باشه
یکی از مواردی که اخیرا خیلی با من تماس میگیرند، د ر خصوص پیدا کردن شخص و Ip و مشخصات سیستمی هست که مثلا اومده داده هارو دستکاری کرده و یک سری جداول و داده ها حذف شدند یا تغییر پیدا کردن.!!!
قبل از هرچیز خیالتون رو راحت کنم که به صورت پیشفرض SQL Server این موارد رو Log نمیگیره و جایی ثبت نمیکنه ( به جز یک مورد که عرض می کنم).
اول اینکه چند تا سوال پیش میاد.

۱- چرا اصلا باید این اتفاق بیافته؟؟؟؟ مگه سازمانها DBA ندارند؟ ( شخصی که مسئول شبکه است و فقط بلده SSMS رو باز کنه و در نهایت یک Shrink کنه یا Backup بگیره یا یک Login تعریف کنه و یا یک Session رو با استفاده از Activity monitor پیدا کنه و kill ! کنه ، DBA نخواهد بود )

۲- چرا باید Login sa شما دست هر کسی باشه؟ چرا هر شخصی به راحتی باید بتونه به سرور عملیاتی یک سازمان دسترسی پیدا کنه؟
بارها مشاهده کردم که شرکتهای نرم افزاری درخواست دسترسی کامل به سرور رو کردند و نیاز به لاگین SA داشتند ( باعرض معذرت از تمامی عزیزان شرکتهای نرم افزاری) باید عرض کنم که به هیچ وجه ،به هیچ وجه ، به هیچ وجه اصلا شرکتهای نرم افزاری نباید دسترسی به سرور داشته باشند . وقتی نرم افزار نصب شد ، مالک داده و دیتابیس سازمان هست نه شرکتها . متاسفانه شرکتهای نرم افزاری این رو به اشتباه متوجه شدند در صورتی که اصلا تحت هیچ شرایطی نباید دسترسی داشته باشند.
اگر قرار هست تغییراتی روی دیتابیس صورت بگیره بدون استثنا باید در حضور ادمین سازمان باشه و لاغیر.

۳- چطوره که یک سازمان ، نمیدونه چطوری باید موارد مختلف نظارتی رو بر روی سرور دیتابیس ها که حساس ترین جز یک سازمان هست ، پیاده سازی کنه؟

خوب حالا برسیم به نوع Log ها. ببینید اگر دیتابیس شما Recovery Model اون روی Full باشه فقط میتونید ببینید چه شخصی در چه زمانی چه دیتایی رو تغییر داده همین! هیچ IP به شما نخواهد داد .
در Trace های پیش فرض خود SQL Server نیز این موارد لاگ نمی شوند. پس باید توسط DBA !( بله یکی از وظایف DBA این هست) این موارد راه اندازی و تنظیم بشه و مرتب مانیتور بشه.
مورد بعدی این هست که معمولا چون اکثر نرم افزارها با یک لاگین SQL یا windows به دیتابیس وصل میشن ، پس عملا همه تغییرات موجود در فایل LDF نیز به نام همین لاگین ثبت خواهد شد.!
پس بهتره نرم افزارها راه حلی برای این مورد نیز داشته باشند.
امیدوارم سازمانها ، شرکتها و موسساتی که داده های آنها براشون اهمیت داره ، به این بلوغ فکری برسند که وظیفه مدیر IT ، مسئول شبکه ، برنامه نویس ، مدیر تیم نرم افزار ، نگهداری از دیتابیس نیست. و اگر این افراد مهارتهای لازم در این حوزه رو نداشته باشند به آنها DBA گفته نمی شود.
DBA شخصی است که باید در تمام زمینه های زیر مهارت کافی داشته باشه.
۱- مسلط به ساختار درونی SQL Server
2- مسلط به زبان T-SQL
۳- مسلط به مباحث Administration
۴- مسلط به مباحث Performance Tuning
۵- آشنایی کافی نسبت به سخت افزار سرور
۶- آشنایی با مباحث امنیتی و سطوح دسترسی در SQL Server
۷- شناخت کافی نسبت به سایر سرویس های SQL Server نظیر SSAS،SSRS,MDM,DQS,SSIS

اگر افرادی که درحال مدیریت دیتابیس های شما هستند دارای این مهارتها هستند که عالیه. درغیر اینصورت پیشنهاد میکنم تا یک مشکلی برای دیتابیس هاتون رخ نداده، یک شخصی که این توانایی هارو داشته باشه انتخاب کنید و در این پست قرار بدین.

ارادتمند شما
حمیدرضا صادقیان
ID : @Hamidreza_Sadeghian
سلاو عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه.
در این پست پوستر Logical Query Processing رو قرار میدم که توسط حضرت Itzik Ben-Gan (دامت برکاته 😅) تهیه شده.
اینکه شما بدونید SQL Server چطوری دستوراتش رو اجرا می کنه و با کدهای شما رفتار می کنه ، باعث میشه که کدهای بسیار باکیفیت تری رو بنویسید.
این پوستر رو دقیق مطالعه کنید و اگر سوالی یا ابهامی بود میتونید از من بپرسید ، درحد توانم کمکتون خواهم کرد.

ارادتمند شما
حمیدرضا صادقیان
ID:@Hamidreza_Sadeghian