قبلاً در توسینسو ایجاد یک پایگاه داده SQL و همچنین جدول و رکورد های آن آموزش داده شده است اما در این مطلب بنده میخواهم این کار ها را از طریق خط فرمان CMD آن هم توسط دستو SQLCMD انجام دهم ، اگر SQL Management Studio روی سیستمتان نصب نیست شما میتوانید ازمحیط دوست داشتنی و پر کاربرد cmd و دستور sqlcmd کار های خود را پیش ببرید
اتصال به MS SQL Server از طریق sqlcmd
برای قدم اول باید command prompt رو باز کنیم در خدابیامرز Xp به Run رفته و دستور CMD را تایپ و اینتر میزدیم ، از اون خدابیامرز به بعد از منوی محبوب Start داخل کادر جستجو دستور cmd را تایپ کرده و دکمه Enter را بزنید. (البته این ساده ترین راه ممکنه بود)
وقتی وارد CMD شدیم از دستور sqlcmd جهت اتصال به SQL Server استفاده میکنیم این دستور چند سوئیچ دارد که در تصویر زیر به صورت جدولی مختصر آن را آماده کردم(تصویر زیر را ببینید)
در تصویر فوق مشاهده میشود که میتوان با چه سوئیچ هایی به سرور اتصال پیدا کنیم توضیحات بیشتر را در تصویر فوق و ادامه این مطلب خواهید دید ، همانطور که حتماً با SQL آشنا هستید برای اینکه به سرور مورد نظر بخواهیم وصل شویم باید نام آن را بدانیم به صورت پیشفرض خیلی ها از نام SQLEXPRESS استفاده میکنند ضمناً ممکن است شما برای ورورد به SQL نام کاربری و پسورد در نظر گرفته باشید در تصویر زیر شما توسط دستور SQLCMD به سرور SQLEXPRESS با یوزر اکانت sa و پسوردی که از قبل زدیم به سرور مورد نظر اتصال پیدا میکنیم
اما اگر SQL شما دارای یوزر و پسورد نیست و میخواهید از طریق ویندوز اعتبار سنجی صورت پذیرد همانند تصویر زیر کار کنید و مشاهده میکنید پس از دستور زیر با هیچ ارروری مواجه نمیشوید و میتوان ادامه کار را انجام داد که در همین مطلب به آن خواهیم پرداخت.
سوئیچ S– : ما توسط این سوئیچ میتوانیم به سرورمان متصل شویم و اگر از این سوئیچ استفاده نکنیم با خطا مواجه خواهیم شد در روبروی این سوئیچ باید نام یا IP سیستمی که سرور SQL در آن قرار دارد را تایین کنیم ، راه ساده تر این ماجرا این است که پس از تایپ سوئیچ مورد نظر بعد بعد از گذاشتن یک علامت نقطه کلمه SQLEXPRESS را تایپ کنید.
ایجاد Database توسط sqlcmd
میخواهیم توسط دستورات یک Database با نام DBAITPRO ایجاد کنیم سپس یک جدولبه نام WEB داخل آن ایجاد کرده و فیلد هایی را داخل ان به ثبت برسانیم
1> CREATE DATABASE DBAITPRO
با زدن دستور فوق اتوماتیک یک خط به پایین میآید و منتظر دریافت دستور دوم می ماند و دستور بعدی ما GO است که این بانک با این نام ساخته میشود و مجدد به خط اول میرود (تصویر را ببینید)
خب در ادامه میخواهیم به بانک مورد نظر توسط خود برنامه SQL برویم و ببینیم آیا دستور ما کار مورد نظر را انجام داده یا خیر برای این منظور SQL Server 2014 Management Studio را اجرا کرده و مطابق تصویر زیر پایگاه مورد نظر را Connect میکنیم:
همانطور که فلش ها نشان میدهند میبینیم پایگاه داده ما ایجاد شده و در table ما هیچ جدولی به ثبت نرسیده است میخواهیم توسط همان sqlcmd اقدام به ایجاد جدولی به نام web کنیم.
ایجاد جدول با استفاده از ابزار sqlcmd
برای ایجاد جدول WEB که شامل سه فیلد است بهتر است در ابتدا از ایجاد Database مطمئن شویم دستور زیر این کار را برای ما خواهد کرد:
اگر با پیغامی که در تصویر فوق مشاهده میکنید مواجه شدید این به دان معنا است که این Database ایجاد شده و آماده تغییرات است حال میخواهیم جدول WEB را ایجاد کنیم. دستور زیر را مینویسیم:
جدول ایجاد شده دارای4 ستون می باشد. ستون اول ID است، که آن را به عنوان کلید اصلی و از نوع int تعریف کرده ایم. دیگر ستون های آن به ترتیب عبارتند از NAME که اسم سایت است و DOMAINNAME که منظور من همان پسوند سایت هست مثلاً IR یا COM و ردیف بعدی country است که منظور کشور مورد نظر است البته این فقط مثالی است که خدمتتان گفتم پس از دستورات فوق که در تصویر دیدید جدولمان در SQL به صورت زیر ایجاد خواهد گردید.
اضافه کردن رکوردها توسط sqlcmd
اگر دقت کرده باشید id را از نوع identity وارد کردیم یعنی ID اتوماتیک به صورت یکی یکی خودش اضافه میشود و نیازی نیست ما عددی برای آن تعیین کنیم دستور زیر را وارد میکنیم و با خطایی روبرو خواهیم شد با هم این خطا را بررسی و سپس دستور صحیح را وارد میکنیم:
پس از تایپ دستورات فوق جهت ایجاد رکورد در جدول مورد نظرمان با خطای زیر مواجه میشویم و به همین خاطر رکورد های مورد نظر در جدولمان درج نمیشوند راه حل این است که یا فیلد ID را از حالت identity خارج کنیم یا در هنگام Value دادن به جدول از نام بردن ID خودداری کنیم و بگذاریم خودش پر شود.
Msg 544, Level 16, State 1, Server RIPI12160, Line 1 Cannot insert explicit value for identity column in table 'WEB' when SERT is set to OFF.
در تصویر زیر کد اصلی را قرار خواهم داد پس ID را از لیست حذف میکنیم و اصلاً به جای آن عددی قرار نمیدهیم تا خود SQL آن را به صورت Counter پر کند.
توسط دستور INSERT INTO ما میتوانیم چندین رکورد را به صورت یکجا وارد کنیم، همانطور که میبینید تمام رکوردها در داخل پرانتزی قرار گرفته شده و هر رکورد توسط کاما از رکورد دیگر جدا شده و اگر میخواهید رکورد ها ادامه پیدا کند در انتهای خط توسط علامت (,) ادامه کار را انجام دهید و در پایان توسط دستور GO به ثبت برسانید دقت کنید که کاما ها (')و علامت (,) را به دقت جایگذاری کنید تا با خطا مواجه نگردید ، پس از درج کد فوق عملیات با موفقیت به پایان میرسد و با پیغام (3 rows affected) پایان میپذیرد این پیغام نشان میدهد چند رکورد با موفقیت به ثبت رسیده است حالا نگاهی داریم به جدولمان در SQL Server تصویر زیر را نگاه کنید:
پرس و جوی رکوردها با استفاده از sqlcmd
یکی از دستورات ساده پرس و جو را در این مطلب به شما خواهم گفت ، برای اینکه کلیه فیلد های مربوط به ستون های id و name و domainname جدول web را به صورت یکجا نمایش دهد در sqlcmd می توانید از دستور SELECT مطابق تصوی زیر استفاده نمایید.
نحوه Attach کردن دیتا بیس Sql توسط دستور sqlcmd
راه حل های متفاوتی میتونه برای این کار داشته باشیم اما یکی از ساده ترین راه ها و متفاوت با صحبت هایی که در بالا داشتیم به این صورت است که (یک فایل NotePad باز کنید و پس از تایپ دستورات زیر آن را با پسوند Sql ذخیره کنید).
سپس یک BATCH FILE (یک فایل NOTEPAD را با پسوند BAT ذخیره کنید) ایجاد میکنیم و دستور زیر را داخل آن تایپ و با یک نامی به دلخواه ذخیره میکنیم سپس با اجرای فایل bat دیتابیس به Sql Server مورد نظر Attach میشود .
sqlcmd -S ServerName\InstanceName - i D:\ آدرس فایل
سلام چطور میتوان با cmd بکاپ sql servrer بازیابی کرد یاscript رو اجرا کرد؟
من وقتی که یه دونه بانک رو باز یابی می کنم نرم افزاری رو که با اون برنامه کار میکنه و برای خودش یه دونه یوزر درست کرده دیگه کار نمیکنه برای اینکه به اون بانک دیگه دسترسی نداره من هم باید برم دستی دسترسی رو براش فعال کنم یه راهکار میخوام که بتونم با خط فرمان این کارو بکنم
سلام
ممنون از آقای خانلری و سایت جالب itpro
خیلی عالی بود...
فقط نکته ای که باز من تاکید کنم ، حتما سوئیچ ها با حروف بزگ تایپ شوند ، نکته ای که من خودم درگیرش بودم.
خیلی تخصصی بود ...موفق باشید