PDA

مشاهده نسخه کامل : سوالاتی درباره SQL Server



Speed Racer
11-12-19, 00:48
درود مهندس آرمین

3تا SQLServer داریم یکی SQL Server داخلی خود سی شارپ که فکر می کنم بهش میگن Express و دو تای دیگه نرم افزار جدا هست که یکیش SQL Server Enterprise است و یکی دیگه Standard.

1- اگه من با همون SQL Server داخلی ویژوال استودیو یک نرم افزار ایجاد کنم فکر کنم مشکلی نداره اما اگه با SQL Server 2019 چه نسخه Enterprise و چه نسخه Standard پایگاه داده هایی ایجاد کنم و بعد به نرم افزار ارتباط بدم و در نهایت یک فایل setup مثلا با install shield بسازم آیا سیستم هایی که می خوان نرم افزار من رو نصب کنن حتما باید SQL Server Enterprise یا Standard روشون نصب بشه یا اینکه با همون .NETFramework مشکل حل می شه یا اینکه توی فایل setup که ایجاد می کنم خودش اتوماتیک SQL Server مورد نظر داخلش قرار می گیره.

2- اگه با SQL Server 2019 پایگاه داده ایجاد کنم طرف مقابل می تونه با SQL Server 2016 پایگاه داده من رو استفاده کنه و یا بر عکس این موضوع.

3- کلا تا چه نوع نرم افزارهایی SQL Server داخلی خود سی شارپ جواب میده و از چه مرحله ای به بعد باید از نسخه نصبی Enterprise یا Standard استفاده کنیم. خود اینکه کجا از Standard و کجا از Enterprise هم استفغاده کنیم یک بحث دیگه است.

4- یک نرم افزار دیگه به نام SQL Server Management Studio است که نمی دونم تفاوتش با SQL Server 2019 چیه و از نظر کاربرد چه فرقی می کنه

****************************************

5- برای ویندوز 10 باید .Netframewok 3.5 نصب بشه اما روی ویندوز 7 مثل اینکه از قسمت Programs and Features و Turn Windows features باید تیک نصبش رو بزنیم. (شاید هم اشتباه می کنم) توی بعضی از ویندوز های 7 نسخه 3.5 داره و توی بعضی 3.5.1 نسخه 3.5.1 از نسخه 3.5 پشتیبانی می کنه یا نسخه 3.5 باید جداگانه نصب بشه.

6- اگه من .Netframework 4.8 نصب کنم از تمامی نسخه های 1.1 تا 4 هم پشتیبانی می کنه یا اینکه برای پشتیبانی از 1.1 تا 4 فقط باید نسخه 4 رو نصب کنم. در این صورت یک مشکلی هست که خیلی ها نسخه 3.5 هم نصب می کنن که نمی دونم اگه نسخه 4 از 3.5 هم پشتیبانی می کنه چرا باید نسخه 3.5 نصب بشه. اگه نسخه 4.8 از نسخه 4 پشتیبانی نمی کنه تا چه نسخه ای رو پشتیبانی می کنه

7- یک جایی خوندم اگه می خوای نرم افزار بنویسی از نسخه .NETFramework 4 استفاده کنیم بهتره چون همه سیستم ها پشتیبانی می کنن حالا اگه با نسخه 4.8 یا 4.7.2 بنویسیم تا چه سیستم عامل هایی رو پشتیبانی می کنه و کلا نسخه 4.8 چه چیزهای اضافه ای داره که مثلا نسخه 3.5 و 4 ندارن. چون من از کدهای داخلی >NETFramework آگاهی ندارم

ravegoat
17-12-19, 16:00
سلام،



1- اگه من با همون SQL Server داخلی ویژوال استودیو یک نرم افزار ایجاد کنم فکر کنم مشکلی نداره اما اگه با SQL Server 2019 چه نسخه Enterprise و چه نسخه Standard پایگاه داده هایی ایجاد کنم و بعد به نرم افزار ارتباط بدم و در نهایت یک فایل setup مثلا با install shield بسازم آیا سیستم هایی که می خوان نرم افزار من رو نصب کنن حتما باید SQL Server Enterprise یا Standard روشون نصب بشه یا اینکه با همون .NETFramework مشکل حل می شه یا اینکه توی فایل setup که ایجاد می کنم خودش اتوماتیک SQL Server مورد نظر داخلش قرار می گیره.

قبل از هر چیز فقط برای روشن شدن بحث عرض کنم که Visual Studio، SQL Server و .Net Framework سه تا حوزه ی جدا هستن. یعنی اگر جایی یکی نصب باشه دیگری الزاما نصب نیست. مثلا اگر .Net Framework جایی نصب باشه، الزاما SQL Server هم اونجا نصب نیست و این قضیه باید تو Installer مد نظر قرار بگیره.
بنده خیلی وفته با Install Shield کار نکرد ولی قبلا این روند اتوماتیک نبود. یعنی باید نصاب SQL Server (هر نسخه ای) به Install Shield اضافه میشد به طوری که حین نصب برنامه ی شما، SQL Server هم نصب میشد و بعد از اون باید یه سری SQL Script اجرا میشد تا پایگاه های داده در SQL Server تشکیل بشن. الان هم بعید میدونم این روند آسون تر شده باشه!
ولی این که شما پایگاه داده رو داخل SQL Server Enterprise ایجاد کردی و دیگری میخواد داخل نسخه ی Express استفاده کنه بحث متفاوتیه. این سوال بستگی داره که چه قابلیت هایی از نسخه ی Enterprise به کار گرفته شده. مثلا اگر پایگاه داده شما خیلی حجیمه (بالای ده گیگابایت)، داخل نسخه ی Express بارگزاری نمیشه. به عبارتی اگر قابلیت های به کار گرفته شده در هر دو نسخه پشتیبانی بشن، مشکلی نیست.



2- اگه با SQL Server 2019 پایگاه داده ایجاد کنم طرف مقابل می تونه با SQL Server 2016 پایگاه داده من رو استفاده کنه و یا بر عکس این موضوع.

این سوال خیلی کلیه. نکته اینه که SQL Server قدیمی معمولا از نسخه های جدید تر پشتیبانی نمی کنه (این که میگم معمولا به خاطر اینه که گقتی لینک نذار وگرنه جدول هاش وجوده که هر نسخه با چه نسخه هایی هماهنگه) ولی ترفند هایی هست که بشه این کار رو کرد که یکی از اون استفاده از SQL Scriptه.
اگر بحث مهاجرت پایگاه داده باشه (که فکر منظورت همین بود)، این مهاجرت به راه های مختلفی انجام میشه و برای هر راه مهاجرت می تونه ممکن یا ناممکن باشه؛ مثلا:
اگر مهاجرت با فایل هستش مثلا MDF، مهاجرت از نسخه ی جدید به قدیم ممکن نیست ولی عکش ممکته.
اگر مهاجرت با اسکریپت هستش، مهاجرت چه از نسخه ی جدید به قدیم و چه بلعکس (معمولا) ممکنه.
اگر بحث مهاجرت پیکره بندی (مانند Agent Job) باشه، معمولا این کار با اسکریپته که مهاجرت چه از نسخه ی جدید به قدیم و چه بلعکس (بازم معمولا) ممکنه.



3- کلا تا چه نوع نرم افزارهایی SQL Server داخلی خود سی شارپ جواب میده و از چه مرحله ای به بعد باید از نسخه نصبی Enterprise یا Standard استفاده کنیم. خود اینکه کجا از Standard و کجا از Enterprise هم استفغاده کنیم یک بحث دیگه است.

قابلیت های خیلی مختلفی که توسط نسخه های Standard و Enterprise پشتیبانی میشه ولی در نسخه ی Express نه و این که شما چه قابلیت هایی رو نیاز داره، تعیین کننده ی نسخه ی مورد نظر شماست. مثلا در نسخه ی Enterprise میشه از تمام هسته ی های پردازنده استفاده کرده ولی نسخه ی Express محدودیت داره. یا حجم پایگاه داده در نسخه ی Express به حداکثر 10 گیگابایت محدود میشه.



4- یک نرم افزار دیگه به نام SQL Server Management Studio است که نمی دونم تفاوتش با SQL Server 2019 چیه و از نظر کاربرد چه فرقی می کنه

وقتی SQL Server نصب میشه، وظیفه اش اجرای فرمان ها و ارسال پاسخ فرمان ها به درخواست کننده است. حالا سوال اینجاست که فرمان ها چطوری به SQL Server ارسال میشن! یکی از راه ها sqlcmd هستش که یه محیط کنسولی برای تعامل با SQL Server فراهم می کنه. مثلا میشه با این محیط تعیین کرد هر چند وقت یه بار از فلان پایگاه داده، نسخه ی پشتیبان تهیه بشه. SQL Management Studio رو تقریبا میشه محیط گرافیکی sqlcmd تعریف کرد. وجود Management Studio یه گزینه ی اختیاری و اجباری به بودنش نیست.



سوالات 5 تا 7 رو هم در تاپیک جدا مطرح کنی ازت ممنون میشم.

Speed Racer
19-12-19, 08:55
سلام،


قبل از هر چیز فقط برای روشن شدن بحث عرض کنم که Visual Studio، SQL Server و .Net Framework سه تا حوزه ی جدا هستن. یعنی اگر جایی یکی نصب باشه دیگری الزاما نصب نیست. مثلا اگر .Net Framework جایی نصب باشه، الزاما SQL Server هم اونجا نصب نیست و این قضیه باید تو Installer مد نظر قرار بگیره.
بنده خیلی وفته با Install Shield کار نکرد ولی قبلا این روند اتوماتیک نبود. یعنی باید نصاب SQL Server (هر نسخه ای) به Install Shield اضافه میشد به طوری که حین نصب برنامه ی شما، SQL Server هم نصب میشد و بعد از اون باید یه سری SQL Script اجرا میشد تا پایگاه های داده در SQL Server تشکیل بشن. الان هم بعید میدونم این روند آسون تر شده باشه!
ولی این که شما پایگاه داده رو داخل SQL Server Enterprise ایجاد کردی و دیگری میخواد داخل نسخه ی Express استفاده کنه بحث متفاوتیه. این سوال بستگی داره که چه قابلیت هایی از نسخه ی Enterprise به کار گرفته شده. مثلا اگر پایگاه داده شما خیلی حجیمه (بالای ده گیگابایت)، داخل نسخه ی Express بارگزاری نمیشه. به عبارتی اگر قابلیت های به کار گرفته شده در هر دو نسخه پشتیبانی بشن، مشکلی نیست.



درود

خود نرم افزار SQL Server 2019 Enterprise تقریبا 1.2 گیگه و فرض کن من یک نرم افزار ساختم و از این نسخه برای پایگاه داده اون استفاده کردم. وقتی می خوام با Intall Shield یا هر نرم افزار دیگه ای، setup برنامه رو ایجاد کنم حدودا چه حجمی از SQL Server Enterprise به صورت موتور یا اسکریبپ و ... درون نرم افزار من قرار می گیره. نمی دونم باز اینجا این حجم به اندازه پایگاه داده ربط پیدا می کنه یا اینکه اون موتور یا اسکریپت ها و ... جداگانه هستن. این مثل همینجوری می زن و واقعیت نداره مثلا من نرم افزار درست کردم 100 مگ فایل نصبی حالا چقدر فایل نصبی sql server بهش اضافه می شه مثلاا 200 مگ که نرم افزار من فایل نصبیش بشه 300 مگ. اصلا این موتور به قول آقا سجاد و یا اسکریبپ برای نسخه های مختلف قابل اندازه گیری هستن.

ravegoat
19-12-19, 11:20
سلام مجدد،

نصاب SQL Server به سه شکل می تونه به نصاب اصلی برنامه اضافه بشه:

نصاب SQL Server در کنار تصاب اصلی قرار بگیره.
نصاب SQL Server با نصاب اصلی ادغام بشه و در نهایت یه نصاب تولید بشه که در داخلش دو نصاب باشه.
نصاب SQL Server حین اجرای نصاب اصلی، از طریق اینترنت دانلود و نصب بشه.

در حالت اول و دوم حجم نصاب مجموعی از حجم برنامه و حجم SQL Server هستش و راه گریزی هم نداره. یعنی اگه برنامه ی شما 100 مگابایته و SQL Server حدود 1200 مگابایت، در نهایت مجموعه ی نصاب حجمی بین 1200 مگابایت تا 1300 مگابایت خواهد داشت.

اسکریپ معمولا حجم زیادی نداره!

پایگاه داده هم بستگی داره که با محتوا یا بدون محتوا باشه:

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


در کل روش اندازه گیری دقیقی برای این کار نیست چون معمولا نصاب ها محتوای نصب رو در قالب یه فایل cab در میارن که بر حسب نوع محتوا، حجم این فایل cab می تونه متغیر باشه.

Speed Racer
20-12-19, 11:18
سلام مجدد،

نصاب SQL Server به سه شکل می تونه به نصاب اصلی برنامه اضافه بشه:

نصاب SQL Server در کنار تصاب اصلی قرار بگیره.
نصاب SQL Server با نصاب اصلی ادغام بشه و در نهایت یه نصاب تولید بشه که در داخلش دو نصاب باشه.
نصاب SQL Server حین اجرای نصاب اصلی، از طریق اینترنت دانلود و نصب بشه.

در حالت اول و دوم حجم نصاب مجموعی از حجم برنامه و حجم SQL Server هستش و راه گریزی هم نداره. یعنی اگه برنامه ی شما 100 مگابایته و SQL Server حدود 1200 مگابایت، در نهایت مجموعه ی نصاب حجمی بین 1200 مگابایت تا 1300 مگابایت خواهد داشت.

اسکریپ معمولا حجم زیادی نداره!

پایگاه داده هم بستگی داره که با محتوا یا بدون محتوا باشه:

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


در کل روش اندازه گیری دقیقی برای این کار نیست چون معمولا نصاب ها محتوای نصب رو در قالب یه فایل cab در میارن که بر حسب نوع محتوا، حجم این فایل cab می تونه متغیر باشه.
استاد آرمین درود

من تا حالا نرم افزاری کامپایل نکردم پس اگه من با همون نسخه Express داخل ویژوال استودیو دیتابیس بسازم و نرم افزارم کامپایل کنم و براش Setup بسازم دیگه همون موتور Express اتوماتیک میره داخل فایل نصبی یا مثلا باید دستی واردش کنم و این موتور Express آخرین نسخش که برای Visual Stuido 2019 هست چقدر حجم داره. چون من ویژوال 2017 دارم.

یک SQL هم داریم که استاندارده و اگه در ویژوال استودیو فقط با همین نسخه استاندارد بخواهیم کار کنیم غیر از SQL Server بهترین پایگاه داده ای چیه که بدون نصب هرگونه نرم افزار اضافی برای نرم افزارمون بتونه اتوماتیک پایگاه داده رو تشخیص بده. مثلا SQLite بهترینه یا چون محدودیت داره بهتر از این هم وجود داره

ravegoat
25-12-19, 11:49
استاد آرمین درود
درود آرشان جان،


من تا حالا نرم افزاری کامپایل نکردم پس اگه من با همون نسخه Express داخل ویژوال استودیو دیتابیس بسازم و نرم افزارم کامپایل کنم و براش Setup بسازم دیگه همون موتور Express اتوماتیک میره داخل فایل نصبی یا مثلا باید دستی واردش کنم و این موتور Express آخرین نسخش که برای Visual Stuido 2019 هست چقدر حجم داره. چون من ویژوال 2017 دارم.
بنده نمی دونم با کدوم Setup Makerی کار می کنی ولی در هر صورت خیلی بعید می دونم چنین اتفاقی به شکل خودکار بیفته. حجم نصاب SQL Server هم فکر کنم چیزی بین 300 تا 400 مگابایت باشه.


یک SQL هم داریم که استاندارده و اگه در ویژوال استودیو فقط با همین نسخه استاندارد بخواهیم کار کنیم غیر از SQL Server بهترین پایگاه داده ای چیه که بدون نصب هرگونه نرم افزار اضافی برای نرم افزارمون بتونه اتوماتیک پایگاه داده رو تشخیص بده. مثلا SQLite بهترینه یا چون محدودیت داره بهتر از این هم وجود داره
تشخیص بهترین، یه معیار نسبی هستش و بستگی به کاربردی داره که از اون نرم افزار انتظار میره. اون طوری که در طول تاپیک برداشت کردم، احتمالا حجم برای تو معیار اصلیه که در این صورت SQLite حجم به مراتب کم تری داره ولی خب این حجم کم هزینه هایی هم داره. مثلا در SQLite قابلیت stored procedure یا sp پشتیبانی نمیشه ولی نمی دونم sp برات مهمه یا نه. به عنوان یه مثال برای مدیریت bookmark ها، فایرفاکس از SQLite بهره می برد (شاید هم می بره) ولی برای یه نرم افزار انبار داری با چنده ده جدول حجیم SQLite کندی محسوسی نسبت به SQL Server خواهد داشت.